为什么我的减少数量重复?

时间:2018-03-12 19:30:56

标签: python

d=int(input("Decreasing number: "))
i=int(input("Increasing number: "))

def i_d (n,m):
    c=0
    for f in range (100,0,-n):
        for c in range (0,100,m):
            print (f,c)
        print ()    
i_d(d,i)

这是我的程序,它应该给我两个数字列表,一个递减,另一个递增。

例如:

d=60
i=40

它应该打印:

100 0
40  40
40  80
而是打印:

100 0
100 40
100 80

40 0
40 40
40 80 

1 个答案:

答案 0 :(得分:2)

您正在使用嵌套循环,这意味着您将针对递增范围的每个值迭代一次增加的范围。您需要使用zip函数进行循环,以便并行迭代每个范围。

for f, c in zip(range(100,0,-n), range(0, 100, m)):
    print (f, c)

要处理不同长度的序列,必要时重复较短序列的最后一个元素,请使用itertools.zip_longest。您需要分别跟踪每个序列的最后一个值,以便您可以重复使用它。

for f, c in itertools.zip_longest(range(100, 0, -n), range(0, 100, m)):
    if f is None:
        f = last_f
    elif c is None:
        c = last_c
    print(f, c)
    last_f = f
    last_c = c