问题描述
我对 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]