我做了一个程序来计算python中的库存;但是,我有格式化布局输出的问题。到目前为止我所做的是:
def summary(a,b,c,row,col,tot):
d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"}
for i in range(row):
for j in range(col):
print "%6d" %(a[i][j]),
print "%s%6d\n" %(d[i],(b[i])),
print "\n" ,
for j in range(col):
print "%6d" %(c[j]),
print "%6d\n" %tot
因此输出为7 x 4矩阵,总数为右侧和总列数。但是我想在左侧放一些名字来代表特定的名字,比如尺寸小等,所以我使用了字典,但我得到的是在行总数之前的右侧。我无法弄清楚我怎么能把它放在与数字相同的左侧。我想在数字(矩阵)中放置两列,其中一列是中间第一个最左列中的一个大小,然后是第二列名称,因为你可以看到在字典中使用的指定,然后数字会出现在同一行。
非常感谢任何帮助或建议。我做了一个程序来计算python中的库存;但是,我有格式化布局输出的问题。到目前为止我所做的是:
def summary(a,b,c,row,col,tot):
d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"}
for i in range(row):
for j in range(col):
print "%6d" %(a[i][j]),
print "%s%6d\n" %(d[i],(b[i])),
print "\n" ,
for j in range(col):
print "%6d" %(c[j]),
print "%6d\n" %tot
因此输出为7 x 4矩阵,总数为右侧和总列数。但是我想在左侧放一些名字来代表特定的名字,比如尺寸小等,所以我使用了字典,但我得到的是在行总数之前的右侧。我无法弄清楚我怎么能把它放在与数字相同的左侧。我想在数字(矩阵)中放置两列,其中一列是中间第一个最左列中的一个大小,然后是第二列名称,因为你可以看到在字典中使用的指定,然后数字会出现在同一行。
非常感谢任何帮助或建议。
我希望它看起来像这样
small 1 1 1 1 1 1 1 7
medium 1 1 1 1 1 1 1 7
尺寸大1 1 1 1 1 1 1 7
xlarge 1 1 1 1 1 1 1 7
4 4 4 4 4 4 4 28
我得到了
1 1 1 1 1 1 1小7
1 1 1 1 1 1 1 medium 7
1 1 1 1 1 1 1 large 7
1 1 1 1 1 1 1 xlarge 7
4 4 4 4 4 4 4 28
抱歉以前不够具体。答案 0 :(得分:0)
您只需将“%s”和相应的变量移动到正确的位置:
def summary(a,b,c,row,col,tot):
d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"}
for i in range(row):
print "%8s" % d[i],
for j in range(col):
print "%6d" %(a[i][j]),
print "%6d\n" % ((b[i])),
print "\n" ,
print "%8s" % " ",
for j in range(col):
print "%6d" %(c[j]),
print "%6d\n" %tot
在调用时(请注意这只是测试编号,您将用真实编号替换它们):
summary([[1, 2, 3, 4, 5, 6, 7],
[1, 2, 3, 4, 5, 6, 7],
[1, 2, 3, 4, 5, 6, 7],
[1, 2, 3, 4, 5, 6, 7]], [12, 13, 14, 15],
[22, 23, 24, 25, 26, 27, 28], 4, 7, 7777)
你会得到类似的东西:
Small 1 2 3 4 5 6 7 12
Medium 1 2 3 4 5 6 7 13
Large 1 2 3 4 5 6 7 14
Xlarge 1 2 3 4 5 6 7 15
22 23 24 25 26 27 28 7777
如果您希望调整名称,则必须在格式说明之前添加“ - ”,如:
print "%-8s" % d[i],
答案 1 :(得分:0)
只需在行前打印:
def summary(a,b,c,row,col,tot):
d={0:"Small", 1:"Medium", 2:"Large", 3:"Xlarge"}
for i in range(row):
print d[i].ljust(6),
for j in range(col):
print "%6d" %(a[i][j]),
print "%6d\n" %(b[i]),
print "\n" ,
for j in range(col):
print "%6d" %(c[j]),
print "%6d\n" %tot
这假设您希望第一列左对齐。也可以使用右对齐(rjust()
)和居中(center()
)。
此外,由于您只是使用连续的数字索引,因此您只需使用列表而不是字典。
作为旁注,更多描述性变量从来都不是坏事。此外,根据this,%格式已过时,format()
方法应在新程序中使用。