2015-10-12 8 views

Antwort

13

s ist eingestellt auf:

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

so wird die %r dass durch genau ersetzt in s%s und die endgültigen %% mit einer einzigen % ( die einfachen Anführungszeichen zu halten), mit:

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

und daher die Quine.

+1

Spezifisch bedeutet '% r' die Funktion' repr() 'im Gegensatz zu' str() '('% s'). Siehe ['printf'-artige String-Formatierung] (https://docs.python.org/3.5/library/stdtypes.html#printf-style-string-formatting). –

+0

Danke! Auch [hier] (https://stackoverflow.com/questions/28255411/python-what-does-the-two-signs-in-print-r-kka-do?rq=1) fand ich eine detaillierte Erklärung warum s %% s wird wie s% s gedruckt. –

3

Der Operator x % y bedeutet ersetzen Sie den Wert y in der Formatzeichenfolge x, genauso wie C printf. Beachten Sie außerdem, dass der Spezifizierer %% für ein Literal% -Zeichen steht, sodass s%%s in der Formatzeichenfolge als s% s gedruckt wird und keine Zeichenfolge erfasst.