我开始通过Codecademy学习Python,并思考一项练习,要求我编写一个程序,确定一个数字是否是素数。
当我的原始代码不起作用时,我做了一些研究并找到了可行的代码。我查看了它们两个,看起来它们之间没有区别,除了我用来循环遍历列表的事实,当工作代码使用while循环逐个循环遍历对象时,所以我想知道如果确实如此(如果是这样,它会产生什么不同)或者我的代码是否存在逻辑错误。
对于文本块,对不起,我将提供我的代码(不起作用)和答案代码(确实有效)
我的代码在这里:
def primer(x):
if x < 2:
return False
elif x > 2:
for n in range(2, x):
if x % n == 0:
return False
else:
return True
else:
return True
以及在这里工作的代码:
def is_prime(x):
if x < 2:
return False
elif x > 2:
n = 2
while n < x:
if x % n == 0:
return False
n += 1
else:
return True
else:
return True
感谢您花时间阅读本文,祝您度过愉快的一天。
答案 0 :(得分:2)
在尝试所有可能的除数之前,如果发现数字不可分,则立即返回True
。删除else
块:
def primer(x):
if x < 2:
return False
else:
for n in range(2, x):
if x % n == 0:
return False
# else:
# return True
return True