2016-11-22 70 views
0

假設我有一個Python print聲明給出:異常在蟒紋聲明

print "components required to explain 50% variance : %d" % (count) 

這種結給人一個ValuError,但如果我有這個print聲明:

print "components required to explain 50% variance" 

爲什麼這發生了嗎?

+1

「打印」組件需要解釋50 %%方差:%d「%(count)' – styvane

+0

'.format'更復雜,只是一個提示 –

回答

7

的錯誤信息是非常有益的位置:

>>> count = 10 
>>> print "components required to explain 50% variance : %d" % (count) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: unsupported format character 'v' (0x76) at index 35 

所以Python看到% v並認爲它是一種格式的代碼。但是,v不是受支持的格式字符,因此會引發錯誤。

修復程序一旦知道它就很明顯 - 您需要轉義不屬於格式代碼的%。你是怎樣做的?通過添加另一個%

>>> print "components required to explain 50%% variance : %d" % (count) 
components required to explain 50% variance : 10 

注意,你也可以使用.format這是在很多情況下更方便,功能強大:

>>> print "components required to explain 50% variance : {:d}".format(count) 
components required to explain 50% variance : 10 
4

%運營商,應用到字符串,執行一個替代字符串中的每個'%'。 '50%'沒有指定有效的替換;只需在字符串中包含百分號,就必須加倍。