【问题标题】:Exit function based on the return parameter of an another function?基于另一个函数的返回参数的退出函数?
【发布时间】:2020-06-12 07:24:54
【问题描述】:

我试图理解下面这段代码的逻辑。有人可以帮我解决以下问题吗?

1) for 循环是否会因为check_cheese 的返回是False 而继续执行?据我所知,无论结果是True 还是Falsereturn 命令都会停止函数的执行。

2) if check_cheese(cheese) 语句是否只有在check_cheese() 函数的返回参数为True 时才返回cheese 变量?我在这里有点困惑,因为没有像 ==in 这样的检查或任何其他表示仅在条件为 True 时才返回奶酪的语句。

3) 如果列表中不存在 Gouda 会怎样?是否会像 for 循环中的每个条件都返回 False 并且在结束打印语句 you call yourself 将在终止之前执行?

提前感谢您提供的任何帮助。

def check_cheese(cheese):

    if cheese == "Gouda":
        print("ooh we have that one")
        return True
    print(f"we don't have any {cheese}")
    return False

def find_first_available_cheese():

    for cheese in ['Emmental','Gouda']:
        if check_cheese(cheese):
            return cheese
    print("and you call yourself a cheeseshop!")

find_first_available_cheese()

【问题讨论】:

  • 您的代码中没有没有递归。
  • 您的代码中没有递归。您在 find_first_available_cheese 函数中调用 check_cheese递归函数调用自身。
  • 感谢第一个问题。请熟悉格式化标记,您的问题会看起来更丰富。

标签: python loops return exit


【解决方案1】:

1) For 循环是否因为返回 check_cheese 是假的?据我所知,结果都是 True 或 False,返回命令会停止函数的执行

如果您在 if 语句中返回,它将从函数中中断。

2) "if check_cheese(cheese)" 语句是否返回奶酪 仅当 check_cheese() 函数的返回参数为 真的?我在这里有点困惑,因为没有像“==”或 “in”或任何其他表明仅在以下情况下才返回奶酪的语句 条件为真。

for 循环一直运行,直到找到 Guda 奶酪,如 check_cheese 函数所示。

3) 如果列表中不存在 Gouda 会怎样?是吗 会像 for 循环中的每个条件一样返回 False 并且在 结束打印语句“you call yourself”将在之前执行 终止?

你会得到一个打印输出“你称自己为奶酪店!”。尝试。 :)

【讨论】:

    【解决方案2】:
    1. return 语句的调用将始终中断外部循环/函数,即使它是return False。在您的情况下,if 条件阻止调用 return 语句
    2. 您的 check_cheese 函数从不返回 cheese 变量,只返回布尔值
    3. 你为什么不试试呢? ;)

    【讨论】:

    • OP 认为他的代码中有递归。我认为最好提一下他的代码中没有递归
    • @Ch3steR 是的,你是对的,但是在我发布答案之前已经有两个 cmets 说明了这一点。
    猜你喜欢
    • 2018-12-19
    • 2022-01-26
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 2012-12-14
    • 2019-03-24
    • 1970-01-01
    • 2020-10-04
    相关资源
    最近更新 更多