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). 二.实验环境 软件版 ...
随机推荐
- 洛谷P2865 [USACO06NOV]Roadblocks G(次短路)
一个次短路的问题,可以套用dijkstra求最短路的方法,用dis[0][i]表示最短路:dis[1][i]表示次短路,优先队列中存有最短路和次短路,然后每次找到一条道路对他进行判断,更新最短或次短路 ...
- C++运算符重载(简单易懂)
转载:https://www.cnblogs.com/liuchenxu123/p/12538623.html 运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型. 你 ...
- Hbase创建表参数说明
Hbase创建表操作及参数说明 1.创建命名空间 create_namespace 'test' 2.创建user表,列族:info create 'test:user', 'info' 3.查看表结 ...
- 8.RabbitMQ系列之RPC
1. RPC Remote Procedure Call:远程过程调用,一次远程过程调用的流程即客户端发送一个请求到服务端,服务端根据请求信息进行处理后返回响应信息,客户端收到响应信息后结束 2. C ...
- logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
文章目录 1.xml文件的编写 2.实现的效果 2.1 日志保存到磁盘 2.2 控制台输出的效果 放置的位置 1.xml文件的编写 logback-spring.xml <?xml versio ...
- CUDA/CUDNN下载安装以及适配pytorch和tensorflow
CUDA以及CUDNN下载安装 在https://developer.nvidia.com/cuda-toolkit-archive可以找到各个版本的cuda,个人建议下载cuda11.0(也就是2年 ...
- centos7离线安装PHP7
环境 centos7.9 PHP7.4.30 准备工作 在编译PHP时会提示一些包版本不够或者缺少某些包,一般选择yum来安装缺少的包,但因为是离线安装,所以可以手动配置本地yum源.先看一下系统版本 ...
- mitmproxy抓包工具
中文官网 https://ptorch.com/docs/10/mitmproxy-concepts-options mitmproxy抓包工具 1. mitmproxy 介绍与安装 需要安装pyth ...
- 检测轮廓 获取其最值的坐标 opencv-python
一.基础知识 图像清晰度评价算法有多种 空域中,主要考察图像的邻域对比度,即相邻像素间灰度特征的 梯度差: 频域中,主要考察图像的频率分量,清晰的图像高频分量多,模糊的图像低频分量多. 灰度值 把白色 ...
- 46.drf过滤、搜索、排序
DRF的过滤类 drf过滤器在filters模块中,主要有四个类 BaseFilterBackend:过滤基类,留好占位方法待后续继承 SearchFilter:继承BaseFilterBackend ...