Python中拼接字串和數字時報錯如何處理

2021-07-11 04:52:34 字數 2413 閱讀 8828

python拼接字串和數字時會報錯, **如下

importos

importsys

str ='python學科的分數為:'score = 90

printstr + str(score) +'分'

執行結果:
traceback (most recent call last):

file "c:/users/administrator/pycharmprojects/python_demo/filedemo.py", line 9, in print str + str(score) + '分'

typeerror: 'str' object is not callable

或者直接報: 

typeerror: cannot concatenate 'str' and 'int' objects

問題分析
有兩種常見錯誤
1. 當一般內部函式被用作變數名後可能出現此錯誤。比如:

range=1

for i in range(0,1):

這樣的錯會報在for行,但是時間引起的原因卻是在range=1這行,如果兩行相距較遠,怎很難被發現。所以要特別注意不要用內部已有的變數和函式名作自定義變數名。
2. 或者str被預先定義了
str=10

for i in range(1,10):

print str(i)

解決方法:
只有提前把num轉換為字串型別,可以使用bytes函式把int型轉換為string型。
str ='python學科的分數為:'score = 90

printstr + bytes(score) +'分'

如果將字串加u轉換為unicode字元後,會報另外乙個錯誤
**如下:
importos

importsys

result =u'python學科的分數為:'score = 90

printresult + bytes(score) +'分'

執行結果:
traceback (most recent call last):

file "c:/users/administrator/pycharmprojects/python_demo/filedemo.py", line 8, in

print result + bytes(score) + '分'

unicodedecodeerror: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

問題分析
原因就是python的str預設是ascii編碼,和unicode編碼衝突,就會報這個標題錯誤
解決方法:
importos

importsys

reload(sys)

sys.setdefaultencoding('utf-8')

result =u'python學科的分數為:'score = 90

printresult + bytes(score) +'分'

對需要 str->unicode 的**,可以在前邊寫上

import sys

reload(sys)

sys.setdefaultencoding('utf8')

把 str 編碼由 ascii 改為 utf8 (或 gb18030)

python實現字串和數字拼接

如下所示 將i前面加str i 就可以了 補充拓展 python 連線字串和數字 python 連線字串和數字的問題 首先要說的是,python是強型別的語言,如果你把乙個字串和數字直接做連線的操作的話,會報錯 typeerror must程式設計客棧 be stwww.cppcns.comr,no...

MySQL中字串和數字拼接

select from qa employ where employ group 2 原先僱傭表中所有僱傭姓名全部是 張三 希望將雇用姓名變得不一樣,比如張三 id sqlserver中直接用 update qa employ set employ name employ name employ i...

C 字串和數字拼接

string str1 str1 9 string str2 str2 9.tostring 我們先看第一行 的il 我直接截圖 可以看出 第一行 的 str1 9在執行是 會完成一次裝箱行為 il 中的box 我們再看第二行 的il 而第二行 種的9.tostring 並沒有發生裝箱行為 它實際呼...