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

输入数值2时prime_number函数返回None的原因排查

问题原因及修复方案

输入2返回None的原因

当你传入参数2时,函数里的range(2, x)会变成range(2, 2),这个生成的序列是空的,循环体根本不会执行。而你的函数除了开头的x<2判断和循环内的return外,没有其他返回语句,Python中函数如果没有明确返回值,默认会返回None,这就是你得到None的原因。

代码还有其他逻辑错误

你的循环逻辑完全错误:每次循环第一次判断后就直接return,比如传入9时,i=2,9%2≠0,会直接返回"Your number is a prime number",但9明显不是质数(能被3整除)。正确的逻辑应该是:遍历所有可能的因子,如果找到能整除的就返回非质数;如果循环结束都没找到因子,再返回是质数。

修复后的代码

def prime_number(x):
    if x < 2:
        return False
    # 遍历到x的平方根即可,优化性能
    for i in range(2, int(x**0.5) + 1):
        if x % i == 0:
            return f'{x} is not a prime number'
    # 循环结束没找到因子,说明是质数
    return f"Your number {x} is a prime number"

num = int(input("Enter a number to check whether it is prime or not: "))
print(prime_number(num))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:15:32