вызов функции внутри другой - PullRequest
0 голосов
/ 22 октября 2019

Я учусь кодировать и пытаюсь научиться использовать функции все больше и больше. У меня есть 3 разные функции, и я не продвинулся далеко вперед с функцией user_menu () , так как застрял с последним фрагментом кода в операторе / конструкции if.

times_table () Функция повторяется независимо от того, что я делаю или какой код добавляю. Он остается в последней строке оператора if в функции user_menu () . Что я могу сделать, чтобы исправить это?

Я также хотел бы добавить функцию times_table2 () к функции user_menu () прямо под функцией times_table () .

Я также хотел бы попросить рекомендации о том, как объединить две функции times_table () в одну функцию, сохраняя при этом функциональность. Я не сталкивался с примером в Интернете или в книге, и очень расстраивает, если быть очень честным.

Буду признателен за некоторую информацию и, возможно, за некоторые веб-сайты для получения дополнительных ресурсов.

С уважением и заранее спасибо.

def user_menu():
    options = ["1. Would you like to learn to multiply two numbers of your choice?",
               "2. Would you like to learn to multiply a number in a table?"]
    print(*options, sep="\n")

    user_input = int(input("Please select from the list above: "))
    if user_input == 1:
        times_table(multiple="Please enter the number you wish to learn to multiply with")





def times_table(multiple):
    while True:
        multiple_text = input(multiple)
        try:
            multiple_int = int(multiple_text)
        except ValueError:
            print("Please enter a numerical value!")
            continue
            return multiple_int
def times_table2(multiple):
    while True:
        multiple_text = input(multiple)
        try:
            multiple_int = int(multiple_text)
        except ValueError:
            print("Please enter a numerical value!")
            continue
            return multiple_int

1 Ответ

0 голосов
/ 23 октября 2019

Вы должны использовать return после получения правильного значения

def times_table(multiple):
    while True:
        multiple_text = input(multiple)
        try:
            multiple_int = int(multiple_text)
            return multiple_int
        except ValueError:
            print("Please enter a numerical value!")

В конечном итоге использовать break для существования while цикла, а затем использовать return

def times_table(multiple):
    while True:
        multiple_text = input(multiple)
        try:
            multiple_int = int(multiple_text)
            break # exit loop
        except ValueError:
            print("Please enter a numerical value!")

    # after `while` loop
    return multiple_int

РЕДАКТИРОВАТЬ: Как я уже сказал в комментарии, вы можете сделать это по-другому. Если вам действительно нужно использовать continue, сделайте так, как предложил @Kevin

def times_table(multiple):
    while True:
        multiple_text = input(multiple)
        try:
            multiple_int = int(multiple_text)
        except ValueError:
            print("Please enter a numerical value!")
            continue

        # inside `while` but not in `except`
        return multiple_int

Во второй версии вы также можете использовать переменную True/False вместо break

def times_table(multiple):
    repeat = True
    while repeat:
        multiple_text = input(multiple)
        try:
            multiple_int = int(multiple_text)
            repeat = False # exit loop
        except ValueError:
            print("Please enter a numerical value!")

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