python-3.x - 使用 while 循环在 Python 中测试和接受用户输入
问题描述
我究竟做错了什么?
valid = set(["Mon","Tue","Wed","Thu","Fri","Sat","Sun","All"])
value = input("Enter the day of interest or all for all days. Valid Values are Mon,Tue,Wed,Thu,Fri,Sat,Sun,All: ")
count = 0
while count <= 3:
if value in valid:
print("Awesome!! You chose {}".format(value.title()))
break
else:
count += 1
pass
print("Try Again")
else:
print("Too many errors. Read the instructions and come back again when ready!! :-| ")
exit()
因此,如果我输入一个有效值但如果我测试集合之外的值,则此方法有效,if 循环中的 else('Try Again')执行 3 次(设置计数器,然后跳转到 while 循环的 else。
我希望输入框再次出现并一直持续到: 1. 用户在 3 次尝试中输入了正确的值 2. 收到一条消息并退出程序,将它们返回到命令提示符。
提前致谢。做一个教程项目并完全坚持这一点。我应该使用 try/except 吗?如果是这样,我仍然可以设置计数器吗?
解决方案
您需要允许用户再次输入输入。将输入输入行放在重试部分下方。
print("Try Again")
value = input("Enter the day of interest or all for all days. Valid Values are Mon,Tue,Wed,Thu,Fri,Sat,Sun,All: ")
您也不需要该pass
声明。
请注意,您从 0 开始计数,这实际上给了用户 4 次机会,而不是 3 次。(以 开头count=1
)
推荐阅读
- python - Maskrcnn : add_loss() 引发 ValueError
- node.js - 哟 @microsoft/sharepoint 将重新运行此错误“TypeError:lookups.flatMap 不是函数”
- flutter - Dart - 使用 .exe 通过控制台获取命令行参数
- c++ - C++ WinRT32 应用程序上的 WinToast 显示奇怪的错误
- unit-testing - Dart 单元测试给出不一致的结果
- terraform - 使用 for_each 从实例中检索 IP 地址
- maven - Maven Junit 5,Cucumber 未运行测试
- hive - 在 impala 中将文件从一个表传输到另一个表
- sql - 计算日期之间的事件,但日期基于变量“第一个事件”滚动
- java - java - 如何将日期分配给Java中的临时日期字段?