Python中拼接字符串和数字时报错如何处理

Python拼接字符串和数字时会报错, 代码如下

import os
import sys

str = 'Python学科的分数为:'
score = 90
print str + str(score) + '分'

执行结果:
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/Python_Demo/filedemo.py", line 9, in <module>
    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
print str + bytes(score) + '分'
如果将字符串加u转换为unicode字符后,会报另外一个错误
代码如下:
import os
import sys

result = u'Python学科的分数为:'
score = 90
print result + bytes(score) + '分'

执行结果:
Traceback (most recent call last):
  File "C:/Users/Administrator/PycharmProjects/Python_Demo/filedemo.py", line 8, in <module>
    print result + bytes(score) + '分'
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)
问题分析:
原因就是python的str默认是ascii编码,和unicode编码冲突,就会报这个标题错误
解决方法:
import os
import sys

reload(sys)
sys.setdefaultencoding('utf-8')
result = u'Python学科的分数为:'
score = 90
print result + bytes(score) + '分'

对需要 str->unicode 的代码,可以在前边写上

import sys

reload(sys)

sys.setdefaultencoding('utf8')

把 str 编码由 ascii 改为 utf8 (或 gb18030)

参考文献:

https://blog.csdn.net/zhangchaoy/article/details/51150634

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值