Python - " индекс кортежа вне диапазона"

Я пишу программу для отображения информации о странах в формате таблицы. Он работал отлично, когда у меня было 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))

2 ответов


вам нужно передать соответствующее количество аргументов для слотов формата. В строке формата есть 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() вызов завершается успешно.


Как aswer к jon141: Я также сталкиваюсь с этой проблемой, и я пытаюсь решить эту проблему, зацикливаясь на одном элементе столбца (я передаю 2-мерный массив), а затем строю строку на основе этого. Поэтому я заканчиваю строку как

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

элементы, которые я хочу отформатировать, я помещаю в кортеж. но когда я это делаю ... --3-->

template.format(tuple_variable)

он выдает ошибку, что индекс кортеж из диапазона

вероятно, потому что теперь он передает кортеж кортежа функции, который имеет один элемент, кортеж

Я еще не понял, как это исправить, но следуйте за нить если вам нужна дополнительная информация.