我目前正在使用Codecademy学习Python。我正在练习6,叫做#34; is_prime"。我从指令中逐步编写了函数,但它返回True而不是False。为什么呢?
说明:
我的代码:
def is_prime(x): # step 1
for n in range(2,x-1): # step 2
if (x % n) == 0: # step 3
return False
else: # step 4
return True
错误:您的函数在is_prime(0)上失败。它返回False时返回True。
答案 0 :(得分:4)
for
循环永远不会运行,因为range(2, 0-1)
为空。这意味着else
块执行(将for/else
视为for/nobreak
),返回True
。
答案 1 :(得分:2)
首先:else语句完全没用,你可以简单地删除它。 除此之外,当您将0,1或2作为参数传递时,for循环中包含的内容不会运行,因为循环从2开始并以参数的值-1结束。
要使您的功能正常工作,您可以按如下方式进行更改:
def is_prime(x):
for n in range(2,x-1):
if (x%n) == 0:
return False
return (True if x>1 else False)
戴夫
答案 2 :(得分:0)
为0你应该有额外的条件
def is_prime(x): # step 1
if(x==0 or x==1):
return False
for n in range(2,x-1): # step 2
if (x % n) == 0: # step 3
return False
else: # step 4
return True
答案 3 :(得分:0)
以下代码应该做你想要的......
0和1永远不是素数,所以应该总是返回False。
数字2应返回True,但不能方便地放在range()函数中,如其他评论者所述。
def is_prime(x): # step 1
if x == 0 or x == 1:
return False
elif x == 2:
return True
for n in range(2,x-1): # step 2
if x % n == 0: # step 3
return False
else: # step 4
return True