2015-10-12 3 views

ответ

13

s установлен на:

's=%r;print(s%%s)' 

так %r заменяется на точно, что (сохраняя одинарные кавычки) в s%s и окончательный %% с одним %, давая:

s='s=%r;print(s%%s)';print(s%s) 

и, следовательно, quine.

+1

В частности, '% r' означает использование функции' repr() 'в отличие от функции' str() '('% s'). См. ['Форматирование строк в формате' 'printf' (https://docs.python.org/3.5/library/stdtypes.html#printf-style-string-formatting). –

+0

Спасибо! Также [здесь] (https://stackoverflow.com/questions/28255411/python-what-does-the-two-signs-in-print-r-kka-do?rq=1) Я нашел подробное объяснение, почему %% s печатается как s% s. –

3

Оператор x % y означает замену значения y в строке формата x, так же, как C printf. Также обратите внимание, что спецификатор %% означает буквенный знак%, поэтому s%%s в строке формата будет печататься как s% s и не будет записывать строку.