number = int(raw_input("Enter a number :"))
div = range(0, number)
list = []
while div <= number:
if number % div == 0:
list.append(div)
div =+ 1
print list
这是我为此练习制作的代码: http://www.practicepython.org/exercise/2014/02/26/04-divisors.html 我是编程的新手,所以我不知道我的代码有什么问题,但它没有给出任何输出。
答案 0 :(得分:1)
我想这个答案很简单,从低调的人看来,人们也会这么想。然而......一个人只能通过询问来学习!
您提出的代码中存在三个基本错误,以及一些使其更具Pythonic的方法。
number
)。 list
多次打印,而不是仅在完成while
循环结束时打印。list
用作变量,因为它是Python关键字。然后,为了使它更具Pythonic我的命题如下:
number = int(input("Enter a number :"))
output = []
for i in range(1,number+1):
if not number%i:
output.append(i)
print(output)
请注意,Python 3.x中不再存在raw_input
。还要注意,这样我们就可以避免while
循环,从经验来看,很容易导致错误。相反,它已被替换为自动循环遍历range(1,number)
生成的列表中的条目。
最后关于range
的说明,但也可能是关于语义的说明。我认为number
也是number
的除数。为此,我使用了range(1,number+1)
。因为,例如range(5)
会返回最多5
的列表:[0,1,2,3,4]
。即它不包括5
。
答案 1 :(得分:0)
以下是您需要的代码:
number = int(input("Enter a number :"))
list = []
# theoretically this is the limit you should test for divisors
for div in range(2, int(number/2 + 1)):
if number % div == 0:
# adds the divisor to the list
list.append(div)
div += 1
# prints all divisors in new line
for item in list:
print(item)
如果您使用的是python 2.7,而不是input
使用raw_input