Python程序设计-教案-单元八 异常_第1页
Python程序设计-教案-单元八 异常_第2页
Python程序设计-教案-单元八 异常_第3页
Python程序设计-教案-单元八 异常_第4页
Python程序设计-教案-单元八 异常_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

«Python程序设计》教案

单元八异常

课学内容初识异常

素质目标:

锻炼从全局视角看问题、客观辩证地思考和处理问题的科学思维方式.

知识目标:

教学目标理解异常的概念并熟悉Python中常见的异常.

能力目标:

能够在任务中掌握处理异常的几种方式。

教学重难教学重点:Python中的语法错误和异常的识别.

点教学难点:Pythan中的语法错误和异常的区别。

教学方法案例分析法、问答法、讨论法、讲授法、实训法

教学用具电脑、投影仪、多媒体课件、教材

课蒯^~*巡(2min)-11^热(10min)一|'嬲导入(5min30min)

教学设计

~*任务实施(15min)一组敷i习(15min)T果堂〃绍(3min)T乍业布置(2min)

教学设计意

主要教学内容及步骤

过程图

■【教师】布置课前任务,提醒同学通过学习软件,

通过课前任

完成课前任务

务,使学生了解

请大家自行搜集资料了解bug的概念,并且预习本任务需要的

课前任务本次课的重要

相关知识点.

性,增加学生的

■【学生】完成课前任务学习兴趣

■【教师】清点上课人数,记录好考勤培养学生的组

考勤

织纪律性,掌握

(2min)

■【学生】班干部交假条学生的出勤情况

■教【帅】与学生筒单与动,实习回做上次课的内容通过老师与学

等生的互动,并让

新课预热

学生了解这次课

(10min)■【学生】聆听、互动

的知识点大致要

■【教师】讲述本项目的作用和开设本项目的原因求

程序运行过程中,由于程序本身设计问题或外界环境改变而引

发的错误称为异常(即bug),如果这些异常得不到正确处理就会

导致程序终止运行,而合理地使用异常处理可以使得程序更加健

壮,并具有更强的容错性。本项目将详细介绍Python中异常的捕

获和处理方法。

■【教师】概括本次课总体学习内容,让学生大体了

解本次课学习内容

在编写和运行Python程序时,经常会遇到一些错误。Python

中有两种常见的错误:语法错误和异常。

■教【师】提出以下问题:

通过问题导入

(1)什么是语法错误?

的方法,引导学

问题导入

(2)什么是异常?生主动思考,激

(5min)

发学生的学习兴

■学【生】思考、举手回答

■教【师】通过学生的回答引入要讲的知识

一、语法错误

■教【师】讲解Python中的语法错误

语法错误也称为解析错误,在使用PyCharm编写代码时,如

果出现语法错误,会通过红色波浪线提示。常见的语法错误包括拼

写错误、缩进错误等不符合Python语法规范的错误。

■学【生】聆听、记录、理解

二、异常

■教【师】讲解Python中的异常

即使Python程序的语法是正确的,在运行时也有可能发生错

通过教师的讲

误,这种在运行期间检测到的错误称为异常。Python的异常分为解和演示,使学

传授新知

两种:一种是内置异常,在某些错误出现时会自动触发;另一种是生了解Python中

(30min)

用户自定义异常(洋见任务三),就是用户根据自己的需求设置的的语法错误和异

异常.常的使用

内置异常原因

TypcFrror不同类型的数据迸行运算麋作

ZcroDivisionbrror除数为0

NameError尝试访问一个未声明的变量

IndentaiionError缩进错误

IndexError索引超出序列的范围

KeyEror使用字典中不存在的键

ValueError传给函数的参数类型不正确

试图以只读模式打开一个不存

FilcNotFowndError

在的文件

AltribuleError尝试访问未知的对象屈性

SyntaxError语法错误

■【教师】带领学生完成任务一

小【教师】提出任务

在程序设计中,由于程序本身的错误会造成的功能不正常、体

验不佳、死机、数据丢失、非正常中断等异常现象,我们通常用术

语"bug”来描述.那么,为什么我们称异常为"bug"呢?如果程

序中出现了异常会带来哪些影响?我们应该如何避免异常?本任

务将带领大家通过学习异常概述和Pvthon中常见异常类来初识异

常.

■【学生】思考、讨论

一、bug的由来

Bug一词的原意是"昆虫"或"虫子";但是现在,在计算机

系统或程序中,隐藏着的一些未被发现的缺陷或问题.我们也叫它

"bug".

Bug的创始人格雷丝赫柏(GraceMurrayHopper),是一位为美

