为什么我的python中的计数器不起作用?

时间:2017-12-01 16:06:15

标签: python python-3.x list

我刚刚开始学习Python,我需要列出某些值。见下面的代码。然而,我的柜台似乎并没有起作用。它只需要第一个数字并且不会改变它。例如,当我尝试5号大小时,我得到了所有25个的列表,而不是25 24 23 22 ... 我的柜台没有做任何事情。我已经尝试将它放在代码的其他地方,但没有任何改变。有什么帮助吗?

def listmaker(size):   
    listsize = size * size
    list = []
    for i in range(size):
        for j in range(size):
            counter = 0
            num = listsize - counter
            if number > 0 :
                elem = num
                list.append(elem)   
            elif number == 0:
                elem = "X"     
    counter = counter + 1  
    print(list) 

输出我得到例如4作为大小:

16 16 16 16 16 16 16 16 16....(times 16)

我想要的是:

16 15 14 13 12 11 10 9...

3 个答案:

答案 0 :(得分:1)

counter = 0移到循环之前,以便它只运行一次,并将counter = counter + 1(顺便提到相当于counter += 1)移动到第二个循环的末尾,这样它在其他一切之后反复运行。

此外,你的elif number==0:没用,因为循环只会运行25次,而且会在26次后激活。

如果你想有效地做到这一点,你可以使用list(range(size**2, 0, -1))

答案 1 :(得分:1)

所有错误都在评论中

def listmaker(size):   
    listsize = size * size
    list = []
    # you should init counter outside the loops
    counter = 0
    for i in range(size):
        for j in range(size):
            num = listsize - counter
            # number -> num
            if num > 0 :
                elem = num
                list.append(elem) 
            # number -> num  
            elif num == 0:
                elem = "X"   
            # you should modify the counter in the loop  
            counter = counter + 1  
    print(list) 

答案 2 :(得分:1)

如果您只是想将size平方的整数调整为1,只需执行

list(range(size**2, 0, -1))

-1步骤告诉range倒计时。如果您希望列表停在range(size**2, -1, -1)而非0

,请使用1