gpt4 book ai didi

函数中的 Python 错误 [初学者]

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:03 25 4
gpt4 key购买 nike

我最近开始编码,在 Codecademy 上尝试学习 Python 时遇到了一些我没有完全理解的东西。

任务是创建一个函数,该函数会在调用时判断该数字是否为素数。

这是我的第一个解决方案:

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

print is_prime(5)

运行后,它一直显示 is_prime(3) 给出的是 False,而不是 True。因此,在 Codecademy 论坛上搜索了一下之后,我发现如果代码的最后一位被更改为:

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

print is_prime(5)

它开始正常工作。谁能解释一下这种改变是如何导致代码工作的?提前致谢。

最佳答案

第一个代码片段中发生的是循环几乎没有机会运行。其中的 if 子句同时具有 then 和 else 分支,因此它们中的任何一个都将始终执行。因为它们里面都有一个return,所以函数会在循环第一次执行时立即返回。

此外,在您的 3 特定测试用例中,循环甚至不会运行一次,因为 range() 指定了一个排他性上限。 range(2, 2) 是一个空范围。该函数在没有return 的情况下结束,在 Python 中这会导致该函数返回一个特殊值 None

第二个代码片段被修改为仅在找到证明给定数字不是质数的反例时才退出函数。在这种情况下,可以提前从函数返回,因为如果找到一个除数,则该数不可能是质数,因此无需检查其余数。只有循环结束没有找到,才会到达循环后的return True

关于函数中的 Python 错误 [初学者],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36829367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com