国海军工作的计算机专家,也是最早将人类语言融入计算机程序的

人之一。而代表计算机程序出错的"bug”这名字.正是由赫柏所

取。通过任务实施

任务实施Bug的等级可分为四个。环节,让学生将

(151级bug致命错误,通常表现为系统无法运行、崩溃或严重所学知识与实践

min)资源不足,应用模块无法启动或者异常退出,主要比能模块无法使相结合,培养学

用等。生的实操能力

2级bug严重错误,通常表现为影响系统功能或操作,主要

功能存在严重缺陷,但不会影响到系统稳定性.

3级bug一般错误,通常表现为界面、性能缺陷.比如:操

作界面错误;提示类错误;边界值错误;大数据操作时没有提供进

度等。

4级bug通常表现为:易用性及建议性问题。比如:产品的

易用性不够;界面不规范;产品说明不明确;提示信息错误;程序

在一些显示上不美观不符合用户习惯或者是一些文字的错误等。

二、异常带来的影响

有些软件中的异常(bug)或许只会引发小问题,但正是这些

看似不起眼的"小问题"却可能越积越多,最终引起程序不能运行、

出错等一系列的“大问题”;而有些软件中的异常(bug)则会直

接引发生命财产安全等大问题。

1994年在苏格兰,一架吉努克型直升飞机坠毁,29名乘客仝

部罹难.然而最初指责声都指向飞行员,但后来有证据表明,直升

飞机的系统错误才是罪魁祸首。另夕1次因软件而引发的飞行事故

发生在1993处.瑞典的一架JAS39鹰狮战斗机因飞行控制软件的

Bug而坠毁。

2000年美国一家名为MultidataSystemsInternational的公司,

癌症治疗规划软件按照数据输入的顺序来计算辐射的计量,错误的

计算了放射治疗中的辐射量,导致28位病人接受了过量的伽马辐

射,其中8人死亡,20人严重受伤。

可见,有些bug或许只会引发小毛病,但飞行控制系统软件

和医疗设备软件,还有其他和人命相关的软件,绝不应该出现因程

序异常问题,而给民众生命财产带来无端灾难的问题.所以,作为

初学者,我们要时刻提醒自己,不断检查,不断完善,发扬精益求

精的工匠精神,养成严谨的科学作风。

三、如何避免异常

程序设计过程中保证程序质量最好的方式是避免异常出现,预

防bug,具体体现为以下三个阶段。

程序编写前,首先明确需求,确保在需求分析阶段考虑全面,

满足单元的功能需求.

程序编写时,要考虑全面,在可能产生异常的代码位置进行异

常处理,并生成相应的错误报告.

程序编写完成后,要严格对程序或系统进行软件测试,蛉证软

件单元是否符合软件需求与设计。

■【学生】聆听、记录、理解

■【教师】布置任务

通过实操练习

PyCharm工具有没有处理bug的工具呢?

使学生】凡固所学

■在PyCharm知识,并以学生

实操练习

为主体,针对学

(15■【教师】巡堂辅导,及时解决学生遇到的问陋;安

生接受能力的差

min)排每组做得最快、最好的学生辅导其他学生进行操作,并

异性,让优秀学

解答其遇到的问题

生带动其他学生

■【学生】对比自己的结果,若结果有误,查找并记掌握知识

录原因

总结知识

■【教师】简要总结本节课的要点点,巩固学生

课堂小结异常一般是指程序运行时发生的错误,合理使用异常处理可以对Python中的

(3min)提高程序的容错性和健壮性。语法错误和异

常相关知识的

■【学生】总结回顾知识点

印象

■【教师】布置课后作业通过课后作业

作业布置复习巩固学到的

语法错误和异常的区别是什么?

(2min)知识,提高实际

■【学生】完成课后任务操作能力

本次课讲授的主要是Python中的语法错误和异常知识点,通

教学反思过知识点的学习和实践,让学生对Python中的语法错误和异常有

了更深入的了解。本次课程目的让学生了解什么是语法错误,什么

是异常,为以后处理这些问题做铺垫,通过这部分知识的学习,有

助于培养学生处理程序中遇到的错误的能力.

教学内容求解三角形面积

素质目标:

发扬精益求精的工匠精神,养成严谨的科学作风.

知识目标:

教学目标

掌握异常处理的几种结构的使用方法.

能力目标:

能够通过合理地使用异常处理来完成求解三角形面枳的任务.

教学重点:Python中try-except语句、多重except语句、try-excephelse语句、

