第9章 异常处理及程序调试
1、实验目的和要求
(1)了解并掌握异常的概念
(2)了解并掌握异常处理语句:try...except语句、try...except...else语句、try...except...finally语句、使用raise语句抛出异常。
(3)了解并掌握程序调试的用法。
2、实验环境
笔记本与Python书本
3、实验过程
实例01 模拟幼儿园分苹果
步骤:在IDLE中创建一个名称为division_apple.py的文件,然后在该文件中定义一个模拟分苹果的函数division(),在该函数中,要求输入苹果的数量和小朋友的数量,然后应用除法算式计算分配的结果,最后调用division()函数
def division():
'''功能:分苹果'''
print("\n=================== 分苹果了 ===============\n")
apple = int(input("请输入苹果的个数:"))
children = int(input("请输入来了几个小朋友:"))
result = apple//children
remain =apple-result*children
if remain>0:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个,剩下",remain,"个。")
else:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
if __name__=='__main__':
division()
实例02 模拟幼儿园分苹果(除数不能为0)
步骤:在IDLE中创建一个名称为division_apple_0.py的文件,然后将实例01的代码全部复制到该文件中,并且对“if __name__=='__main__':”语句下面的代码进行修改,应用try...except语句捕获执行division()函数可能抛出的ZeroDivisionError(除数为零)异常
def division():
'''功能:分苹果'''
print("\n=================== 分苹果了 ===============\n")
apple = int(input("请输入苹果的个数:"))
children = int(input("请输入来了几个小朋友:"))
result = apple//children
remain =apple-result*children
if remain>0:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个,剩下",remain,"个。")
else:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
if __name__=='__main__':
try:
division()
except ZeroDivisionError:
print("\n出错了 ~_~ ——苹果不能被0个小朋友分!")
def division():
'''功能:分苹果'''
print("\n=================== 分苹果了 ===============\n")
apple = int(input("请输入苹果的个数:"))
children = int(input("请输入来了几个小朋友:"))
result = apple//children
remain =apple-result*children
if remain>0:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个,剩下",remain,"个。")
else:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
if __name__=='__main__':
try:
division()
except ZeroDivisionError:
print("\n出错了 ~_~ ——苹果不能被0个小朋友分!")
except ValueError as e:
print("输入错误:",e)
实例03 模拟幼儿园分苹果(每个人至少分到一个苹果)
步骤:在IDLE中创建一个名称为division_apple_1.py的文件,然后将实例02的代码全部复制到该文件中,并且在第5行代码“children = int(input("请输入来了几个小朋友:"))”的下方添加一个if 语句,实现当苹果的数量小于小朋友的数量时,应用raise语句抛出一个ValueError异常,接下来再在最后一行语句的下方添加except语句处理ValueError异常
def division():
'''功能:分苹果'''
print("\n=================== 分苹果了 ===============\n")
apple = int(input("请输入苹果的个数:"))
children = int(input("请输入来了几个小朋友:"))
if apple < children:
raise ValueError("苹果太少了,不够分……")
result = apple//children
remain =apple-result*children
if remain>0:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个,剩下",remain,"个。")
else:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
if __name__=='__main__':
try:
division()
except ZeroDivisionError:
print("\n出错了 ~_~ ——苹果不能被0个小朋友分!")
except ValueError as e:
print("\n出错了 ~_~ ——",e)
实例04 模拟幼儿园分苹果(应用断言调试)
步骤:在IDLE中创建一个名称为division_apple_dug.py的文件,然后将实例01的代码全部复制到该文件中,并且在第5行代码“children =int(input("请输入来了几个小朋友:"))”的下方添加一个assert语句,验证苹果的数量是否小于小朋友的数量
def division():
'''功能:分苹果'''
print("\n=================== 分苹果了 ===============\n")
apple = int(input("请输入苹果的个数:"))
children = int(input("请输入来了几个小朋友:"))
assert apple >= children ,"苹果不够分"
result = apple//children
remain =apple-result*children
if remain>0:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个,剩下",remain,"个。")
else:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
if __name__=='__main__':
division()
def division():
'''功能:分苹果'''
print("\n=================== 分苹果了 ===============\n")
apple = int(input("请输入苹果的个数:"))
children = int(input("请输入来了几个小朋友:"))
assert apple >= children ,"苹果不够分"
result = apple//children
remain =apple-result*children
if remain>0:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个,剩下",remain,"个。")
else:
print(apple,"个苹果,平均分给",children,"个小朋友,每人分",result,"个。")
if __name__=='__main__':
try:
division()
except AssertionError as e:
print("\n输入有误:",e)