使用while循环进行迭代-python

使用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

当我为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 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放入函数中。我做了相应的修改。