用while循环迭代 - python

时间:2014-11-05 06:18:11

标签: python

例如,当我选择1时,代码“执行某些操作”但是它不会再次重复菜单。相反,它显示“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

3 个答案:

答案 0 :(得分:0)

您正在将stringint进行比较 您的选择为type int,输入默认值为string

演示:

>>>'1' == 1
False

尝试这样:

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

您可以删除不需要的while menu in ['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

答案 1 :(得分:0)

你去吧。我不确定你为什么这样做choice = input(menu)我取而代之。我已经放break来停止执行,因为它会进入无限循环。您希望它变为无限,然后删除breakelse内的while部分也永远不会被执行,因为您正在检查choice是否为“1”或“2”。

def display_menu():
    menu = input('1. \n 2. \n')
    return str(menu)

def get_choice():
    choice = display_menu()
    while choice in ['1', '2']:
        if choice == "1":
           print "inside if condition"
           get_choice()

        elif choice == "2":
           print "inside elif condition"
          #do something
           get_choice()
        else:
           print "inside else condtion"
           break

get_choice()

答案 2 :(得分:-1)

将菜单放在循环中,并将字符串更改为整数,如下所示:

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)