输入数值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
相关产品推荐
相关产品推荐

