Python实验报告——第9章 异常处理及程序调试
实验报告
【实验目的】
1.掌握如何使用异常处理语句捕获和抛出异常。
2.掌握如何使用自带的IDLE工具和断言语句进行调试。
【实验条件】
1.PC机或者远程编程环境。
【实验内容】
1.完成第久章 异常处理及程序调试 实例01-04
实例01:模拟幼儿园分苹果
在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, "个小朋友,每人分", result, "个。")
10 else:
11 print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
12
13 if __name__ == '__main__':
14 division()
运行结果如下:
实例02:模拟幼儿园分苹果(除数不能为0)
在IDLE中创建一个名称为division apple _0.py 的文件,然后将实例01的代码全部复制到该文件中,并且对“if _name_==' main_':”语句下面的代码进行修改,应用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, "个小朋友,每人分", result, "个。")
10 else:
11 print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
12
13 if __name__ == '__main__':
14 try:
15 division()
16 except ZeroDivisionError:
17 print("\n出错了~_~ —— 苹果不能被0个小朋友分!")
运行结果如下:
实例03:模拟幼儿园分苹果(每个人至少分到一个苹果)
在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("苹果太少了,不够分...") #抛出异常(reason)
8 result = apple // children
9 remain = apple - result*children #计算余下苹果
10 if remain > 0:
11 print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
12 else:
13 print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
14
15 if __name__ == '__main__':
16 try:
17 division()
18 except ZeroDivisionError:
19 print("\n出错了~_~ —— 苹果不能被0个小朋友分!")
20 except ValueError as e:
21 print("\n出错了 ~_~ ——", e)
运行结果如下:
实例04:模拟幼儿园分苹果(应用断言调试)
在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, "个小朋友,每人分", result, "个。")
11 else:
12 print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
13
14 if __name__ == '__main__':
15 division()
运行结果如下: