从本实例学到什么
- 数据类型错误是怎么回事
- 如何把整数转换为字符串
- 学会阅读错误报告
实例程序代码
#例2-4-3 类型错误
age = 23
message = "Happy " + age + "rd Birthday!"
print(message)
score = 98.5
print("your score: " + score)
运行例2-4-3,将见到以下错误报告:
Traceback (most recent call last):
File “C:/Users/612226/PycharmProjects/pythonSamples/tutorialExamples/chap02/2-4-3-类型错误.py”, line 3, in module
message = “Happy ” + age + “rd Birthday!”
TypeError: Can’t convert ‘int’ object to str implicitly
学会阅读错误报告
Python程序写多了,你终究会遇到如上所示的错误报告。尽管错误报告是用英文写的,你耐点心就能读懂了。
针对上面的错误报告,我们逐行解读。
- 错误报告第1行,“Traceback (most recent call last):”,意思是“回溯(最近的调用列在最后)”。下面就列出具体的错误信息。
- 错误报告第2行,File “……/chap02/2-4-3-类型错误.py”,指出发生错误的文件是“2-4-3-类型错误.py”。”line 3”指出错误发生在第3行。注意,如果你在自己电脑中运行程序,那么File之后的文件路径是代码文件在你的电脑中的路径。
- 错误报告第3行,列出发生错误的语句。
- 错误报告第4行,指出错误类型。TypeError是类型错误。具体的错误信息是“Can’t convert ‘int’ object to str implicitly”,意思是“无法隐式地把int型对象转换为字符串对象”。
可见,错误发生在第3行代码,是一个类型错误:无法隐式地把int型对象转换为字符串对象。这样,你应该能很快推断出“+ age”有问题。
想要进一步理解“Traceback (most recent call last)”的意思,参阅“python Traceback (most recent call last) 错误信息”这篇博文。“Python3 错误和异常”这篇文章列出了常见的错误类型。
修正错误
针对上面报告的错误,修改的做法是,把第3行代码改为:
message = “Happy ” + str(age) + “rd Birthday!”
str(age)的作用是,调用str函数,传入整数age,返回字符串形式的数字。比如,传入23,返回”23”。
做了以上修正后,再次运行程序,有以下输出:
Traceback (most recent call last):
Happy 23rd Birthday!
File “C:/Users/612226/PycharmProjects/pythonSamples/tutorialExamples/chap02/2-4-3-类型错误.py”, line 7, in
print(“your score: ” + score)
TypeError: Can’t convert ‘float’ object to str implicitly
以上错误信息的第2行,正是第3行代码输出的内容,不属于错误报告的一部分。
请你自己解读以上错误信息,然后修正错误。
小结
- 本实例表明,“字符串 + 整数”会发生类型错误。正确的用法是“字符串 + str(整数)”。类似地,“字符串 + 浮点数”也会发生类型错误。正确的用法是“字符串 + str(浮点数)”。
- 今后运行程序时见到错误报告,你一定要耐心读一读。一开始可能有点小障碍,多试几次就可以了。要成为编程高手,你必须学会读英文的错误报告。
- 遇到疑惑,多上网搜索。你的问题,多半有解答。