Python入门100个实例(17)——数据类型错误

从本实例学到什么

  1. 数据类型错误是怎么回事
  2. 如何把整数转换为字符串
  3. 学会阅读错误报告

实例程序代码

#例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. 错误报告第1行,“Traceback (most recent call last):”,意思是“回溯(最近的调用列在最后)”。下面就列出具体的错误信息。
  2. 错误报告第2行,File “……/chap02/2-4-3-类型错误.py”,指出发生错误的文件是“2-4-3-类型错误.py”。”line 3”指出错误发生在第3行。注意,如果你在自己电脑中运行程序,那么File之后的文件路径是代码文件在你的电脑中的路径。
  3. 错误报告第3行,列出发生错误的语句。
  4. 错误报告第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行代码输出的内容,不属于错误报告的一部分。
请你自己解读以上错误信息,然后修正错误。

小结

  1. 本实例表明,“字符串 + 整数”会发生类型错误。正确的用法是“字符串 + str(整数)”。类似地,“字符串 + 浮点数”也会发生类型错误。正确的用法是“字符串 + str(浮点数)”。
  2. 今后运行程序时见到错误报告,你一定要耐心读一读。一开始可能有点小障碍,多试几次就可以了。要成为编程高手,你必须学会读英文的错误报告。
  3. 遇到疑惑,多上网搜索。你的问题,多半有解答。

猜你喜欢

转载自blog.csdn.net/yedouble/article/details/81187314