《Python语言程序设计》——1.8 程序设计错误

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 假设你编写一个程序计算一个矩形的周长,而你写错了程序导致它计算成矩形的面积。这个错误是哪类错误?

时间: 2024-08-01 09:19:27

《Python语言程序设计》——1.8 程序设计错误的相关文章

《Python语言程序设计》—— 导读

前 言 本书假设你是一位先前没有任何程序设计经验的程序员新手.那么,什么是程序设计呢?程序设计是指使用程序设计语言编写程序以解决问题.不论你使用的是哪种程序设计语言,解决问题和程序设计的根本都是一致的.你可以使用任何一种像Python.Java.C++或C#这样的高级程序设计语言来学习程序设计.一旦知道如何使用其中一门语言编写程序,那么如何使用其他语言编写程序就很容易,因为编写程序的基本技能都是一样的. 那么,使用Python学习程序设计的优势在哪里呢?Python易于学习,且编程有趣.Pyth

《Python语言程序设计》——第一部分 程序设计基础 第1章计算机、程序和Python概述1.1 引言

第一部分 程序设计基础 第1章 计算机.程序和Python概述学习目标 演示对计算机硬件.程序和操作系统的基本理解(第1.2-1.4节). 描述Python的历史(第1.5节). 解释Python程序的基本语法(第1.6节). 编写和运行一个简单的Python程序(第1.6节). 解释恰当的程序设计风格和文档的重要性,并提供相应的实例(第1.7节). 解释语法错误.运行时错误和逻辑错误之间的区别(第1.8节). 使用Turtle创建一个基本的图形程序(第1.9节). 1.1 引言 关键点:本书的

《Python语言程序设计》——3.2 常见的Python函数

3.2 常见的Python函数 关键点:Python提供了许多有用的用于解决常见程序设计任务的函数. 函数是完成一个特殊任务的一组语句.Python语言和其他程序设计语言一样,都提供了一个函数库.你已经使用过eval.input.print和int函数.这些都是内置函数并且在Python解释器里均可用.所以使用这些函数你不用导入任何模块.除此之外,你还可以使用abs.max.min.pow和round等内置函数,如表3-1所示. 例如: 我们常常为解决数学问题创建一些程序.Python的math

《Python语言程序设计》——1.3 程序设计语言

1.3 程序设计语言 关键点:计算机程序,又称为软件,是告诉计算机要做什么的指令集. 计算机并不理解人类的语言,所以程序必须用计算机使用的语言来书写.现在有几百种程序设计语言,开发它们对人们来说可以让程序设计过程更加简单.但是,所有的程序必须被转换成计算机能够理解的语言.1.3.1 机器语言 计算机自己的语言(会因计算机的种类不同而有所不同)是它的机器语言--一套内嵌在计算机内的原始指令集.这些指令以二进制代码的形式存在,所以如果给计算机一条用它自己的语言编写的程序,必须输入二进制码的指令.例如

《Python语言程序设计》——2.15 本章总结

2.15 本章总结 可以使用input函数来获取输入,使用eval函数将字符串转化为数值. 标识符是程序中使用的元素的名字. 标识符是由任意长度的英文字母.数字.下划线( )和星号(*)构成的字符序列.标识符必须以英文字母.下划线( )开头,不能以数字开头.标识符不能是关键字. 在程序中变量用于存储数据. 等号(=)的作用是赋值运算符. 在使用一个变量前必须对它赋值. Python中有两种数值数据类型:整数和实数.整数型(简写为int)适用于整数,而实数型(又称浮点型)适用于有小数点的数字. P

C语言线程控制的程序设计

问题描述 C语言线程控制的程序设计 编写一个程开启3个线程,的ID分别为A.B.C每个线程将自己的ID在线程上打印出来10遍,要求输出结果按照ABC的顺序显示: 如:ABCABC....依次递推 解决方案 用一个互斥锁加三条件变量就好了啊,首先初始化时设置A条件,A执行打印后设置B条件,B执行打印后设置C条件,C执行打印后设置A条件这样循环......... 解决方案二: 这个题目的考察点是如何保护共用数据吧,给数据加好锁就OK了 解决方案三: 用3个互斥,在线程里等待条件成立,然后执行动作 解

《数据结构与算法:Python语言描述》一2.3类的定义和使用

2.3类的定义和使用 前面给出了两个有理数类的定义,帮助读者得到一些有关Python类机制的直观认识.本节将介绍Python类定义的进一步情况.本书中对类的使用比较规范,涉及的与Python类定义相关的机制不多,只需要有最基本的了解就可以学习后面内容.另一方面,本书的主题是数据结构和算法,并不计划全面完整地介绍Python语言的面向对象机制和各种使用技术.本节主要想给读者提供一些可参考的基本材料,因此,下面有关Python语言的相关介绍将限制在必要的范围内,供读者参考,不深入讨论.有关Pytho

《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

1.2 Python语言简介 本节将首先简单介绍Python语言的一些基本情况,包括其发展和使用的情况.而后介绍Python语言系统的安装和使用方面的基本常识.1.2.1 Python语言的发展和应用 Python语言是CWI(荷兰国家数学和计算机研究中心)的程序员Guido van Rossum在1989年开始开发的一种高级编程语言,当时的主要设计目标是希望能用于方便地管理CWI的Amoeba操作系统.后来,由于其各方面的优点而逐渐流行起来. Python语言现在由Python软件基金会(Py

《基于ArcGIS的Python编程秘笈(第2版)》——第1章 面向ArcGIS的Python语言基础

第1章 面向ArcGIS的Python语言基础 同其他编程语言一样,Python也支持多种类型的程序架构.本章主要介绍Python的基本语言架构.首先,介绍如何创建新的Python脚本及编辑已有的脚本:其次,介绍Python语言的特点,如添加注释.创建变量并赋值.创建内置变量等,以使Python的代码更加简单明了. 然后,介绍Python语言提供的各种内置数据类型,如字符串.数字.列表和字典等.类和对象是Python等面向对象编程语言的基本概念,在使用ArcGIS编写地理处理脚本时会经常用到它们

《数据结构与算法:Python语言描述》一3.3链接表

3.3链接表 本节考虑线性表的另一种实现技术. 3.3.1线性表的基本需要和链接表 回忆一下线性表的定义,它就是一些元素的序列,维持着元素之间的一种线性关系.实现线性表的基本需要是: 能够找到表中的首元素(无论直接或者间接,这件事通常很容易做到). 从表里的任一元素出发,可以找到它之后的下一个元素. 把表元素保存在连续的存储区里(顺序表),自然能满足这两个需求,其中元素间的顺序关联是隐含的.但是,要满足这两种需求,并不一定需要连续存储元素.显然,对象之间的链接也可以看作一种顺序关联,基于它也可以