Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于另一个函数的返回参数退出函数?_Python_Loops_Return_Exit - Fatal编程技术网

Python 基于另一个函数的返回参数退出函数?

Python 基于另一个函数的返回参数退出函数?,python,loops,return,exit,Python,Loops,Return,Exit,我试图理解下面代码的逻辑。有人能帮我回答以下问题吗 1) for循环是否因为返回的check\u cheese为False而继续执行?据我所知,无论结果是True还是False,return命令都会停止函数的执行 2) if check_cheese(cheese)语句是否仅在check_cheese()函数的返回参数为True时才返回cheese变量?我在这里有点困惑,因为在中没有像==或这样的检查,也没有任何其他语句指示仅当条件为True时才返回奶酪 3) 如果列表中不存在Gouda,情况会

我试图理解下面代码的逻辑。有人能帮我回答以下问题吗

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

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

3) 如果列表中不存在Gouda,情况会怎样?是否会像
for
循环中的每个条件一样返回
False
,并且在结束时,您自己调用的print语句将在终止前执行

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

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()
  • 调用
    return
    语句将始终中断外部循环/函数,即使它是
    returnfalse
    。在您的情况下,
    if
    条件阻止调用
    return
    语句
  • 您的
    check_cheese
    函数从不返回
    cheese
    变量,只返回布尔值
  • 你为什么不试试 1) For循环是否因为返回 检查奶酪是假的吗?据我所知,要么结果是真的 如果为False,返回命令将停止函数的执行

    如果在If语句内部返回,它将从函数中断

    2) “if check_cheese(cheese)”语句是否返回cheese 仅当check_cheese()函数的返回参数为 是吗?我有点困惑,因为这里没有像“==”或“=”这样的检查 “in”或任何其他表示仅在以下情况下返回奶酪的语句 这个条件是正确的

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

    3) 如果列表中不存在Gouda,情况会怎样?它是 就像for循环中的每个条件返回False和at一样 结束打印语句“youcallyourself”将在之前执行 终止


    你会得到一份打印件“你称自己为奶酪店!”。试试看。:)

    代码中没有递归。代码中没有递归。您正在调用
    首先查找可用奶酪
    功能中的
    检查奶酪
    。递归函数自己调用。谢谢你的第一个问题。请熟悉格式化标记,您的问题将看起来更大。OP认为他的代码中存在递归。我想最好是提到他的代码中没有递归。@Ch3steR是的,你是对的,但是在我发布答案之前已经有两条评论说明了这一点。