Использование% r в raw_input в Python

Возможно ли использовать% r в raw_input в Python?

Для контекста я работаю над упражнением 12 Зеда Шоу. (Отличный ресурс! Уроки очень полезны и проходят в хорошем темпе.)

Я играю с дополнительным кредитом, пытаясь заставить raw_input повторять то, что я ввел. Я знаю, что могу сделать то же самое с помощью оператора print, но мне любопытно, смогу ли я сделать это в raw_input.

Код, который я набираю:

from sys import argv

script, firstname, lastname = argv

age = raw_input("Hello %r, what is your age? ") % firstname

print ("Ahh, Mr. %r, you are %r years old.") % (lastname, age)

Я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
  File "ex13a.py", line 5, in <module>
    age = raw_input("Hello %r, what is your age? ") % firstname
TypeError: not all arguments converted during string formatting

Заранее спасибо!


person MathAttack    schedule 07.08.2012    source источник
comment
Введите %r в качестве ответа на вопрос, и вы увидите проблему.   -  person sloth    schedule 07.08.2012
comment
Спасибо вам обоим - это сработало!   -  person MathAttack    schedule 08.08.2012


Ответы (1)


Ваша строка должна читать

raw_input("Hello %r, what is your age? " % firstname)

вместо того

raw_input("Hello %r, what is your age? ") % firstname

В противном случае вы бы отформатировали не вашу "Hello %r, ..." строку, а результирующую строку вызова raw_input.

person sloth    schedule 07.08.2012