提问人:thai_green_curry 提问时间:6/7/2023 最后编辑:thai_green_curry 更新时间:6/7/2023 访问量:41
用户输入验证未正确验证,对我可能做错了什么有什么建议?
User input validation not validating correctly, any suggestions for what I may be doing wrong?
问:
我正在尝试使用 while 循环验证用户的输入,以便只接受整数和大于 8 的数字。我目前的代码在输入字符串并打印正确的输出时正常运行。
但是,我遇到的问题是,当用户输入小于 8 的整数时,它会显示我想要的“输入不正确”消息,但当它提示用户输入另一个输入时。当我重新输入大于 8 的整数时,当我希望它中断到下一个提示时,它仍然会打印“输入不正确”。有人认为我可能做错了吗?我不被允许为这个特定的赋值定义一个函数。
Number_List = []
while (True):
try:
Number_List.extend(map(int, input("Enter the length, width, and height of the room: ").split()))
except ValueError:
print("\nIncorrect Input. \nPlease try again. \n")
continue
if (Number_List[0] < 8) or (Number_List[1] < 8) or (Number_List[2] < 8):
print("\nIncorrect Input. \nPlease try again. \n")
continue
else:
break
答:
这是因为您正在扩展您的列表。因此,当您输入新输入时,数字将添加到 的末尾。Number_List
因此,始终保持不变。Number_List[0]
Number_List[1]
Number_List[2]
为了更好地理解,我建议您在例外之前打印。Number_List
要使其正常工作,您可以简单地将相应的行替换为:
Number_List = list((map(int, input("Enter the length, width, and height of the room: ").split())))
有了它,您每次都会创建一个新列表。
希望它有所帮助。
这可能无法提供答案。只是为了通过将您的代码粘贴到 python tutor 来分享我的观察结果。
因此,首先,您最初的目标是:使用 while 循环验证用户的输入,以便只接受整数和大于 8 的数字
我通过尝试不同的输入组合对您的代码进行了一些实验。
案例 1:输入 ➡️ 10 8 9
代码工作得很好。
案例 2:我尝试添加一个小于 8 的数字来触发“ValueError” 输入 ➡️ 8 6 14
然后它确实触发了“输入不正确。 请再试一次“,没问题,然后出现输入框,建议输入新的输入集。
现在,问题来了:您创建的列表“Number_List = []”仍然有那些不正确的输入,所以即使你输入了新的输入,列表也会越来越大,没有任何清理机制,不正确的输入仍然会在列表中。
希望这能激发您修复代码。干杯
评论