用户输入程序不起作用," !="?

时间:2015-02-09 00:09:20

标签: python

只是搞乱Python 3的功能和用户输入,但真的在这里摸不着为什么!=赢了工作?如果用户输入YES或是,则仍会生成消息"无效答案。是或否!"?

由于

def program():
    valid_answers = ("YES", "yes", "NO", "no")
    variable_input = input("Are bananas yellow? Answer YES or NO: ")

    if variable_input != valid_answers:
        print("Invalid answer. YES or NO only!")
        program()

    elif variable_input == "YES":
        print("Correct! They are!")
        program()
    elif variable_input == "yes":
        print("Correct! They are!")
        program()
    elif variable_input == "NO":
        print("Try again. They are definitely yellow.")
        program()
    elif variable_input == "no":
        print("Try again. They are definitely yellow.")
        program()
program()

3 个答案:

答案 0 :(得分:2)

首先,我会将valid_answers列入清单。 !=表示不等于或等同于。而不是!=,你not in。你应该写这样的代码:

def program():
    valid_answers = ["YES", "yes", "NO", "no"] # Note the change from tuple to list
    variable_input = input("Are bananas yellow? Answer YES or NO: ")

    if variable_input not in valid_answers: # Note the != to not in
        # do something

    # rest of your code

回应评论......

对于input中的多个选项,您可以使用元组并“扫描”它以查看元组中是否存在variable_input,然后执行如下操作:

elif variable_input == ("yes", "YES"):
    # do something

现在,如果我没记错的话,在Python 3中你也可以使用or运算符而不是元组。 :)

答案 1 :(得分:1)

您正在检查variable_input字面上是否与元组不相等。您想检查variable_input是否为not in元组。

if variable_input != valid_answers:

应该是:

if variable_input not in valid_answers:

答案 2 :(得分:1)

更正:

if variable_input != valid_answers:应为if variable_input not in valid_answers:

你可以像这样减少if语句:

最终计划

def program():
    valid_answers = ("YES", "yes", "NO", "no")
    variable_input = input("Are bananas yellow? Answer YES or NO: ")

    if variable_input not in valid_answers:
        print("Invalid answer. YES or NO only!")
        program()
    elif variable_input in ["YES", "yes"]: 
        print("Correct! They are!")
        program()
    elif variable_input in ["NO", "no"]:
        print("Try again. They are definitely yellow.")
        program()

program()