繁体   English   中英

质数函数返回true而不是false

[英]Prime number function returns true instead of false

我目前正在使用Codecademy学习Python。 我正在练习6,称为“ 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。

for循环永远不会运行,因为range(2, 0-1)为空。 这意味着执行else块(将for/else视为for/nobreak )返回True

首先: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)

戴夫

如果条件为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

以下代码可以完成您想要的工作...

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM