Python 实验六 异常处理

一、实验目的

(1)try-except-else语句

(2)finally语句

(3)断言语句

(4)异常抛出

二、实验环境

联网计算机一台/每人,内装Windows 7以上操作系统和安装Python 3.7集成开发环境IDLE。

三、实验内容

Sy6-1

从键盘输入一个整数,求100除以它的商,并显示输出。要求对从键盘输入的数值进行异常处理(不能出现除数为0)

Sy6-2

编程实现索引超出范围异常index Error类型,对一个序列的索引值进行判断,如果超出则报错

Sy6-3

录入一个学生的成绩,把该学生的成绩转化为A优秀、B良好、C合格、D不及格的形式,最后将该学生的成绩打印出来。要求使用assert 断言处理分数不合理的情况

四、实验步骤与结果

1. 新建文件夹并命名为学号-姓名-实验六。

2. 安装 Python 解释器Python 3.7 集成开发环境IDLE,并进入IDLE。

3. 依次输入自己编好的程序实验内容1-7的源程序,分别命名为sy6_1.py - sy6_3.py 并保存至已建好的文件夹中。

4. 检查已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错,及时改正。

5. 运行程序并分析运行结果是否合理。在运行时要注意当输入不同的数据时所得结果是否正确,应测试两组以上数据,分别检查在不同情况下结果是否正确。

列出1-3题源程序清单并记录上机运行结果。

Sy6-1

从键盘输入一个整数,求100除以它的商,并显示输出。要求对从键盘输入的数值进行异常处理(不能出现除数为0)

try:
    n=int(input("请输入一个整数:"))
    x=100/n
    print(x)
except ValueError:
    print("异常,请重新输入:")

Sy6-2

编程实现索引超出范围异常index Error类型,对一个序列的索引值进行判断,如果超出则报错

try:
    chars=["a","b",100,-37,2]
    chars[5]="k"
except IndexError:
    print("异常,超出检索范围")

Sy6-3

录入一个学生的成绩,把该学生的成绩转化为A优秀、B良好、C合格、D不及格的形式,最后将该学生的成绩打印出来。要求使用assert 断言处理分数不合理的情况

try:
    score=int(input("请输入学生的成绩"))
    assert 0<=score<=100
    if score>=90:
        print("A优秀")
    if score>=80 and score<90:
        print("B良好")
    if score>=60 and score<80:
        print("C合格")
    if score<60:
        print("D不合格")
except ValueError:
    print("异常,输入必须为整数")
except AssertionError:
    print("异常,输入的成绩不在0-100范围内")

五、总结

1. 实验过程中的问题及解决方法:

  • 在处理除数不能为 0 的异常时,可能最初没有正确使用异常捕获语句导致程序崩溃。通过使用 try-except 结构,成功捕获并处理了除数为 0 的异常情况,使程序能够给出相应的提示信息并继续正常运行。
  • 在实现索引超出范围异常时,可能对序列的长度判断不准确,导致异常处理不准确。通过仔细计算序列的有效索引范围,并在访问索引前进行判断,解决了索引超出范围的问题。
  • 在处理学生成绩断言时,可能对断言条件设置不当,导致误判或漏判。通过仔细分析成绩的合理范围,并设置准确的断言条件,确保了不合理成绩能够被正确捕获。

2. 实验收获

  • 深入理解了异常处理的重要性和工作原理,能够有效地捕获和处理各种可能出现的异常情况,提高程序的健壮性和稳定性。
  • 熟练掌握了 try-except 语句的使用方法,能够针对不同类型的异常进行有针对性的处理,提供友好的错误提示信息。
  • 学会了如何自定义异常,以及如何在特定情况下抛出和处理自定义异常,增强了对程序流程的控制能力。
  • 对断言(assert)的使用有了更清晰的认识,能够在程序中有效地进行前置条件的检查和验证,提高代码的可靠性。
  • 提升了对程序逻辑的严谨性和容错性的考虑,能够更好地预测和处理各种可能的错误情况,编写更加可靠和高质量的代码。
  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值