按命令返回菜单?蟒蛇

时间:2011-04-02 19:53:01

标签: python loops menu callback

我知道我的所有问题都很简单,但我是初学者,所以这里...... 在每个人的帮助下,我一直在开发猜测数字的东西,但我想回到刚刚离开的菜单。这是代码:

import time
import random
animalmenu()

def animalmenu():
    print()
    print()
    print()
    print()
    print('Welcome to the menu. I am thinking of a menu. Select the option\'s below to       try and guess my animal.')
    print()
    print('a) No. of Legs')
    print('b) Type of animal')
    print('c) Preffered Climate')
    print('d) Size')
    print('e) Colour')
    print('f) Diet')
    print('g) Habitat')
    print('h) Can be kept as pet')
    print('i) Guess animal')
    print()
    print('When in a menu, type in \'555\' to return here')
    AniChoice = input('Choose your option: ')
    if AniChoice == 'a':
        loop = 10
        while loop == 10:
            print()
            print('')
            print()
            guessleg = int(input('Guess the number of legs: '))
            if leg == guessleg:
                print('True')
            elif leg != guessleg:
                print('False')
             print('r = Return to menu, g = guess again.')
             rg = input()
             if rg == 'g':
                 print('Loading...')
             elif rg == 'r':
                 loop = 0
                 time.sleep(1)
                 print('Returning to menu...')
                 time.sleep(1)
                 animalmenu()

每当我运行它时,我输入一个数字作为代码询问但是然后,而不是询问我是否要返回菜单它只是一次又一次地问这个问题,'猜猜腿的数量:'。我知道这与我的循环方法有关但我不明白,因为整数设置我不能再做另一个如果,就像这样:

            guessleg = int(input('Guess the number of legs: '))
            if leg == guessleg:
                print('True')
            elif leg != guessleg:
                print('False')
            elif guessleg == 'back':
                    loop = 0                    
                animalmenu()

我没有看到任何其他方式这样做,因为似乎两种方式都没有效果?你会怎么建议回到动物主义()?

2 个答案:

答案 0 :(得分:0)

因为您将输入转换为整数并将其存储到guessleg,这意味着guessleg也是一个整数。但是,'back'是一个字符串。您无法将字符串与整数进行比较。 3 == 'back'没有任何意义。 和语法错误可能因为你的缩进。

更新:

如果您想返回顶层菜单,可以执行以下操作:

def animalmenu():
  while True:
    print your menu here
    and do something....
    while ...:
      get input and do something...
      if get the input of 'back to menu':
        break

再次更新:

我认为你不会在这里使用input(),而是尝试使用readline()或raw_input()。

答案 1 :(得分:0)

正如消息告诉你的那样,'back'不是一个整数,而是你将它与一个整数值进行比较。具体来说,你的行:

guessleg = int(input('Guess the number of legs: '))

从用户的输入中将一个整数值放入guessleg(或更正确地尝试)。

解决此问题的一种方法是在字符串变量中捕获用户的输入,首先将该字符串与'back'进行比较,然后根据需要转换为整数。

另一种方法是在整数转换周围包装try / except,如果转换成功则继续进行整数检查,如果遇到异常,则检查“back”。这些可能是我最喜欢的,我把它放到代码中:

inp_val = raw_input('Guess the number of legs: ')
try:
    guess_num = int(inp_val)
    if guess_num == leg:
        print('True')
    else:
        print('False')
except ValueError:
    if inp_val == 'back':
        loop = 0
    else:
        print 'Invalid entry'
    animalmenu()