Python ';而';基于菜单的菜单不';行不通

Python ';而';基于菜单的菜单不';行不通,python,menu,while-loop,Python,Menu,While Loop,此菜单不工作,我找不到原因,因为我没有得到任何错误,但它仍然不是所需的返回值 我认为问题出在while循环的某个地方: def mainMenu(): """ Main menu for the aplication""" mainMenuPrint() def m(): inp='' while inp!='q': inp = str(input('enter option: '))

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

我认为问题出在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


正如我所说的,我没有收到任何错误,但是输入都不起作用,它会不断弹出“回车”选项作为初学者,如果inp=='something'或'sometotherthing'或'athridthing',你可能想用
习惯用法替换
如果inp in('something','sometherthing','athridthing'))
因为
只是测试“其他事物”的真值,而不是挂接相等测试,从而评估任何测试是否为

例如:

>>> a = '2'
>>> if a == '1' or '2': print 'hey'
... 
hey
>>> a = 'c'
>>> if a == '1' or '2': print 'hey'
... 
hey
如您所见,即使为
a
分配了与
中测试的字符串不同的字符串,如果在编写您的条件时写入了
条件,则该条件的计算结果为
True

相反:

>>> a = '2'
>>> if a in ('1', '2'): print 'hey'
... 
hey
>>> a = 'c'
>>> if a in ('1', '2'): print 'hey'
... 
>>>
希望这开始有所帮助

if (a = 3) or (1 != 0): 
与…的意思相同

if (a = 3) or (1):
    if (a = 3) or 1: 
这与

if (a = 3) or (1):
    if (a = 3) or 1: 
事实并非总是如此 你应该写

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

让你的菜单正常工作。

哪个输入不能正常工作?@kindall:如果他像他说的那样“没有任何错误”,那应该是Python 2。那么当他键入
q
时,我预计会出现错误,因为他使用的是
input()
而不是
raw\u input()
。。。我想他使用的是哪一个并不重要,因为这两个都不会运行,但是如果知道需要修复什么就好了。您是否在代码中的某个点调用
main menu()
?您得到的“非期望输出”是多少?+1。需要注意的关键是
如果a=='1'或'2'
如果a=='1'或a=='2'
@Giulio感谢你花时间,你说得很清楚chepner谢谢,这就是问题所在。。。。