试图在python循环中添加数字错误的结果

时间:2014-09-12 20:43:18

标签: python

我是python的新手。我正在尝试编写一个计算一系列值的程序,但是3和4的倍数分别为它们添加3和4,当数字为两者的倍数时,它会向该数字添加该数字。所以例如1,2,3,4,5,6,7,8,9,10,11,12 应该在最终程序中读作:1,2,6,8,5,9,7,12,10,11,24

但是我的代码卡在某处。

for i in range (1,20):
   if i%3==0 and i%4==0:
       i=i+12
   if i%3==0:
       i=i+3
   if i%4==0:
       i=i+4
   print i

3 个答案:

答案 0 :(得分:3)

此行有拼写错误

if i%3==0 and 1%4==0:  # your second condition is 1 % 4 == 0, which is always false

我认为你的意思是

if i%3==0 and i%4==0:

答案 1 :(得分:2)

如果使用其他变量,则更好(更准确,更清晰)。

for i in range (1,20):
   n = i
   if i%3==0 and i%4==0:
       n=i+12
   if i%3==0:
       n=i+3
   if i%4==0:
       n=i+4
   print n

现在你会注意到这个固定了9个案例,但不是12个案例!我们现在需要添加elif的使用。此外,如果一个数字是3和4的倍数,那么它也是它们最低公倍数的倍数,在这种情况下为12.所以你可以重新编写你的第一步,只检查12的倍数。这给了我们:

for i in range (1,20):
   n = i
   if i%12==0
       n=i+12 # or possibly i + i
   elif i%3==0:
       n=i+3
   elif i%4==0:
       n=i+4
   print n

这样做的原因是因为没有elif我被多次添加。例如,使用9,您将获得9%3 ==0,True。现在我设置为12.下一个声明? 12%4 ==0是的。所以又增加了4个。

或者,如果你想做一些疯狂的python:

for i in range(1, 20):
    print i + next((n for n in (12, 4, 3) if i % n == 0), 0)

(向Jon Clements喊出这个双线答案)

答案 2 :(得分:1)

您允许每次迭代的多个案例(如果条件)。 我想你可能想做独家案件。

可能是这样的:

for i in range(1, 20):
    print i, "=>",
    if i % 3 == 0 and i % 4 == 0:
        i += i
    elif i % 3 == 0:
        i += 3
    elif i % 4 == 0:
        i += 4
    print i