【问题标题】:Why won't the while loop continue and stop after a user question? [duplicate]为什么 while 循环不会在用户提问后继续并停止? [复制]
【发布时间】:2020-05-16 21:21:48
【问题描述】:
questionnumber=0
color=("Red")
userask=input("What color of the rainbow am I thinking of? ")
color = userask

if color == "Red":
    print("CORRECT")
else:
    print("INCORRECT")
    questionnumber = questionnumber+1
    #print(questionnumber)

while color != "Red":
    userask=input("What color of the rainbow am I thinking of? ")
    color = userask

    if color == "Red":
        print("CORRECT")
    else:
        print("INCORRECT")
        questionnumber = questionnumber+1
        #print (questionnumber)

    if questionnumber>3:
        quitter=input("Do you want to quit? ")
        if quitter == "yes"or"Yes":
            break
        else:
            continue

所以想法是你必须猜测正确的颜色,在这种情况下是红色。但是在尝试了 3 次之后,程序会询问用户是否要退出;如果是,则 while 循环停止,如果否,则 while 循环继续进行另外 3 次尝试。无论用户的回答如何,我似乎都无法弄清楚为什么循环会结束。

【问题讨论】:

    标签: python input while-loop


    【解决方案1】:

    你的问题是:

    if quitter == "yes"or"Yes"
    

    是基于对 Python 逻辑语句的误解。

    它并没有像您预期的那样被解释为if quitter == ("yes"or"Yes"),但它实际上被解释为:

    if (quitter == "yes") or ("Yes")
    

    任何非空字符串的计算结果为 True,因此始终执行 break

    更好的写法是:

    if quitter.lower() == "yes":
    

    这会将quitter 的内容转换为小写并对其进行检查,因此您无需检查大小写以及“YES”等其他变体。

    【讨论】:

      【解决方案2】:

      请将此语句更改为:

      if ((quitter == "yes") or (quitter == "Yes")):
      

      【讨论】:

        【解决方案3】:

        提示用户是否退出后,将if语句改为

        if quitter == "yes" or quitter == "Yes":
                    break
                else:
                    continue
        

        程序退出的原因是它自己将字符串'Yes' 评估为True,这意味着or 语句评估为True,因此运行break。您必须在 or 语句之前和之后都指定退出者。

        truth_val = bool('Yes')
        print(truth_val)
        >>>True
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-16
          • 1970-01-01
          • 1970-01-01
          • 2016-01-19
          • 1970-01-01
          • 2016-08-22
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多