gpt4 book ai didi

python - 自动化无聊的事情,第 6 章 台式打印机

转载 作者:行者123 更新时间:2023-11-30 21:49:50 25 4
gpt4 key购买 nike

我正在关注http://automatetheboringstuff.com/chapter6/
页面最底部是有关格式化表格的练习。

这是我的代码:

tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]

def printTable(table):
colWidths = [0] * len(table)

for line in table:
max = 0
for word in line:
if len(word) > max:
max = len(word)
colWidths[table.index(line)] = max

for a in range(len(table)-2):
for b in range(len(table[0])):
print(table[a][b].rjust(colWidths[0])+table[a+1][b].rjust(colWidths[1])+table[a+2][b].rjust(colWidths[2]))

"""
print(table[0][0].rjust(colWidths[0]), table[1][0].rjust(colWidths[1]), table[2][0].rjust(colWidths[2]))
print(table[0][1].rjust(colWidths[0]), table[1][1].rjust(colWidths[1]), table[2][1].rjust(colWidths[2]))
print(table[0][2].rjust(colWidths[0]), table[1][2].rjust(colWidths[1]), table[2][2].rjust(colWidths[2]))
print(table[0][3].rjust(colWidths[0]), table[1][3].rjust(colWidths[1]), table[2][3].rjust(colWidths[2]))
"""
print()

printTable(tableData)

注释掉的行按照应有的方式格式化所有内容。实际的代码没有。为了使其格式正确,我需要为每列添加 1 到 .rjust() (例如,对于 100 列,我必须 .rjust(colWidths[1]+99) )。

当我手动打印时似乎工作正常,为什么会发生这种情况?

最佳答案

for循环中的打印语句使用字符串连接:

print(table[a][b].rjust(colWidths[0])+table[a+1][b].rjust(colWidths[1])+table[a+2][b].rjust(colWidths[2]))

串联在内存中创建每个字符串,然后将它们在末尾组合在一起形成一个新字符串。项目之间不会添加空格,因此您需要在每一列之前添加一个字符。

代码中注释掉的行使用逗号分隔参数:

"""
print(table[0][0].rjust(colWidths[0]), table[1][0].rjust(colWidths[1]), table[2][0].rjust(colWidths[2]))
print(table[0][1].rjust(colWidths[0]), table[1][1].rjust(colWidths[1]), table[2][1].rjust(colWidths[2]))
print(table[0][2].rjust(colWidths[0]), table[1][2].rjust(colWidths[1]), table[2][2].rjust(colWidths[2]))
print(table[0][3].rjust(colWidths[0]), table[1][3].rjust(colWidths[1]), table[2][3].rjust(colWidths[2]))
"""

使用逗号分隔项目的 print 语句使用空格来分隔它们。这可能就是您的列正确排列的原因。

This answer更详细地解释了它。

关于python - 自动化无聊的事情,第 6 章 台式打印机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31257772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com