原創by南山南北秋悲
歡迎引用!請注明原地址:http://www.cnblogs.com/hwd9654/p/5676746.html 謝謝!
TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
打印變量時遇到的問題,
想着c語言中printf("%s", 變量名)
python中 應該也是類似的語句
果斷百度,發現是通過語句后附加一個%(變量名)來解決的
詳細如下:
print
語句可以使用跟着%
符號的項目元組的字符串。這些字符串具備定制的功能。定制讓輸出滿足某種特定的格式。定制可以是%s
表示字符串或%d
表示整數。元組必須按照相同的順序來對應這些定制。
觀察我們使用的第一個元組,我們首先使用%s
,這對應變量name
,它是元組中的第一個項目。而第二個定制是%d
,它對應元組的第二個項目age
。
Python在這里所做的是把元組中的每個項目轉換成字符串並且用字符串的值替換定制的位置。因此%s
被替換為變量name
的值,依此類推。
print
的這個用法使得編寫輸出變得極其簡單,它避免了許多字符串操作。它也避免了我們一直以來使用的逗號。
在大多數時候,你可以只使用%s
定制,而讓Python來提你處理剩余的事情。這種方法對數同樣奏效。然而,你可能希望使用正確的定制,從而可以避免多一層的檢驗程序是否正確。
在第二個print
語句中,我們使用了一個定制,后面跟着%
符號后的單個項目——沒有圓括號。這只在字符串中只有一個定制的時候有效。
例子:
age =
22
name =
'Swaroop'
print
'%s is %d years old'
% (name, age)
print
'Why is %s playing with that python?'
% name
結果:
Swaroop is 22 years old
Why is Swaroop playing with that python?
可是我自己編程的時候卻遇到了上述問題:TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple'
語句如下:
a = 'Peter'
b = 'Linda'
print("who is the murder? %s or %s?") % (a, b)
后來才發現,python3.x與python2.x有一點區別,
原來%(變量名,...)應該是加在print括號里的
如:print("who is the murder? %s or %s" % (a, b))
改完以后輸出正常: