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). 二.实验环境 软件版 ...
随机推荐
- 220403 考试爆炸记 (T1T2)
T1 最大约数和 先放一下我考时的代码.(没想到能A过洛谷的数据,可能是洛谷的数据有点弱) #include<bits/stdc++.h> using namespace std; int ...
- linux基础总结
linux的特点 - 免费的/开源 - 支持多线程/多用户 - 安全性好 - 对内存和文件管理优越 关机命令 shutdown -h now(立即进行关机 ...
- UML类中的6种关系
最近现看Java设计模式,但是越看越不明白,一直搞不明白类与类之前的关系有哪些,通过几天的学习与整理通过代码实现的UML画图的方式理解类之间的相互关系. 一.类与类6大关系: 泛化(generaliz ...
- 编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
文章目录 1.测试结果: 2.结果计算页面 3.错误处理页面 1.测试结果: 2.结果计算页面 <%@ page language="java" contentType=&q ...
- vue2 解决跨域
vue2.x 解决跨域 通过devServer将接口代理到本地在开发的时候,需要请求同局域网内的接口,发现直接使用http://对方的ip地址/接口路径,会出现类似下图的跨域报错 找到并打开vue.c ...
- Oracle设置内存参数后,启动数据库报ORA-00843 ORA-00849解决办法
Oracle安装完成后,调优内存参数(MEMORY_TARGET和MEMORY_MAX_TARGET设置为0),重启数据库,报ORA-00843 ORA-00849错误. 根据提示,不应将MEMORY ...
- 重新整理 .net core 实践篇 ———— dotnet-dump [外篇]
前言 本文的上一篇为: https://www.cnblogs.com/aoximin/p/16861797.html 该文为dotnet-dump 和 procdump 的实战介绍一下. 正文 现在 ...
- Redis管理及监控工具推荐
推荐一款Redis管理软件.[官网 http://www.redisant.cn/] 功能描述: 1. 键和字段CRUD和glob. 2. 适用于字符串.列表.散列.集合.有序集合. 通过漂亮的用户界 ...
- CSP2022-J/S 游记
Day -2147483648 初赛 J组: 水. 单选没啥好说的,那道联通的傻掉挂了 \(2\). 读程 \(T1\) 手搓,\(T2\) 找规律(判断第一题蒙的,懒得算),\(T3\) 没注意 \ ...
- jmeter分布式压测对master、slave防火墙配置
首先要了解jmeter分布式压测的基础概念:master为统计结果的服务器,slave为各台压力机,如下图所示 一.结论 针对master 1.修改jmeter.properties的client.r ...