Индекс кортежа вне диапазона в формате .format - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть два аргумента, которые я хочу напечатать

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 голосов
/ 12 ноября 2018

должно быть

>>> 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.

0 голосов
/ 12 ноября 2018

Ваша проблема - это индекс 2 после знака $:

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

, когда вы используете .format в строке в python, число в {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))
...