Python while循环不断重复

时间:2015-03-17 13:46:14

标签: python

我正在尝试使用我创建的这个程序,我希望程序不要重复这个选项很多次这里是程序:

 # A Program to show how to use a menu
 menu=int(input("What would you like? \n\
 1. A compliment \n\
 2. An insult \n\
 3. A proverb \n")) 
 y=True
 while y==True:
     if menu==1: #compliment
           print ("You look nice today")
     elif menu==2: #insult
           print("You smell")
     elif menu==3: #proverb
           print("A bird in the hand is worth two in the bush!")
     else:
          y==False
          print("Invalid option")
          break

当我输入示例2的选项时,程序会重复 你闻到了 你闻到了 你闻到了 你闻到了 你闻到了 无限次。

2 个答案:

答案 0 :(得分:0)

您的while循环永远不会结束。你在最后的'else'下休息一下,但你假设你的变量menu实际上会被修改。你不应该在响应上循环,而是总体而言:

y=True
while y==True:
    menu=int(input("What would you like? \n\
    1. A compliment \n\
    2. An insult \n\
    3. A proverb \n")) 

    if menu==1: #compliment
       print ("You look nice today")
    elif menu==2: #insult
       print("You smell")
    elif menu==3: #proverb
       print("A bird in the hand is worth two in the bush!")
    else:
       print("Invalid option ")
       y = False

以上操作将一直运行,直到输入无效选项,然后循环将中断。您的原始代码永远不会破坏,因为永远不能修改y。您的y==False是一个比较操作,而不是一个赋值操作。但是,STILL永远不会被击中,因为你不会在循环中要求额外的输入,因此它将永远保持TRUE

答案 1 :(得分:0)

你有2个问题。正如@Arrjun Ram所说,当你需要y==False

时,你有y=False

您遇到的另一个问题是,您对input的调用超出了while循环。这意味着菜单的值永远不会改变。您需要将其移动到while循环的内部。

你也可以添加一个选项,比如4,退出循环。