即使满足条件,If 语句也未评估为 True
If statement is not evaluating as True even when condition is met
我正在尝试学习如何进行用户输入验证并以此为基础 post
我认为问题出在根据答案列表评估 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 语句似乎在循环之外工作正常。
当你在这里调用函数时:
inputQuarter = input_validator('What quarter is being processed (1,2,3,4)?: ', [1,2,3,4] )
然后 answers
将保存一个 list
值:[1,2,3,4]
,即 4 个整数。
当您像这样调用函数 input()
时:
current_answer = input(question)
无论用户给你的输入是什么,它永远不会被评估为True
这里:
if current_answer in answers:
因为 answers
持有整数列表和 input()
returns 一个 string
。因此 current_answer
是一个字符串。
您可以通过两种方式解决此问题:
- 将
list
设为字符串的 list
:
inputQuarter = input_validator('What quarter is being processed (1,2,3,4)?: ', ["1","2","3","4"] )
- 将
current_answer
设为整数:
current_answer = int(input(question))
我个人更喜欢第一个,因为它也适用于更复杂的答案(只知道它区分大小写!)。
我正在尝试学习如何进行用户输入验证并以此为基础 post
我认为问题出在根据答案列表评估 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 语句似乎在循环之外工作正常。
当你在这里调用函数时:
inputQuarter = input_validator('What quarter is being processed (1,2,3,4)?: ', [1,2,3,4] )
然后 answers
将保存一个 list
值:[1,2,3,4]
,即 4 个整数。
当您像这样调用函数 input()
时:
current_answer = input(question)
无论用户给你的输入是什么,它永远不会被评估为True
这里:
if current_answer in answers:
因为 answers
持有整数列表和 input()
returns 一个 string
。因此 current_answer
是一个字符串。
您可以通过两种方式解决此问题:
- 将
list
设为字符串的list
:
inputQuarter = input_validator('What quarter is being processed (1,2,3,4)?: ', ["1","2","3","4"] )
- 将
current_answer
设为整数:
current_answer = int(input(question))
我个人更喜欢第一个,因为它也适用于更复杂的答案(只知道它区分大小写!)。