7

我正在编写一个程序以表格格式显示有关国家/地区的信息。当我有 3 个国家/地区时,它工作得非常好,但是将其更改为 10(并相应地调整所有必要的代码)导致错误,“元组索引超出范围”在行中:

print("{0:^20}{1:^20}{2:^20}{3:^20}{4:^20}{5:^20}[6:^20}{7:^20}{8:^20}{9:^20}".format(newcountrylist[i].country,newcountrylist[i].currency,newcountrylist[i].exchange))
4

2 回答 2

10

您需要为格式槽传递匹配数量的参数。您的格式字符串有 10 个插槽,但您只传递了 3 个值。

减少到 4 个格式槽,只有 3 个参数.format(),显示相同的错误:

>>> '{0:^20}{1:^20}{2:^20}{3:^20}'.format(1, 2, 3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>> '{0:^20}{1:^20}{2:^20}{3:^20}'.format(1, 2, 3, 4)
'         1                   2                   3                   4          '

当我传入 4 个参数时,.format()调用成功。

于 2012-12-16T16:59:24.183 回答
0

作为对 jon141 的回答:我也面临这个问题,我试图通过循环列的一个项目(我正在传递一个二维数组)然后基于它构建字符串来解决这个问题。所以我最终得到一个字符串

template="{0!s:10}{1!s:15}...{n!s:24}

我要格式化的元素放在一个元组中。但是当我这样做时

template.format(tuple_variable)

它抛出元组索引超出范围的错误

可能是因为它现在将元组的元组传递给函数,该函数有一个元素,元组

我还没有想出如何解决这个问题,但是 如果您需要更多信息,请关注该主题。

于 2015-04-27T06:41:31.793 回答