首页 > 解决方案 > 在另一个函数中调用一个函数

问题描述

我正在学习编码,并且正在尝试越来越多地学习使用函数。我在这里有 3 个不同的函数,并且我在user_menu()函数方面没有取得太大进展,因为我被 if 语句/构造中的最后一段代码卡住了。

无论我做什么或添加什么代码,times_table() 函数都会不断重复它停留在 user_menu() 函数中if语句最后一行。我能做些什么来解决这个问题?

我还想在times_table ( )函数下的user_menu() 函数中添加 times_table2()函数。

我还想就如何将两个 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

标签: pythonpython-3.xfunction

解决方案


您应该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

推荐阅读