2016-10-26 3 views
0

Я использую Python 3.6. Я использую Learn Python в качестве ссылки.Печать смешанного списка в python

У меня есть смешанный список, и я пытаюсь распечатать элементы. В книгах говорится использовать

код формата «r», так как мы не знаем, что находится в списке. Но я ошибаюсь.

Было ли это работать в предыдущих версиях? Как я могу напечатать смешанный список, каждый элемент - время.

Вот мой код и ошибка:

change = [1,'pennies',2,'dimes',3,'quarters'] 
for i in change: 
print("I got {:r}".format(i)) 

Ошибка стека трассировки:

Traceback (most recent call last): 
    File "<pyshell#52>", line 2, in <module> 
    print("I got {:r}".format(i)) 
ValueError: Unknown format code 'r' for object of type 'int' 

Благодаря

+0

Это должно быть '! R', а не': r'. –

ответ

1

Для str.format, "сила в repr" преобразование выполняется с !r. не :r; он не утверждает тип преобразования, он говорит: «Не используйте __format__ вообще, используйте __repr__ для выполнения преобразования». Сделать это:

print("I got {!r}".format(i)) 
+0

Спецификатор простого формата '{}' будет обрабатывать практически все. Например: 'print ('{}'. Format ([1, 'eggs', {'spam': 99}]))' производит '[1, 'eggs', {'spam': 99}]' – nigel222

+0

@ nigel222: Яр. Он возвращается к 'str', если объект не поддерживает более продвинутое форматирование, и обычно' str' так же безопасен, как 'repr' (иногда это одно и то же). В основном я использую 'repr', чтобы лучше понять, с чем я работаю (поскольку' str' с большей вероятностью опускает информацию о _what_ я работаю), но они оба обычно безопасны. – ShadowRanger

Смежные вопросы