Найдено этот пример Куайна:Как работает этот Python 3 quine?
s='s=%r;print(s%%s)';print(s%s)
Я понимаю, что %s
и %r
делать str
и repr
функции, как указано here, но что именно означает s%s
часть и как Куайн работает?
Найдено этот пример Куайна:Как работает этот Python 3 quine?
s='s=%r;print(s%%s)';print(s%s)
Я понимаю, что %s
и %r
делать str
и repr
функции, как указано here, но что именно означает s%s
часть и как Куайн работает?
s
установлен на:
's=%r;print(s%%s)'
так %r
заменяется на точно, что (сохраняя одинарные кавычки) в s%s
и окончательный %%
с одним %
, давая:
s='s=%r;print(s%%s)';print(s%s)
и, следовательно, quine.
Оператор x % y
означает замену значения y
в строке формата x
, так же, как C printf. Также обратите внимание, что спецификатор %%
означает буквенный знак%, поэтому s%%s
в строке формата будет печататься как s% s и не будет записывать строку.
В частности, '% r' означает использование функции' repr() 'в отличие от функции' str() '('% s'). См. ['Форматирование строк в формате' 'printf' (https://docs.python.org/3.5/library/stdtypes.html#printf-style-string-formatting). –
Спасибо! Также [здесь] (https://stackoverflow.com/questions/28255411/python-what-does-the-two-signs-in-print-r-kka-do?rq=1) Я нашел подробное объяснение, почему %% s печатается как s% s. –