2011-08-09 205 views
4

我正在學習Python,耶!無論如何,我有一個小問題。我在這裏沒有看到問題:TypeError:無法連接'str'和'int'對象

x = 3 
y = 7 
z = 2 

print "I told to the Python, that the first variable is %d!" % x 
print "Anyway, 2nd and 3rd variables sum is %d. :)" % y + z 

但Python認爲不同 - TypeError: cannot concatenate 'str' and 'int' objects

這是爲什麼?我沒有將任何變量設置爲字符串......就像我看到的那樣。

+4

只要你知道,在當前版本的Python中進行字符串格式化的推薦方法是'str.format()'函數。 ''無論如何,第二和第三個變量的總和是{0}。:)「。format(y + z)'(在Python 2.7+中可以省略'0',在這種情況下佔位符只是'{}' ) – JAB

回答

13

%+的優先級高,所以s % y + z被解析爲(s % y) + z

如果s是一個字符串,然後s % x是一個字符串,和(s % y) + z嘗試添加一個字符串(的s % y的結果)和整數(的z的值)。

9

你需要把括號:(y+z)

+0

很酷,謝謝。爲什麼? :) – daGrevis

+5

如果不是蟒蛇認爲你正在做的( 「反正%d」 %Y)+ Z – carlosdc

+3

''%比'+'優先級高,所以'A%B + C'被解析爲'(A%B )+ c',而你想要的是'a%(b + c)' –

相關問題