'虽然'基于菜单不起作用

时间:2012-02-03 18:01:01

标签: python menu while-loop

此菜单无效,我找不到原因,因为我没有收到任何错误,但它仍然不是所需的返回值。

我认为问题出现在while循环中:

def mainMenu():
    """ Main menu for the aplication"""
    mainMenuPrint()

    def m():
        inp=''
        while inp!='q':
            inp = str(input('enter option: '))      
            print'aaa'     #test 
            if inp == '1' or 'game': gameMenu()
            elif inp == 'admin' or 'administration' or '2': adminMenu()
            elif inp == 'quit' or '0': inp ='q' 
            else:
                print 'wrong input!'
            print 'bbb' #test
    m()

mainMenuPrint()只是一个字符串打印

PYTHON 2.7

正如我所说我没有错误,但没有任何输入有效,它会不断弹出'输入选项'

2 个答案:

答案 0 :(得分:4)

对于初学者,您可能希望用if inp == 'something' or 'someotherthing' or 'athridthing'替换if inp in ('something', 'someotherthing', 'athirdthing')惯用语,因为or只测试例如'someotherthing'的真值。 True而不是挂钩相等测试,从而评估您对>>> a = '2' >>> if a == '1' or '2': print 'hey' ... hey >>> a = 'c' >>> if a == '1' or '2': print 'hey' ... hey 的任何测试。

示例:

a

如您所见,即使if被分配的字符串与您编写的True条件中测试的字符串不同,也会将条件评估为>>> a = '2' >>> if a in ('1', '2'): print 'hey' ... hey >>> a = 'c' >>> if a in ('1', '2'): print 'hey' ... >>>

恰恰相反:

{{1}}

希望这开始有所帮助。

答案 1 :(得分:0)

if (a = 3) or (1 != 0): 

具有与

相同的含义
if (a = 3) or (1):

的含义相同
    if (a = 3) or 1: 

总是如此 你应该写

if inp == '1' or inp == 'game': gameMenu()

让你的菜单有效。