使用while循环进行迭代-python
当我为exmaple选择1时,代码“Dosomething”,但它不会再次重复菜单。相反,它显示“1”。为什么?我该如何解决这个问题使用while循环进行迭代-python,python,Python,当我为exmaple选择1时,代码“Dosomething”,但它不会再次重复菜单。相反,它显示“1”。为什么?我该如何解决这个问题 menu = input('1. \n 2. \n') choice = input(menu) while choice in ['1', '2']: print(input(menu)) if choice == 1: #do something elif choice == 2: #do somethi
menu = input('1. \n 2. \n')
choice = input(menu)
while choice in ['1', '2']:
print(input(menu))
if choice == 1:
#do something
elif choice == 2:
#do something
else:
break
将菜单放入循环中,并将字符串更改为int,如下所示:
menu = 'Type 1 or 2: '
choice = input(menu)
while choice in [1, 2]:
if choice == 1: print 11111
elif choice == 2: print 22222
choice = input(menu)
def take_input():
menu = input('1. \n 2. \n')
return menu
menu = take_input()
while menu in ['1', '2']:
if menu == '1':
#do something
menu = take_input()
elif menu == '2':
#do something
menu = take_input()
else:
break
您正在将
string
与int
您的选择是
type int
,作为输入默认值,采用string
演示: 试着这样做:
menu = 'Type 1 or 2: '
choice = input(menu)
while choice in [1, 2]:
if choice == 1: print 11111
elif choice == 2: print 22222
choice = input(menu)
def take_input():
menu = input('1. \n 2. \n')
return menu
menu = take_input()
while menu in ['1', '2']:
if menu == '1':
#do something
menu = take_input()
elif menu == '2':
#do something
menu = take_input()
else:
break
您可以在['1'、'2']菜单中删除不需要的
while True:
menu= take_input()
if menu == '1':
#do something
menu= take_input()
elif menu=='2':
#do something
menu= take_input()
else:break
好了。我不知道你为什么要这样做
choice=input(menu)
我替换了它。我已经放置了break
来停止执行,因为它将进入无限循环。您希望它变为无穷大,然后删除中断
。而且中的其他
部分将永远不会执行,因为您正在检查选项
是“1”还是“2”
在['1','2']中有选项:…
如果该条件为True
,选项必须是字符串。但是,在循环体内部,您正在比较choice==1
,该循环将choice与整数进行比较,因此它永远不会执行…最好使用raw\u input
而不是input
。因此,您应该使用int(原始输入(此处的某物))
。多个问题:*您到处调用input,让menu成为字符串,然后在需要输入时调用menu()。在while语句中,您将输入与字符串进行比较,但输入在输入上运行eval,以便获得int打印(输入(菜单))
-WTF?这似乎是毫无意义的…OP只想中断输入
不是1或2,但每次我都需要显示菜单。例如,如果用户输入1,则程序将执行某些操作,然后它将再次显示菜单。@Hackaholic如果输入不是1或2,则in甚至不会输入,而循环。如果它是1或2,那么它将进入无限循环,所以我将break
@GameDesigner放入函数中。我做了相应的修改。