Python实验报告(第9章)
实验9:异常处理及程序调试
一、实验目的和要求
1、了解代码异常知识;
2、掌握异常处理的try…except语句、try…except…else语句、try…except…finally语句。raise语句;
3、掌握程序调试的方法。
二、实验环境
软件版本:Python 3.10 64_bit
三、实验过程
1、实例01:模拟幼儿园分苹果
(1)在IDLE中创建一个名称为division_apple.py的文件,然后在该文件中定义一个模拟分苹果的函数division(),在该函数中,要求输入苹果的数量和小朋友的数量,然后应用除法算式计算分配结果,最后调用division()函数,代码如下:
1 def division():
2 '''功能:分苹果'''
3 print("\n===================== 分苹果了 =====================\n")
4 apple = int(input("请输入苹果的个数:")) #输入苹果的数量
5 children = int(input("请输入来了几个小朋友:"))
6 result = apple // children #/除法,有余数 //除法,向下取整 #用变量名计算要注意数据类型
7 remain = apple - result * children #计算余下几个苹果
8 if remain > 0:
9 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",
10 result,"个,剩下",remain,"个。")
11 else:
12 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
13 if __name__ == '__main__':
14 division() #调用分苹果的函数
(2)运行结果:
1.输入苹果和小朋友数量都是10时,运行结果如下:

2.当小朋友数目为0时,抛出异常:

2、实例02:模拟幼儿园分苹果(除数不能为0)
(1)在IDLE中创建一个名称为division_apple_0.py的文件,然后将实例01的代码全部复制到该文件中,并且对“if__name__=='__name__':”,语句下面的代码进行修改,应用try…except语句捕获执行division()函数可能抛出的ZeroDivisionError(除数为零)异常,修改后的代码如下:
1 def division():
2 '''功能:分苹果'''
3 print("\n===================== 分苹果了 =====================\n")
4 apple = int(input("请输入苹果的个数:")) #输入苹果的数量
5 children = int(input("请输入来了几个小朋友:"))
6 result = apple // children
7 remain = apple - result * children
8 if remain > 0:
9 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",
10 result,"个,剩下",remain,"个。")
11 else:
12 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
13 if __name__=='__main__':
14 try: #捕获异常
15 division() #调用division()函数
16 except ZeroDivisionError: #处理异常语句
17 print("\n出错了 ~-~—苹果不能被0个小朋友平分!")
(2)运行结果:
1.当输入的小朋友数量为0时,不再抛出异常:

2.当输入的苹果数量不是整数时(有人分到的苹果不是整数):

3、实例03:模拟幼儿园分苹果(每个人至少分到一个苹果)
(1)在IDLE中创建一个名称为division_apple_1.py的文件,然后将实例02的代码全部复制到该文件中,并且在第5行代码“children = int(input("请输入来了几个小朋友:"))”的下方添加一个if语句,实现当苹果的数量小于小朋友的数量时,应用raise语句抛出一个ValueError异常,接下来再在最后一行语句的下方添加except语句处理ValueError异常,修改后的代码如下:
1 def division():
2 '''功能:分苹果'''
3 print("\n===================== 分苹果了 =====================\n")
4 apple = int(input("请输入苹果的个数:")) #输入苹果的数量
5 children = int(input("请输入来了几个小朋友:"))
6 if apple < children: #苹果不够分,抛出异常语句
7 raise ValueError("苹果太少了,不够分…")
8 result = apple // children
9 remain = apple - result * children
10 if remain > 0:
11 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",
12 result,"个,剩下",remain,"个。")
13 else:
14 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
15 if __name__=='__main__':
16 try: #捕获异常
17 division() #调用division()函数
18 except ZeroDivisionError: #处理异常语句
19 print("\n出错了 ~-~—苹果不能被0个小朋友平分!")
20 except ValueError as e:
21 print("\n出错了 ~-~—",e)
(2)运行结果如下(输出苹果的数量为5,小朋友的数量为10):

4、实例04:模拟幼儿园分苹果(应用断言调试)
(1)在IDLE中创建一个名称为division_apple_dug.py的文件,然后将实例01的代码全部复制到该文件中,并且在第5行代码“children = int(input("请输入来了几个小朋友:"))”的下方添加一个assert语句,验证苹果的数量是否小于小朋友的数量,修改后的代码如下:
1 def division():
2 '''功能:分苹果'''
3 print("\n===================== 分苹果了 =====================\n")
4 apple = int(input("请输入苹果的个数:")) #输入苹果的数量
5 children = int(input("请输入来了几个小朋友:"))
6 assert apple >= children ,"苹果不够分" #应用断言调试
7 result = apple // children
8 remain = apple - result * children
9 if remain > 0:
10 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",
11 result,"个,剩下",remain,"个。")
12 else:
13 print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
14 if __name__=='__main__':
15 division() #调用division()函数
(2)运行结果如下:
1.输入苹果数量为5,小朋友数量为10:

2.将assert语句和异常处理语句结合使用,可将第15行修改为以下内容(运行结果如下):
1 try:
2 division() #调用division()函数
3 except AssertionError as e: #处理AssertionError异常
4 print("\n输入有误:",e)
5