(iy-cxucpt-finally语句的定义.

教学重难点

教学难点:Python中try-except语句、多重except语句、lry-cxccpl-clsc语句、

try-except-finally语句的使用.

教学方法案例分析法、问答法、讨论法、讲授法、实训法

教学用具电脑、投影仪、多媒体课件、教材

课前任务―考勒(2min)果预热(10inin)一问题导入(5inin)一传授新知(30min)

教学设计

f(15min)一习(15min)-蜡(3min)f乍业布置(2min)

设计意

教学过程主要教学内容及步骤

S

■【教师】布吉课前任务,提醒同学通过学习软件,

通过课前任

完成课前任务

务,使学生了解

请大家自行搜集资料研究“三斜求积术”,并且预习本任务需

课前任务本次课的重要

要的相关知识点.

性,增加学生的

■【学生】完成课前任务学习兴趣

■【教师】清点上课人数,记录好考勤培养学生的组

考勤

织纪律性,掌握

(2min)

■【学生】班干部交假条学牛的出勤情况

■教【师】与学生简单互动,复习回顾上次课的内容

■【学生】聆听、互动

■【教师】课外拓展通过老师与学

生的互动,并让

新课预热在程序运行的过程中,会出现很多猝不及防的异常,如果这些

学生了解这次课

(10min)异常得不到正确处理就会导致程序终止运行。因此,编写代码时,

的知识点大致要

在可能出现异常的位置进行处理,可以使得程序更加健壮,并具有

更强的容错性.同时,由于异常的类型很多,须尽量对所有可能出

现的异常进行处理.所以,需要用户全面地考虑问题,遂行多次测

田口调试.

Python提供了多种不同形式的异常处理结构,它们的基本思

路一致:运行代码,如果没有异常就正常执行,如果出现异常就捕

获和处理.

■教【师】提出以下问题:

(1)try-except语句是否接触过,能够根据英文含义猜出语句

含义?

(2)多重exceot语句是否接触过,能够根据英文含义猜出语

通过问题导入

句含义?

的方法,引导学

问题导入语句是否接触过,能够根据英文含义猜出

(3)try-except-else生主动思考,激

(5min)

语句含义?发学生的学习兴

(4)try-except-finally语句是否接触过,能够根据英文含义猜趣

出语句含义?

■学【生】思考、举手回答

■教【师】通过学生的回答引入要讲的知识

一、try-except语句

■【教师】讲解Python中的try-except语句

uyexcepi语句用于捕获和处理异常,其语法格式如下.

iry:

#可能会引发异常的代码块

exceptexception|asej:

#出现异常后执行的代码块

其中,exception为异常类名,1J为可选项,"ase"表示将异

常类的实例对象命名为3如果try子句中的代码块引发异常并被

except子句捕获,就执行except子句中的代码块;如果叮子句中

的代码块没有引发异常,就继续执行try-except语句后面的代码;

如果引发的异常没有被except子句捕获,程序将终止运行并输出

通过教师的讲

异常信息.

解和演示,使学

传授新知

■教【师】演示例8r程序生了解Python中

(30min)

的异常处理语句

■学【生】观察运行结果并讨论

的使用

■学【生】聆听、记录、理解

■教【师】强调以下问题

运行程序时,只要捕获到异常,程序就会执行except子句,

不会再执行try子句中未执行的语句。

■教【师】布苣题目

(1)有以下程序

try:

n=input(“请输入一个整数:“)

s=pow2<n)

print(s)

defpow2(n):

returnn*n

except:

print("程序执行错误”)

运行程序时输入1〈回车〉,输出结果是_________

■学【生】完成题目

■教【师】随机点名回答

二、多重except语句

■教【师】讲解Python中的多重except语句

在某些情况下,一个代码块可能引发多种异常,此时,可定义

多个except子句,每个except子句捕获一种类型的异常,其语法

格式如下.

iry:

#可能会引发异常的代码块

exceptexception1[ase]:

#处理异常类型1的代码块

exceptexception?[ase]:

#处理异常类型2的代码块

exceptexceptions[ase):

计处理异常类型3的代码块

当异常发生时,依次检查每一个except子句,并执行第一个

异常类型匹配的代码块,其他的except子句将不再捕获,程序继

续执行(ry-except语句后面的代码。

■教【师】演示例8-2和程例8-3序

■学【生】观察运行结果并讨论

■教【师】讲解程序(主要代码)

■学【生】聆听、记录、理解

■教【师】强调以下问题

也可使用一个except子句捕获多种异常.例如,同时捕获除

数为。和参数类型不正确异常,可以用下面代码实现.

except(ZeroDivisionError.ValueError):

print,出现异常)

当无法确定要对哪一种异常进行处理时,可在except子句中

不指定异常类型,此时程序将捕获所有异常。例如:

except:

print,出现异常,)

