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
语句中。