二维列表输出格式
2D list output formatting
因此,如前所述,它是一个二维列表。 7 行内的 6 列(6 个随机数)。输出的格式应如下所示:
http://i.stack.imgur.com/hwnHi.png
我的代码是这样的:
print (" ", 1 , " ", 2, " ",3, " ",4, " ",5, " ",6)
print ()
for i in range(7):
print (i+1, *Pizza[i], sep=" ")
print ("To", *sales_of_hours, sep=" ")
Pizza 是我的二维列表,sales_of_hours 是每列总计的列表,我还有另一个名为 sales_of_day 的列表用于每行的总计,但是当我尝试像这样将其添加到循环中:
for i in range(7):
print (i+1, *Pizza[i], sep=" ", *sales_of_day[i])
我收到语法错误。
我做错了什么?
很可能,sales_of_day
是一个一维列表,如果是这样,你不能解压 sales_of_day[i]
,因为那很可能是一个数字。
此外,您不需要手动给出 space 和所有,您可以使用 str.format()
的右对齐,以获得类似的结果,代码 -
print(' '*6,end='')
for i in range(6):
print('{:>6}'.format(i+1),end="")
print('{:>6}'.format('Total'))
for i in range(7):
print('{:>6}'.format(i+1),end='')
for j in range(6):
print('{:>6}'.format(pizza[i][j]),end="")
print('{:>6}'.format(sales_of_day[i]))
print('{:>6}'.format('To'),end='')
for i in range(6):
print('{:>6}'.format(sales_of_hours[i]),end='')
print()
格式 {:>6}
强制字符串在可用 space 范围内右对齐(这是数字的默认设置)。
演示 -
import random
pizza = [[random.randint(1,9) for j in range(6)] for i in range(7)]
print(' '*5,end='')
for i in range(6):
print('{:>5}'.format(i+1),end="")
print('{:>5}'.format('Total'))
for i in range(7):
print('{:>5}'.format(i+1),end='')
for j in range(6):
print('{:>5}'.format(pizza[i][j]),end="")
print('{:>5}'.format(sum(pizza[i])))
print('{:>5}'.format('To'),end='')
for i in range(6):
print('{:>5}'.format(random.randint(10,50)),end='')
print()
输出-
> python a.py
1 2 3 4 5 6Total
1 4 6 6 2 6 9 33
2 2 4 6 1 3 7 23
3 1 4 3 5 7 1 21
4 5 5 2 7 2 2 23
5 3 1 6 8 1 7 26
6 6 2 3 3 6 8 28
7 3 9 6 6 4 4 32
To 45 45 25 40 30 34
after * 它必须是一个序列,所以尝试从 sales_of_day
中删除 *
space = " "*5
for i in range(7):
print (i+1, *Pizza[i], sep=space,end=space)
print (sales_of_day[i])
因此,如前所述,它是一个二维列表。 7 行内的 6 列(6 个随机数)。输出的格式应如下所示: http://i.stack.imgur.com/hwnHi.png
我的代码是这样的:
print (" ", 1 , " ", 2, " ",3, " ",4, " ",5, " ",6)
print ()
for i in range(7):
print (i+1, *Pizza[i], sep=" ")
print ("To", *sales_of_hours, sep=" ")
Pizza 是我的二维列表,sales_of_hours 是每列总计的列表,我还有另一个名为 sales_of_day 的列表用于每行的总计,但是当我尝试像这样将其添加到循环中:
for i in range(7):
print (i+1, *Pizza[i], sep=" ", *sales_of_day[i])
我收到语法错误。 我做错了什么?
很可能,sales_of_day
是一个一维列表,如果是这样,你不能解压 sales_of_day[i]
,因为那很可能是一个数字。
此外,您不需要手动给出 space 和所有,您可以使用 str.format()
的右对齐,以获得类似的结果,代码 -
print(' '*6,end='')
for i in range(6):
print('{:>6}'.format(i+1),end="")
print('{:>6}'.format('Total'))
for i in range(7):
print('{:>6}'.format(i+1),end='')
for j in range(6):
print('{:>6}'.format(pizza[i][j]),end="")
print('{:>6}'.format(sales_of_day[i]))
print('{:>6}'.format('To'),end='')
for i in range(6):
print('{:>6}'.format(sales_of_hours[i]),end='')
print()
格式 {:>6}
强制字符串在可用 space 范围内右对齐(这是数字的默认设置)。
演示 -
import random
pizza = [[random.randint(1,9) for j in range(6)] for i in range(7)]
print(' '*5,end='')
for i in range(6):
print('{:>5}'.format(i+1),end="")
print('{:>5}'.format('Total'))
for i in range(7):
print('{:>5}'.format(i+1),end='')
for j in range(6):
print('{:>5}'.format(pizza[i][j]),end="")
print('{:>5}'.format(sum(pizza[i])))
print('{:>5}'.format('To'),end='')
for i in range(6):
print('{:>5}'.format(random.randint(10,50)),end='')
print()
输出-
> python a.py
1 2 3 4 5 6Total
1 4 6 6 2 6 9 33
2 2 4 6 1 3 7 23
3 1 4 3 5 7 1 21
4 5 5 2 7 2 2 23
5 3 1 6 8 1 7 26
6 6 2 3 3 6 8 28
7 3 9 6 6 4 4 32
To 45 45 25 40 30 34
after * 它必须是一个序列,所以尝试从 sales_of_day
中删除 * space = " "*5
for i in range(7):
print (i+1, *Pizza[i], sep=space,end=space)
print (sales_of_day[i])