创建了一个程序来查找自然数的素因数,但出现错误:
multipliers = []
a = 2
value = input("Put a natural number here: ")
value = int(value)
for i in range(1, value):
if value % i == 0:
multipliers.append(i)
for x in multipliers:
while a < x:
if x % a == 0:
multipliers.remove(x)
else:
a += 1
print(multipliers)
我在这里要做的是:获取一个输入值,找到一个值的乘数,并从中得出一个列表,将这些乘数乘以1,然后尝试除以[2、3、4、5。 。],如果a
是x的乘数,则将其从列表中删除,并从列表中获取另一个值x,然后执行相同的操作。
但是当我尝试运行此程序时,我收到一条错误消息,提示
ValueError:list.remove(x):x不在列表中
我不知道我在哪里做错了。你能帮我吗?
答案 0 :(得分:0)
因为x
已从列表中删除-然后while循环再次循环,并尝试再次从列表中删除x
。
要解决此问题,请在您的while循环中添加一个break
,如下所示:
for x in multipliers:
while a < x:
if x % a == 0:
multipliers.remove(x)
break
else:
a += 1
您还可以用列表理解替换第二个for循环:
factors = [x for x in multipliers if all(x % a != 0 for a in range(2, x))]