我被困在练习蟒蛇练习4

时间:2017-03-29 14:08:35

标签: python python-2.7

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  我是编程的新手,所以我不知道我的代码有什么问题,但它没有给出任何输出。

2 个答案:

答案 0 :(得分:1)

我想这个答案很简单,从低调的人看来,人们也会这么想。然而......一个人只能通过询问来学习!

您提出的代码中存在三个基本错误,以及一些使其更具Pythonic的方法。

  1. 首先,最重要的是,除以零是不可能的!因此,您需要检查范围内的数字(1 - number)。
  2. 根据缩进list多次打印,而不是仅在完成while循环结束时打印。
  3. 您希望避免将list用作变量,因为它是Python关键字。
  4. 然后,为了使它更具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