Skip to main content
 首页 » 编程设计

python之尝试将 True/False 值返回到 python 中的定义时出错

2025年05月04日34EasonJim

def is_prime(x): 
    if x < 2: 
        return False 
    elif x == 2: 
        return True 
 
    for i in range(2,x): 
        if x % i == 0: 
            return False 
            break 
        else: 
            return True 

上面的代码来自 codecademy 的 python 类(class),我得到一个提示,告诉我当 9 传递给参数时,函数返回 True 而不是 False。我可以通过以下方式解决此问题:

    for i in range(2,x): 
        if x % i == 0: 
            return False 
            break 
    return True 

我不明白为什么第二段代码有效,而第一段却不行。事实上,我会认为代码的第二位不起作用:如果参数为 9,则当 i == 3, x % i == 0 时。所以函数得到一个返回值 False,然后循环中断。但是,由于“return True”不在 for 循环内,因此在退出 for 循环后,“return True”无论如何都会执行,因此无论输入如何,函数都会返回一个 True 值,因为这是最后一个要在函数内执行的代码行?

按照这一推理,我相信我的初始代码可以工作,因为如果“return True”在 for 循环内,那么 break 命令将被执行(假设输入为 9),在函数被执行之后返回值 False。并且由于“return True”行在 for 循环内,并且由于 break 命令将退出 for 循环,那么最后给函数的值应该是 False,这是正确的吗?

如果我(很可能)滥用了某些术语,或者在我对代码的工作或执行方式的理解上存在一些缺陷,我提前道歉。我似乎无法理解为什么第二段代码有效,但第一段却不行。

干杯!

请您参考如下方法:

for 循环以 i == 2 开始。 9 % 2 == 1,所以它进入 else: 分支,并返回 True。

只有在运行整个循环并且没有任何数字被 9 整除时,您才应该返回 True。

此外,在 break 之后的 return ... 之后是无用的 - 函数已经返回,因此永远不会到达 break 语句。

这也是您最后一个问题的答案——当执行 return 时,此函数结束。不再执行任何其他操作,程序继续(返回)调用该函数时所在的位置。