сброс и инструкция «if»

#python #if-statement

#python #if-statement

Вопрос:

У меня возникли проблемы с сбросом и операцией if для захвата правильного ввода в команду:

Если вы выберете «2», если он снова спросит вас. Если вы ответите «L», это будет зафиксировано как допустимая команда, однако переменная «Letter» все равно будет сохранена как исходный ввод «2». Как мне сбросить первую команду, чтобы выполнить вторую?

 # Letters is captured in a list A-Z

def choose_letter(question):
    Letter = input('choose a letter:')
    if Letter not in Letters:
        print('Please choose a valid Letter. A-Z.')
        choose_letter(question)
    else:
        return Letter
 

Комментарии:

1. замените вызов на choose_letter(question) с return choose_letter(question)

Ответ №1:

Вы должны вернуться choose_letter , иначе рекурсивный вызов ничего не принесет.

 # Letters is captured in a list A-Z

def choose_letter(question):
        Letter = input('choose a letter:')
        if Letter not in Letters:
          print('Please choose a valid Letter. A-Z.')
          return choose_letter(question)
        else:
          return Letter
 

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

Комментарии:

1. любая причина, по которой это будет работать в python tutor, но не работает в repl.it ? Это работает в моем симуляторе в python tutor, но все равно выдает ошибку в repl.it

2. Или буквы могут быть строкой