素数函数返回true而不是false

时间:2017-04-19 09:31:50

标签: python

我目前正在使用Codecademy学习Python。我正在练习6,叫做#34; is_prime"。我从指令中逐步编写了函数,但它返回True而不是False。为什么呢?

说明:

Instructions

我的代码:

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。

4 个答案:

答案 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