Python实验——Python异常处理之try…except…

任务描述

本关任务:编写代码求列表内所有元素的和。

相关知识

为了完成本关任务,你需要了解什么是异常以及异常的处理方式。

异常

我们在编写代码时,难免会出现代码写错或者方法、参数使用错误的情况,在运行代码的时候,也有可能发生错误,发生的错误也就是我们所说的异常。下面我们列举几个常见的异常:

  • ImportError,无法引入模块或包,大部分是路径问题或名称错误;
  • IOError,输入输出异常,大部分是无法打开文件;
  • TypeError,传入对象类型与要求的不符合;
  • NameError,使用一个还未被赋予对象的变量;
  • ValueError,传入一个调用者不期望的值,即使值的类型是正确的;
  • KeyError,尝试访问字典里不存在的键;
  • SystemError,一般的解释器系统错误。

异常处理

考虑到程序的健壮与容错性,我们需要对潜在的异常进行处理,防止因异常而导致的程序崩溃。最常用的的异常处理方式就是使用 try…except… 语句。

    try:
        代码块1
    except:
        代码块2

当执行代码块 1 发生错误时,停止运行代码块 1,开始运行代码块 2。except 后也可以指定异常类型。

    try:
        num = "1" + 1     # 会发生TypeError错误
        print(num)
    except TypeError:     # 只有发生TypeError时才运行except子句
        print("发生TypeError错误")
    try:
        num = 10 * (1/0)     # 不会发生TypeError错误
        print(num)
    except TypeError:
        print("发生TypeError错误")

执行结果:

    发生TypeError错误
    Traceback (most recent call last):
      File "sync_file.py", line 8, in <module>
        num = 10 * (1/0)
    ZeroDivisionError: division by zero

由于没有匹配到指定的错误,所以程序还是报错了。

扫描二维码关注公众号,回复: 15033072 查看本文章

这些还不足以满足我们的需求,在一些自动化的代码中,我们想让代码生成错误日志,保存详细的错误信息,但是又不会停止代码的运行,这时,我们可以使用下列代码:

    try:
        num = "1" + 1     # 会发生TypeError错误
        print(num)
    except TypeError as f:
        print("发生TypeError错误,错误内容为:%s"%f)

执行结果:

    发生TypeError错误,错误内容为:can only concatenate str (not "int") to str

编程要求

仔细阅读右侧编辑区内给出的代码框架及注释,按照提示在 Begin-End 之间编写程序代码。相关信息如下:

  • 使用 input 获取列表;
  • 列表内的元素不一定全部都是数字,也有可能是其它类型的数据,如果是其它类型的数据,则不对该元素进行求和计算或者令该元素等于 0;
  • 打印计算后的结果。

测试说明

平台将使用测试集运行你编写的程序代码,若全部的运行结果正确,则通关。 可在右侧 “测试结果”区查看具体的测试集详情。 测试输入:

    ["a","b",[1,2,3],2,3,5]

预期输出:

10

实现代码:

# 请在下面的 Begin-End 之间按照注释中给出的提示编写正确的代码
########## Begin ##########
# 计算列表内所有数字的和
a=eval(input())
b=0
for x in a:
    try:
        b+=x
    except:
        continue
print(b)


########## End ##########

猜你喜欢

转载自blog.csdn.net/qq_43659681/article/details/129376725