我刚刚开始学习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...
答案 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