【发布时间】:2021-10-16 06:58:55
【问题描述】:
我正在尝试学习如何进行用户输入验证并以这篇文章为基础 How to return a specific point after an error in 'while' loop
我认为问题在于根据答案列表评估 current_answer 时。无论我输入什么数字,'else' 语句都会生效。
def input_validator(question, answers):
while True:
current_answer = input(question)
if current_answer in answers:
print('Success')
break
print ('Failure')
return current_answer
inputQuarter = input_validator('What quarter is being processed (1,2,3,4)?: ', [1,2,3,4] )
我假设问题在于我不理解打破 for 循环的问题,因为 if/else 语句似乎在循环之外工作正常。
【问题讨论】:
-
请修正缩进。
-
input()返回一个字符串,answers包含数字。因此,要么将输入转换为数字,要么将answers更改为字符串列表。 -
你是在比较一个字符串和一个整数吗?在比较之前尝试将所有转换为字符串。
-
@JohnMee 这不是我说的吗?
-
如果您认为
if语句不起作用,那几乎可以肯定是因为您的条件写得不正确。
标签: python while-loop