本节书摘来自华章计算机《Python语言程序设计》一书中的第1章,第1.8节,作者:[美]梁勇(Y. Daniel Liang) 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.8 程序设计错误
关键点:程序设计错误可以分为三类:语法错误、运行时错误和逻辑错误。
1.8.1 语法错误
你会遇到的大多数常见错误都是语法错误。就像任何一种程序设计语言一样,Python也有自己的语法,你需要遵从语法规则编写代码。如果你的程序违反了这些规则——例如:忘写一个引号或者拼错一个单词——Python将会报告语法错误。
语法错误来自代码构建过程中的错误,例如:敲错了一条语句,不正确的缩进,忽略某些必需的标点符号,或者使用了左括号而忘了右括号。这些错误通常很容易被检测到,因为Python会告诉你这些错误在哪里以及是什么原因造成了这些错误。例如:下面的print语句有一个语法错误:
https://yqfile.alicdn.com/9a09cc644e1432d7308f1db223fa4defcb02257d.png
" >
字符串“Programming is fun”少了右引号。
提示:如果你不知道如何更正语法错误,将你的程序和课本中的相同例子一个字符一个字符地进行比较。在学习这门课程的前几周里,你可能要花很多时间找出语法错误。过一段时间之后,你将会熟悉Python语法并且能够快速地找出语法错误。
1.8.2 运行时错误
运行时错误是导致程序意外终止的错误。在程序运行过程中,如果Python解释器检测到一个不可能执行的操作,就会出现运行时错误。输入错误是典型的运行时错误。当用户输入一个程序无法处理的值时,就会出现输入错误。例如:如果程序希望读取一个数字,而用户输入了一个文本字符串,这就导致程序中出现数据类型错误。
另一个常见的运行时错误是被0除。当整数除法的除数为零时就会发生运行时错误。例如:下面语句中的表达式1/0就会导致一个运行时错误。
1.8.3 逻辑错误
当程序不能实现它原来打算要完成的任务时就会导致逻辑错误。发生这种类型的错误的原因有很多种。例如:假设你编写程序清单1-4中的程序,这个程序将华氏温度(35度)转换成摄氏温度。
程序清单1-4 ShowLogicErrors.py
你可以得到摄氏-12.55度,但这是错的,它应该是1.66。为了获取正确的结果,需要在表达式中使用5 / 9 (35 - 32)而不是5 / 9 35 - 32。也就是说,需要添加圆括号括住(35 - 32),这样,Python会在做除法之前首先计算这个表达式。
在Python中,语法错误事实上是被当作运行时错误来处理,因为程序执行时它们会被解释器检测出来。通常,语法错误和运行时错误都很容易找出并且易于更正,因为Python给出提示信息以便找出错误来自哪里以及为什么它们是错的,而查找逻辑错误则非常具有挑战性。
检查点
1.32 三种程序错误是什么?
1.33 如果忘记在字符串后面加右引号,将会产生什么错误?
1.34 如果程序需要从文件中读取数据,但是这个文件并不存在,那么当你运行这个程序时就会导致错误。这个错误是哪类错误?
1.35 假设你编写一个程序计算一个矩形的周长,而你写错了程序导致它计算成矩形的面积。这个错误是哪类错误?