尝试将 return True/False 值定义为 python 中的定义时出错
Error when trying to return True/False values to a definition in python
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 课程中得到的,我得到一个提示,告诉我当 9 被传递给参数时,函数 returns 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:
分支,并且 returns True
.
只有当整个循环是 运行 和 none 的数字除以 9 时,您才应该 return True
.
此外,在 return ...
之后 break
是无用的 - 该函数已经 returned,因此永远不会到达 break 语句。
这也是你最后一个问题的答案——当return
执行时,这个函数结束。不再执行任何其他操作,程序继续(returns 到)它调用函数时所在的位置。
第一个版本不起作用,因为,当 if 条件为假时,它 returns True.Thus,当 x==9 和 i==2 时,9%2!= 0,因此 return 为真。此外,无需使用 break 语句作为 return 语句 returns 函数和循环的值在 return 之后不会继续。
正确代码如下
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
return True
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 课程中得到的,我得到一个提示,告诉我当 9 被传递给参数时,函数 returns 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:
分支,并且 returns True
.
只有当整个循环是 运行 和 none 的数字除以 9 时,您才应该 return True
.
此外,在 return ...
之后 break
是无用的 - 该函数已经 returned,因此永远不会到达 break 语句。
这也是你最后一个问题的答案——当return
执行时,这个函数结束。不再执行任何其他操作,程序继续(returns 到)它调用函数时所在的位置。
第一个版本不起作用,因为,当 if 条件为假时,它 returns True.Thus,当 x==9 和 i==2 时,9%2!= 0,因此 return 为真。此外,无需使用 break 语句作为 return 语句 returns 函数和循环的值在 return 之后不会继续。
正确代码如下
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
return True