我试图找到给定数字的所有除数(在我的情况下为“i”)(在我的情况下为“a”),没有余数(%i == 0)。我正在运行一个循环,通过从1开始到a的值的所有值。问题是只考虑%i == 0的前两个产品。其余的被遗漏了。这是为什么?
这里是python3中的代码:
a = 999
i = 1
x = 0
d = []
while (i < a):
x = a / i
if(x % i == 0):
d.append(i)
i += 1
print (d)
代码的输出是:
[1, 3]
而不是列出所有除数。 我检查了a的不同值,但找不到错误。
答案 0 :(得分:2)
脚本的行为是正确的。亲眼看看:
我认为这是你的逻辑,你想要实现的目标是:
a = 999
i = 1
d = []
while (i < a):
if(a % i == 0):
d.append(i)
i += 1
print (d)
输出:
[1, 3, 9, 27, ...]
答案 1 :(得分:1)
为了补充安东的答案,更多的Pythonic循环方式是:
a, d = 999, []
for i in range(1, a):
if a%i == 0:
d.append(i)
您还可以利用对象具有Boolean value:
这一事实if not a%i:
或者你可以使用列表理解:
d = [i for i in range(1, a) if not a%i]