Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python While循环不断重复_Python - Fatal编程技术网

Python While循环不断重复

Python While循环不断重复,python,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

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

 # 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的选项时,程序会重复 你闻到了吗 你闻到了吗 你闻到了吗 你闻到了吗 你闻到了吗
无限次。

你的
,而
循环永远不会结束。您在最后的“else”下有一个休息时间,但您假设您的变量
菜单
实际上将被修改。您不应该在响应上循环,而是整体上循环:

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
是一个比较操作,而不是赋值操作。但是,这仍然不会被击中,因为您没有在循环中要求额外的输入,所以它将永远保持
为TRUE

您有两个问题。正如@Arrjun Ram提到的,当您需要
y=False

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


您还可以添加一个选项,例如4,以退出循环。

'y==False'!='y=False'
…您的条件永远不会变为False。如果您想让它中断,可以A)输入中断语句或B)添加
y=False
以停止while语句。我对选项A不太肯定,因为python不支持
if
语句中的
break
,但它可能(可能)工作,因为它在
while
语句中。