分享
三行代码  ›  专栏  ›  技术社区  ›  jeffthechicken Ade_1

为什么我的if-elif-else语句总是返回相同的答案?

  •  0
  • jeffthechicken Ade_1  · 技术社区  · 6 天前

    背景:

    代码:

    while True:
        userinput = input("Is nem jeff? ")
        if userinput == "y" or "yes" or "Y" or "Yes":
            print ("YAY!")
        elif userinput == "n" or "no" or "N" or "No":
            print ("das sad :(")
        else:
            print ("wrong input")
            break
    

    问题:

    我的程序应该一直循环,直到用户输入无效的输入,但是不管我输入什么,它总是返回if语句中嵌套的值。我做错什么了?

    2 回复  |  直到 6 天前
        1
  •  4
  •   larsks    6 天前

    你的条件句没有按你想的那样做。

    在Python中,非零长度字符串的计算结果为 True 在布尔值中 上下文。这个 or 运算符执行布尔运算 之间的操作

    if userinput == "y" or "yes" or "Y" or "Yes":
    

    你的意思是:

    if (userinput == "y") or True or True or True:
    

    总是 评估为真。你想改为写:

    if userinput == "y" or userinput == "yes" or userinput == "Y" or userinput == "Yes":
    

    if userinput.lower() in ['y', 'yes']:
    
        2
  •  0
  •   jeffthechicken Ade_1    6 天前

    尝试这样做:

    while True:
        userinput = input("Is nem jeff? ").lower()
        if userinput in ['yes','y']:
            print ("YAY!")
        elif userinput in ['no','n']:
            print ("das sad :(")
        else:
            print ("wrong input")
            break