false, если операторы вызываются / переменная не присваивается? - PullRequest
0 голосов
/ 30 июня 2018

Я не был слишком уверен, как назвать этот пост.

В любом случае, я пытаюсь назначить 'diff' для пользовательского ввода, и если 'diff' не является средним или расширенным, вызовите функцию, чтобы пользователь мог (надеюсь) ввести среднее или расширенное значение.

Однако, что бы я ни вводил, функция всегда будет вызывать функцию, даже если ввод «средний» или «расширенный».

Код -

def choices():
    global diff
    diff = input("Choose a difficulty: Average/Advanced ")
    diff = diff.lower()
    x = 0
    while x > 1:
        if diff == 'average':
            print('Difficulty set to average.')
            x = x + 1
        elif diff == 'advanced':
            print('Difficulty set to advanced.')
            x = x + 1

    if diff != 'average' or 'advanced':
        print('Your input is invalid. Please try again.')
        choices()

choices()

То же самое происходит и с другим моим решением, похожим на это, но я подумал, что нет смысла его откладывать, если оно следует той же логике.

Извините, если это глупый вопрос. Я только начинающий.

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Ваша первая ошибка заключается в этом утверждении:

while x > 1:

Вы никогда не будете выполнять код в этом цикле, потому что вы установили x = 0 в верхней части функции. Когда он попадает в цикл while, x = 0, поэтому цикл while будет полностью пропущен.

Существует ряд других проблем, но именно эта препятствует запуску логики «если».

Я настолько озадачен этой функцией, что не могу точно определить, что вы пытаетесь сделать, поэтому я не могу предоставить полное рабочее решение вашей проблемы, только первая довольно большая ошибка в ней.

0 голосов
/ 01 июля 2018

Вы также можете заключить все это в цикл while, я новичок в python, но порождение рекурсивных экземпляров функции кажется мне опасным.

def choices():
    global diff
    while true:
        diff = input("Choose a difficulty: Average/Advanced ")
        diff = diff.lower()

        if diff == 'average':
            print('Difficulty set to average.')
            return
        if diff == 'advanced':
            print('Difficulty set to advanced.')
            return
        print('Your input is invalid. Please try again.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...