.format中的元组索引超出范围

时间:2018-11-12 13:02:45

标签: python-3.x format tuples

我有两个要打印的参数

print('{0:25}${2:>5.2f}'.format('object', 20))

但是他们给出以下响应:

Traceback (most recent call last):

IndexError: tuple index out of range

但是当我将代码更改为以下代码时,我得到了期望的输出:

print('{0:25}${2:>5.2f}'.format('object', 20, 20))

我不明白为什么,因为我只有两组{}。谢谢

2 个答案:

答案 0 :(得分:1)

您的问题是$符号后的2索引:

print('{0:25}${2:>5.2f}'.format('object', 20, 20))

在python中的字符串上使用.format时,{number:}处的数字是您想要的参数的索引。 例如以下内容:

"hello there {1:} i want you to give me {0:} dollars".format(2,"Tom")

将在以下输出中重新输出:

'hello there Tom i want you to give me 2 dollars'

这里有一个简单的示例: https://www.programiz.com/python-programming/methods/string/format

所以总结一下,为了使代码正常工作,请使用:

print('{0:25}${1:>5.2f}'.format('object', 20))

答案 1 :(得分:0)

应该是

>>> print('{0:25}${1:>5.2f}'.format('object', 20))
object                   $20.00

请注意将占位符从2更改为1

print('{0:25}${1:>5.2f}'.format('object', 20))
###            ^

添加第三个参数(第二个20)时,占位符2会找到一个值

>>> print('{0:25}${2:>5.2f}'.format('object', 20, 20))
object                   $20.00

但是如果没有第三个参数,则会引发index out of range异常。