2017-04-18 59 views
-1

变量mult在程序运行时未更新。这段代码有什么问题?运行结果表明我环路实际上是工作,我想,但在列表更新和最终的打印使用list.append的for循环中的更新列表

number = 18 

for i in range(int(number/2)): 
    i += 1 
    mults = [] 
    if number % i == 0: 
     mults = mults.append(i) 
     print(i) 
    elif number % i != 0: 
     pass 
    elif i == int(number/2): 
     print(mults) 

这个其他代码我得到的错误:AttributeError的:“NoneType”对象有没有属性“追加”

number = 18 
mults = [] 
for i in range(int(number/2)): 
    i += 1 
    if number % i == 0: 
     mults = mults.append(i) 
     print(i) 
    elif number % i != 0: 
     pass 
print(mults) 
+1

您每次循环时都重置'mults',这是否可取? – MooingRawr

+1

'mults = mults.append(int(i))':那也行不通... –

+0

btw:'int(number/2)'=>'number // 2'。并且不要在循环中篡改'i' ...,而是在for循环后打印结果而不是检查最后一个索引,这可以使用'else'而不是'elsif'。 –

回答

0
number = 18 
mults = [] 
for i in range(int(number/2)): 
    i += 1 

    if number % i == 0: 
     mults.append(i) 
     print(i) 
    elif number % i != 0: 
     pass 
print(mults) 

几个音符,移动mults外面的for循环,这样你就不会在每次写它的循环运行。

您不需要最后的elif语句,只需要print(mults) for循环完成时,基本上是最后的elif语句。

mults.append(i)符合意思,它会自动更改列表mults并且您不需要重新分配它。

+0

谢谢,我看到了我永远不会重复的错误 – Pozeidon

+0

如果它修复了您的问题,也许考虑接受答案,否则也许别人会带着更好的答案来接受您可以接受 – MooingRawr

+0

我还不能,但是一旦我的声望允许我这样做就会完成 – Pozeidon