【发布时间】:2017-04-06 16:56:37
【问题描述】:
我是编码和这个网站的新手,所以请多多包涵。我正在研究“用 Python 自动化无聊的东西”,这是章节回顾问题之一。我不太关心解决.rjust 方法的奇怪行为的答案。这个项目的目标是右对齐几个字符串列表。为了测试我的过程,我编写了一个函数来处理一个列表。
我的目标:
apples
oranges
cherries
bananas
代码如下:
tableData = [['apples', 'oranges', 'cherries', 'bananas'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
def test():
for fruit in tableData[0]:
longest = len(tableData[0][0])
longestlen = len(fruit)
if longest < len(fruit):
longest = fruit
longestlen = len(fruit)
print(fruit.rjust(longestlen))
test()
我试图通过引用每个列表中最长的字符串来使 .rjust 动态化,但使用 "fruit.rjust(longestlen)" 会打印列表而没有证明它的合理性:
apples
oranges
cherries
bananas
如果我将"longestlen" 与int 交换,比如8,它可以正常工作。为什么我不能使用变量来定义理由,或者我做错了什么?我还没有找到任何关于此的文档。
编辑:
我意识到我在代码中添加了额外的变量。现在是这样写的:
def test():
for fruit in tableData[0]:
longest = len(tableData[0][0])
if longest < len(fruit):
longest = len(fruit)
print(fruit.rjust(longest))
test()
这会打印相同的、不合理的输出,但更干净。 我意识到这与我的 .rjust() = 而不是 > len(fruit) 的值有相同的问题,这会导致 .rjust 方法出现问题。但是,如果我这样做:
print(fruit.rjust(longest + 1))
.rjust 现在应该可以正常工作了,因为它有更大的争论,对吗?然而它仍然不能证明向右。
【问题讨论】:
标签: python string python-3.x variables justify