为什么python中的计数器不工作?

为什么python中的计数器不工作?,python,python-3.x,list,Python,Python 3.x,List,我刚刚开始学习Python,需要列出一些特定的值。请参阅下面的代码。然而,我的计数器似乎不起作用。它只接受第一个num,不改变它。例如,当我尝试5号尺码时,我会得到所有25号的列表,而不是25 24 23 22。。。 我的柜台什么也没做。我试着把它放在代码的其他地方,但没有任何改变。有什么帮助吗 def listmaker(size): listsize = size * size list = [] for i in range(size): fo

我刚刚开始学习Python,需要列出一些特定的值。请参阅下面的代码。然而,我的计数器似乎不起作用。它只接受第一个num,不改变它。例如,当我尝试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...

计数器=0
移动到循环之前,使其仅运行一次,并将
计数器=counter+1
(顺便说一句,相当于
计数器+=1
)移动到第二个循环的末尾,以便在所有其他操作之后重复运行

另外,您的
elif number==0:
是无用的,因为循环将只运行25次,而这将在26次之后激活


如果您想有效地执行此操作,您可以使用
列表(范围(大小**2,0,-1))
计数器=0
移动到循环之前,这样它只运行一次,并移动
计数器=计数器+1
(顺便说一句,相当于
计数器+=1
)到第二个循环的末尾,以便在其他所有操作之后重复运行

另外,您的
elif number==0:
是无用的,因为循环将只运行25次,而这将在26次之后激活


如果您想有效地执行此操作,您可以使用
列表(范围(大小**2,0,-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) 

你所有的错误都在评论中

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) 

如果您只是想将
size
中的整数平方为1,只需这样做

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

-1
步骤告诉
范围
倒计时。使用
range(size**2,-1,-1)
如果您想让列表停在
0
而不是
1
如果您只是想让整数从
size
平方为1,只需这样做

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

-1
步骤告诉
范围
倒计时。使用
范围(大小**2,-1,-1)
如果你想让列表停在
0
而不是
1

你能更清楚地知道你期望的输出是什么吗?你可以在循环之外修改
计数器的值。其他专业提示:
计数器+=1
你能更清楚地知道你期望的输出是什么吗?你可以修改
计数器
的值在循环之外。其他专业提示:
计数器+=1
很好的解决方案,但您并没有真正回答作者的问题。他想知道代码中的错误。这是一个很好的解决方案,但你并没有真正回答作者的问题。他想知道代码中的错误。