gpt4 book ai didi

python - 使用 str.rjust 和变量格式化

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:42 26 4
gpt4 key购买 nike

我是编码和这个网站的新手,所以请多多包涵。我正在研究“使用 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 应该可以正常工作,因为它有更大的争论,对吗?然而它仍然没有向右对齐。

最佳答案

rjust 与您试图证明的字符串长度具有相同的值,因此,您不会得到任何证明:

print("foo".rjust(3))
foo

但是:

print("foo".rjust(4))
foo

因此,为了让它工作,您首先需要获取最大长度,然后然后证明:

def test():
l = len(max(tableData[0], key=len))
print(l)
for fruit in tableData[0]:
print(fruit.rjust(l))

test()

这里l = len(max(tableData[0], key=len))根据key抓取tableData[0]中的最大值(设置为它的 len),然后获取该字符串的 len(cherries 将被返回,所以len(cherries) == 8 将被使用。

这现在可以正确打印出来:

  apples
oranges
cherries
bananas

如果不能使用 max,则必须遍历 tableData[0] 一次以找到最大值,然后再次循环以打印出值有道理。

首先,找到最大值是通过将初始计数器设置为 0 并在找到更长的单词时递增它来完成的:

longest = 0
for fruit in tableData[0]:
if longest < len(fruit):
longest = len(fruit)

此循环结束后,longest 的值为 8。现在,只需再次遍历列表并格式化,即:

for fruit in tableData[0]:
print(fruit.rjust(longest))

将它们放在test 函数中,按照您需要的方式打印出来:

def test():
longest = 0
for fruit in tableData[0]:
if longest < len(fruit):
longest = len(fruit)
for fruit in tableData[0]:
print(fruit.rjust(longest))

test()

关于python - 使用 str.rjust 和变量格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40751645/

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