python - 如何检测无效输入并将用户置于循环中,直到输入可接受的答案?
问题描述
我试图弄清楚如何让用户输入字母并将数字仅作为无效输入返回。
这是我的代码,我仍然不清楚 ValueError ,就好像我运行代码并输入字母一样,它会作为无效输入出现,但如果我输入数字,它会作为有效输入出现。
while True:
try:
name = int(input("What is your name? "))
except ValueError:
print("Invalid response. Letters only please.")
continue
else:
break
correctName = input("Your name is...'" + (name) + "', is this correct? \n Please use 'Y' as yes and 'N' as no.\n")
if correctName == "Y":
print("Thank you..!")
解决方案
int(input())
会期望一个整数作为输入,所以当你输入你的名字时(除非你的名字完全由数字组成),你会得到ValueError
你现在正在经历的。相反,您可以使用str(input())
获取用户输入,然后使用该str.isdigit()
方法检查它是否为数字。
name = str(input("What is your name? "))
if name.isdigit():
print("Invalid response. Letters only please.")
continue
else:
break
推荐阅读
- typescript - 装饰器可以更改方法的签名吗?
- ios - 如何使用 NSPredicate 在 Swift 5 中使用 CoreData 搜索关系属性的 ObjectID?
- sql-server - SQL Server 管理工作室调试器错误
- php - 通过 AJAX 将 url 字符串发送到 PHP
- django - 空查询返回数据库中的所有字段。姜戈
- oracle - 更新表时如何在oracle上转义破折号
- html - Ajax 成功:函数():''我声明但它的值从未被读取
- azure - Databricks Notebook - Microsoft Azure - 附加到集群时自动完成功能不起作用
- sql - 标准 SQL:根据结果重置总和
- c# - 将多个索引属性从 C# 导出到 tlb --> delphi