三、try-except-else语句

■【教师】讲解Python中的try-except-else语句

iry-excepi语句还有一个可选的else子句,如要使用该子句,

须将其放在所有except子句后。else子句将在try子句没有发生任

何异常时执行,其语法格式如下。

iry:

#可能会引发异常的代码块

exceptexception|ase):

#出现异常后执行的代码块

else:

#如果白,子句中的代码没有引发异常,则执行该代码块

■【教师】演示例8-4程序

■【学生】观察运行结果并讨论

■【教师】讲解程序(主要代码)

■【学生】聆听、记录、理解

■【教师】强调以下问题

建议在try子句中只添加真的可能引发异常的代码,将其余代

码添加到else子句中.

■【教师】布置题目

(1)以下程序的输出结果是

f="cest.txt"

Iry:

withopcn(f,"r")asfi:

forIneinfi:

print(line)

exceptFileNotFoundError:

print(f;文件不存在3

else:

print(f;文件有len(f.readlines()),'行,)

f.close()

■【学生】完成题目

■【教师】随机点名回答

四、try-except-finally语句

■【教师】讲解Python中的try-except-finally语

finally子句用于为异常处理提供一个统一的出口,无论try子

句中的代码是否引发异常,都会执行该子句。通常,finally子句用

于资源清理工作,如释放内存、关闭打开的文件、断开网络连接等,

其语法格式如下。

try:

#可能会引发异常的代码块

exceptexception|ase):

#出现异常后执行的代码块

finally:

#无论try子句中的代码是否引发异常,都会执行的代码

■教【师】演示例8-5程序

■学【生】观察运行结果并讨论

■教【师】讲解程序(主要代码)

■学【生】聆听、记录、理解

■教【师】强调以下问题

except子句中设置的异常类型为Exception时,由于Excepiion

类是Python内置异常类的基类,所以在不确定异常的类型时可以

这样使用。使用多重except语句时,except子句中的异常类型应先

子类后父类,否则捕获了父类的异常后就不会再捕获子类的异常

了。

Python异常处理中可以同时包含多个except子句、else子句和

finally子句。所有的except子句必须在else子句和finally子句之

前,else子句必须在finally子句之前,否则会出现语法错误。

■教【师】布置题目

(1)有以下程序

try:

a=flcat(input(请输入分子:,))

b=floai(:npui('请输入分母:,))

c=a/b

ifabs(c)>1:

priiu(“此分数为假分数”)

else:

print此分数为其分数”)

exceptZeroDi/isionError:

print(,分母不能为0!')

exceptValucError:

print。分子和分母应为数值类型「)

except:

print(•其他错误!')

else:

print(运行没有错误!1)

finally:

print(运行结束!,)

程序运行时输入2〈回车〉,3〈回车〉,则输出结果是

■学【生】完成题目

■教【师】随机点名回答

通过任务实施

任务实施■【教师】带领学生完成任务二

环节,让学生将

(15

小【教师】提出任务所学知识与实践

min)

中国是一个具有悠久历史的文明国家,数学作为中国古代科学相结合,培养学

的一门重要学科,取得了丰硕的成果,早在1247年,中国宋代的生的实操能力

数学家秦九韶就在《数书九章》中记述了"三斜求积术”,填补了

中国数学史中的一个空白。"三斜求积术"用现代公式表示,即三

角形三边长为a、b、c,那么面积是

I/4*sqrt|(a+b+c)(a+b-c)(a+c-b)(b+c-a)].

本任务将带领大家编写Python程序,利用Python中的异常处

理机制完成"根据输入的三角形三条边长计算三角形面积"的求解

问题.

■【学生】思考、讨论

一、进行任务分析:

完成本任务,需要抻捉可能存在的ValucError和IndcxError

等异常.

1.定义check_is」riangle()函数,对三角形三条边进行判断,

如果无法构成三角形,则引发ValueError异常.

2.由于任务中要求输入3个整数,所以如果输入的三条边不是

整数,会引发ValueError异常.

3.由于整数是3个,且用空格分隔,这时需要使用字符串的

split()函数将字符串用空格切割,然后放入列表中,如果整数不

是3个,当引用列表里的3个整数时,会引发IndeKError异常。

二、参考代码:

importmath

#定义函数,对三条边进行判断,如果无法构成三角形,则引

发ValueError异常.

defcheck_is_lriangle(a.b.c):

ifa<=0orb<=0orc<=0:

raiseValueError('无法构成三角形’)

ifa+b>canda+c>bandb+c>a:

pass

else:

raiseValucError('无法构成三角形')

if_name_=='_main_

whileTrue:

side=inpui(,请输入三角形的三条边长,以空格分隔,

输入q退出:')

if'q'=sidc:

break

sides=side.split()

iry:

a=int(sides[OJ)

b=int(sides|1])

c=int(sides[2J)

exceptIndexError:#捕捉IndexError异常

prini(请输入至少3个整数,)

exceptValucError:#捕捉ValueError异常

print。请输入整数)

else:

try:

check_is_triangle(a,b.c)

exceptValucError:#捕捉VaucError异常

print。无法构成三角形)

else:

s=l/4*math.sqrt(

(a+b+c)*(a+b-c)*(a+c-b)*(b

+c-a))

print(「三角形的面积是:{s}1)

三、代码运行

四、代码分析(主要代码):

■【学生】聆听、记录、理解

■【教师】布置任务

编写Python程序,利用Python中的异常处理机制完成"根据通过实操练习

输入的三角形三条边长求三角形面积"的求解问题。使学生巩固所学

知识,并以学生

实操练习■在PyCharm中输入代i骈查看迪福果

为主体,针对学

(15

■【教师】巡堂辅导,及时解决学生遇到的问题;安生接受能力的差

min)

排每组做得最快、最好的学生辅导其他学生进行操作,并异性,让优秀学

解答其遇到的问题生带动其他学生

掌握知识

■【学生】对比自己的绘制结果,若绘制有误,查找

并记录原因

■【教师】简要总结本节课的要点

(।)try-e>cept语句用于捕获异常,当try子句中的代码块引发总结知识点,

异常并被子句捕获时,就执行子句中的代码块.

exceptexcept巩固学生对

课堂小结(2)针对不同异常可设置多个except子句,也可对多个异常

Python中的异常

(3min)进行统一处理.

处理语句相关知

(3)在异常处理结构中,else子句中的代码在iry子句中的代

码没有引发异常时执行,而finally子句中的代码总会执行。识的印象

■【学生】总结回顾知识点

■【教师】布置课后作业

通过课后作业

作业布置编写程序,输入三角形三条边判断能否构成直角三角形,若复习巩固学到的

(2min)能构成则计算三角形的面积和周长,否则引发异常。知识,提高实际

操作能力

■【学生】完成课后任务

本次课讲授的主要是Python中的异常处理语句知识点,通过

知识点的学习和实践,让学生对Python中的异常处理语句有了更

教学反思深入的了解,提高了Python知识的掌握程度.通过“根据输入的

三角形三条边长求三角形面积”的求解问题,提高了学生的学习兴

趣,掌握了Python的具体应用,在设计过程中,对异常的处理有

了进一步认识,取得了不错的教学效果.在以后的教学中,重点关

注理论知识和实际应用的结合,使学生能够学有所用.

教学内容制作空气质量评级系统

素质目标:

强化环境保护意识,提升生态系统多样性、稳定性、持续性.

知识目标:

教学目标掌握raise和assert语句的使用方法.

掌握用户自定义异常的方法和使用。

能力目标:

能够诵过用户自定义异常制作空气质量评级系统.

教学重点:Pythan中raise语句、assen语句和自定义异常的使用。

教学重难点

教学难点:Python中会主动抛出bug并且会自定义bug.

教学方法案例分析法、问答法、讨论法、讲授法、实训法

教学用具电脑、投影仪、多媒体课件、教材

课前任^一考勒(2min)T6果预热(10min)一问题导入(5min)一传授新知(30inin)

教学设计

f(15min)一^|^^习(15min)—蜡(3min)f乍业布置(2min)

设计意

教学过程主要教学内容及步骤

S

■【教师】布置课前任务,提醒同学通过学习软件,

通过课前任

完成课前任务

务,使学生了解

请大家自行搜集资料了解处理异常的方法,并且预习本任务需

课前任务本次课的重要

要的相关知识点。

性,增加学生的

■【学生】完成课前任务学习兴趣

■【教师】清点上课人数,记录好考勤培养学生的组

考勤

织纪律性,掌握

(2min)

■【学生】班干部交假条学生的出勤情况

通过老师与学

■【教师】与学生简单互动,宸习回顾上次课的内容生的互动,并让

新课预热

等学生了解这次课

(10min)

■【学生】聆听、互动的知识点大致要

■【教师】提出以下问题:

(1)raise语句的作用是什么?通过问题导入

的方法,引导学

问题导入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论