2015-01-31 85 views
-1

我在研究quines時遇到了這個問題。我很好奇,想知道什麼%%做下面的Python:這兩個%在打印'%r k %% k'%'a'中做什麼?

print '%r k%%k'%'a'

據我所知,%R取則傳遞參數的字符串表示(在這種情況下,「A」),並將其添加到帶有字符串引號,所以在這種情況下,它會打印'a'k%k。我無法弄清楚k %% k做什麼?如果我刪除了其中一個%符號,則會出現錯誤。如果我沒有%r,我也會得到一個錯誤。但是,當我有%r和兩個%符號在ks(或任何字母表)之間時,它會打印出幾乎相同的內容,但缺少一個%(在此情況下爲k %% k)。這裏發生了什麼?

回答

3

%%是單個%字符的逃脫;你不能以其他方式使用的字符:

>>> '%s: %%' % 'One percent character' 
'One percent character: %' 

String Formatting Operations documention

%
不轉換參數,導致在結果的'%'字符。

通過去除一個%字符,形成%k格式,但沒有轉換類型k。錯誤信息反映:

>>> '%k' % 'No such format type' 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: unsupported format character 'k' (0x6b) at index 1