Python实验报告(第9章)的更多相关文章
- Python实验报告——第4章 序列的应用
实验报告 [实验目的] 1.掌握python中序列及序列的常用操作. 2.根据实际需要选择使用合适的序列类型. [实验条件] 1.PC机或者远程编程环境. [实验内容] 1.完成第四章 序列的应用 实 ...
- Python实验报告——第3章 流程控制语句
实验报告 [实验目的] 1.掌握python中流程控制语句的使用,并能够应用到实际开发中. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第三章流程控制语句实例01-09,实战一到实 ...
- Python实验报告——第2章 Python语言基础
实验报告 [实验目的] 1.熟悉在线编程平台. 2.掌握基本的 python 程序编写.编译与运行程序的方法. [实验条件] 1.PC机或者远程编程环境 [实验内容] 1.完成第二章实例01-07,实 ...
- python实验报告(第11章)
实验11:使用Python操作数据库 一.实验目的和要求 1.学会数据库编程接口: 2.学会使用SQLite: 3.学会使用MySQL. 二.实验环境 软件版本:Python 3.10 64_bit ...
- python实验报告(第12章)
实验12:GUI界面编程 一.实验目的和要求 1.学会应用常用控件: 2.学会使用BoxSizer布局: 3.学会事件处理. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 ...
- Python实验报告(第8章)
实验8:模块 一.实验目的和要求 1.了解模块的内容: 2.掌握模块的创建和导入方式: 3.了解包结构的创建和使用. 二.实验环境 软件版本:Python 3.10 64_bit 三.实验过程 1.实 ...
- Python实验报告(第13章)
实验13:Pygame游戏编程 一.实验目的和要求 学会Pygame的基本应用 二.Pygame的优点及应用 使用Python进行游戏开发的首选模块就是Pygame,专为电子游戏设计(包括图像.声音) ...
- Python实验报告(第10章)
实验10:文件及目录操作 一.实验目的和要求 1.掌握基本文件操作(创建.打开.关闭.写入): 2.掌握目录操作的基本操作(创建.删除.遍历): 3.了解高级文件操作(删除文件.获取文件基本信息). ...
- Python实验报告(第6章)
实验6:函数 一.实验目的和要求 1.掌握函数的创建和调用: 2.了解不同的参数如何进行传递: 3.了解返回值的应用: 4.学习变量的作用域: 5.学习匿名函数(lambda). 二.实验环境 软件版 ...
随机推荐
- scss的使用方法
引用scss文件--看上一篇的less使用,里面的Koala,一样的原理!!! 方法一: scss: /**定义变量 */$width:404px;$color:green;$font-size:20 ...
- 个人音乐博客 h5、css和js等
浅说一下吧 这个小项目由h5和css还有js和jq写的 主题内容为个人音乐 博客等 首页一级导航栏 以及侧边栏 整合部分图标(侧边栏未添加收起操作 时间原因 会的朋友们可以自行添加一个动画就可以 在m ...
- N32G4系列——复用功能重映射(USART为例)
开发测试环境:SDK,N32G455x系列芯片 在国民MCU中G系列IO口有第二复用功能,这时需要用到重映射功能. 一.系列芯片手册定义 1.1.芯片IO口默认功能查看 如图,在该系列芯片的数据手册中 ...
- 初识vue3.0
vue3.0 源码组织方式的变化 采用ts重写 独立的功能模块提取到单独的包中 90%的api兼容Vue2.x Composition API 组合api 解决vue2.x options api 开 ...
- Substring 在BCL和CLR里面搞了啥
楔子 还是做点事情,不要那么散漫. 本文以简单的Substring(int startindex,int Length)函数为例,来递进下它在托管和非托管的一些行为. 以下均为个人理解,如有疏漏请指正 ...
- JIRA操作之JQL
搜索功能 Jira的搜索功能非常强大,有专用的搜索语言JQL(Jira Query Language).Jira的Python库是基于JQL语法搜索的,返回的是搜索到的问题列表. jira.searc ...
- Day11.2:标签的使用
标签的使用 当我们在嵌套语句中,例如当我们在for的嵌套循环语句中,想要终止或重新开始当前循环以外的循环的时候,单独仅靠break和continue和还不够,需要在我们想要作用的循环语句处加上一个标签 ...
- Apache ShenYu 集成 RocketMQ 实时采集海量日志的实践
本文作者:胡泰室, 快手Java开发工程师. 认识Apache ShenYu(神禹) 网关最重要的是流量治理,而流量治理与大禹治水有很多相似的地方,因此,网关的流量治理项目被命名为神禹. Shen ...
- 在 Tomcat 10.x 上部署 SpringMVC 5.x
在Tomcat10.x 上部署 SpringMVC 5.x的时候,项目一直无法访问 运行截图 原因 Tomcat10基于Jakarta EE 9,其中api的包名已经从javax更改到jakarat ...
- fuzor2020安装教程
fuzor下载安装包fuzor2020安装教程Fuzor2020 WIN10 64位安装步骤:1.先使用"百度网盘客户端"下载Fur20_CN_x64安装包到电脑磁盘里,并鼠标右击 ...