在另一个函数中调用函数

时间:2019-10-22 19:49:08

标签: python python-3.x function

我正在学习编码,并试图越来越多地使用函数。我在这里有3个不同的函数,并且由于 user_menu()函数的进展不大,因为我陷入了if语句/构造中的最后一段代码。

无论我做什么或添加什么代码, times_table()函数都会不断重复自身。它停留在 user_menu()函数中 if语句的最后一行。我该怎么办才能补救?

我还想将 times_table2()函数添加到 times_table()函数正下方的 user_menu()函数中。 / p>

我还想就如何将两个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 :(得分:0)

获得正确的值后,您应该使用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