即使满足条件,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 是一个字符串。

您可以通过两种方式解决此问题:

  1. list 设为字符串的 list:
inputQuarter = input_validator('What quarter is being processed (1,2,3,4)?: ', ["1","2","3","4"] )
  1. current_answer设为整数:
current_answer = int(input(question))

我个人更喜欢第一个,因为它也适用于更复杂的答案(只知道它区分大小写!)。