• 异常概述


    自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

    在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”。这些异常有的是由于开发者将关键字敲错导致的,这类错误多数产生的是SyntaxError: invalid syntax(无效的语法),这将直接导致程序不能运行。这类异常是显式的,在开发阶段很容易被发现。还有一类是隐式的,通常和使用者的操作有关。

    场景模拟:在全民学编程的时代,作为程序员二代的小琦编写了一个程序,模拟幼儿园老师分苹果。如果老师买来10个苹果,今天来了10个小朋友,那么输入10和10,程序给出的结果是每人分1个苹果。但是小琦的程序有一个异常。下面通过实例01进行具体分析异常信息。

    图标 (35)

      实例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()                                        # 调用分苹果的函数

    运行程序,当输入苹果和小朋友的数量都是10时,将显示如图1所示的结果。

    图1  正确的输出结果

    如果在输入数量时,不小心把小朋友的人数输成了0,将得到如图2所示的结果。

    图2  抛出了ZeroDivisionError异常

    产生ZeroDivisionError(除数为0错误)的根源在于算术表达式“10/0”中,0作为除数出现,所以正在执行的程序被中断(第6行以后,包括第6行的代码都不会被执行)。

    除了ZeroDivisionError异常外,Python中还有很多异常。如表1所示为Python中常见的异常。

    表1  Python中常见的异常

    异    常

    描    述

    NameError

    尝试访问一个没有声明的变量引发的错误

    IndexError

    索引超出序列范围引发的错误

    IndentationError

    缩进错误

    ValueError

    传入的值错误

    KeyError

    请求一个不存在的字典关键字引发的错误

    IOError

    输入输出错误(如要读取的文件不存在)

    ImportError

    当import语句无法找到模块或from无法在模块中找到相应的名称时引发的错误

    AttributeError

    尝试访问未知的对象属性引发的错误

    TypeError

    类型不合适引发的错误

    MemoryError

    内存不足

    ZeroDivisionError

    除数为0引发的错误

    说明:表1所示的异常并不需要记住,只需简单了解即可。

  • 相关阅读:
    WWDC22 前瞻:iOS 16、iPadOS 16等五大操作系统亮相,AR/VR头显将缺席?
    零基础电气专业毕业生,花费9.9元自学前端,成都月薪6.5K
    【Flink源码】Flink程序启动的那些事儿
    【ARM Cortex-M 系列 4 番外篇 -- 常用 benchmark 介绍】
    「 打卡训练 」Fiddler(三) - 抓取http请求
    python第三方库 pip install速度慢的解决办法
    堆栈队列应用
    仿大众点评——秒杀系统部分03——RabbitMq措施
    mongodb手动迁移chunk脚本
    VScode默认输出到调试控制台如何调整到终端以及两者中的乱码问题
  • 原文地址:https://blog.csdn.net/weixin_67859959/article/details/139455016