为什么这不返回正确的除数?

问题描述

我对 Python 和编码非常陌生。我学习了一些 Python 2,因为它是最好的免费版本:) 下面是我写的代码

num = int(input("What number would you like to check the divisors of? "))
Divisors = list(range(1,num+1))
for element in Divisors:
    if num % element != 0:
        Divisors.remove(element)
print(Divisors)

这是打印出来的:

What number would you like to check the divisors of? 12
[1,2,3,4,6,8,10,12]

解决方法

问题可能是您在迭代时修改了列表除数。 它使您的代码跳过数组中的某些元素,尝试像这样打印当前元素:

num = int(input("What number would you like to check the divisors of? "))
Divisors = list(range(1,num+1))
for element in Divisors:
    print("The current element is",element)
    if num % element != 0:
        Divisors.remove(element)

了解正在发生的事情。

,

在迭代中修改除数会产生副作用。相反,您可以使用 list comp 来获取您想要的内容。

num = int(input("What number would you like to check the divisors of? "))
Divisors = list(range(1,num+1))
Divisors = [ element for element in Divisors if num % element == 0 ]

输出:

[1,2,3,4,6,12]