You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python素数判断程序返回None而非预期True的问题排查

问题产生原因
  • Python函数在没有显式执行return语句时,默认返回值为None。你的代码逻辑存在分支遗漏:当输入的数字大于1,且能被2到int(num/2)+1区间内的任意整数整除时,会触发break跳出for循环,此时既不会执行for循环配套else分支的return "True",也不会走到外层else的return "False",该分支下函数无返回值,因此得到None。
  • 额外说明:33本身是合数(3×11=33),逻辑上判定结果应为False,你预期返回True属于对素数判定逻辑的预期偏差,测试素数可使用2、3、5、31这类实际素数验证。
代码修复方案

只需在for循环结束后(即触发break跳出循环的场景)新增返回False的逻辑即可,修改后的完整代码如下:

def acc_p(num):
    if num > 1:
        for i in range(2, int(num/2)+1):
            if num % i == 0:
                break
        else:
            return "True"
        # 补充break场景的返回值
        return "False"
    else:
        return "False"

x = int(input("Enter number"))
c = acc_p(x)
print(c)

修改后输入素数会返回True,输入合数或小于等于1的数字会返回False,不会再出现None的情况。

内容的提问来源于stack exchange,提问作者Pranav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:24:07