第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()

python3分苹果问题 python分苹果程序_抛出异常

 

 

python3分苹果问题 python分苹果程序_抛出异常_02

 

   实例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个小朋友分!")

python3分苹果问题 python分苹果程序_异常处理_03

 

 

python3分苹果问题 python分苹果程序_python3分苹果问题_04

 

 

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)

python3分苹果问题 python分苹果程序_python3分苹果问题_05

 

   实例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)

python3分苹果问题 python分苹果程序_python3分苹果问题_06

 

   实例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()

python3分苹果问题 python分苹果程序_异常处理_07

 

 

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)

python3分苹果问题 python分苹果程序_抛出异常_08