«Пока» меню не работает - PullRequest
0 голосов
/ 03 февраля 2012

Это меню не работает, и я не могу найти причину, потому что я не получаю никаких ошибок, но это все еще не желаемое возвращаемое значение.

Я думаю, что проблема где-то в цикле 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 ]

4 голосов
/ 03 февраля 2012

Для начала вы можете заменить свои 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'
... 
>>>

Надеюсь, это поможет.

0 голосов
/ 04 февраля 2012
if (a = 3) or (1 != 0): 

имеет то же значение, что и

if (a = 3) or (1):

это то же значение, что и

    if (a = 3) or 1: 

то чем всегда верно Вы должны написать

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

чтобы ваше меню работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...