我必须定义一个名为is_prime的函数,它将数字x作为输入,然后对于从2到x - 1的每个数字n,测试x是否可被n整除。 如果是,则返回False。如果没有,则返回True。
我正在使用的系统(codecademy)给我的代码错误消息“哎呀,再试一次。你的is_prime函数是否只取一个参数(一个整数)?你的代码抛出了一个”不支持的操作数类型%:'int'和'list'“错误。”
请有人修改我的代码并解释我的代码是如何错误的吗?
def is_prime(x):
n = range(2, x-1)
if x % n == 0:
return False
else:
return True
答案 0 :(得分:3)
你需要遍历范围:
def is_prime(x):
if x < 2:
return False
for i in range(2,x):
if x % i == 0:
return False
return True
if x % i == 0
永远不会评估为True,你有一个素数,所以你在检查每个i
之后在循环外返回True。你可以简单地返回一个gen exp:
def is_prime(x):
return x > 1 and not any(x % i == 0 for i in range(2, x))
答案 1 :(得分:0)
这不是你如何使用范围。
你想要
def is_prime(x):
for n in range(2, x-1):
if x % n == 0:
return False
return True
Range返回一个列表,因此您的原始代码正在检查列表对象是否可以被n
整除,而不是检查列表中的每个元素。