异常概述

ops/2024/10/21 11:56:11/

自学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所示的异常并不需要记住,只需简单了解即可。


http://www.ppmy.cn/ops/47471.html

相关文章

MyEclipse 新手使用教程

MyEclipse 是一款流行的 Java 集成开发环境(IDE),它提供了许多用于开发 Java 应用程序的功能和工具。以下是一个针对 MyEclipse 新手的详细使用教程: 一、安装和配置 MyEclipse 下载和安装 访问 MyEclipse 官方网站(…

超全面,编程语言汇总,看看哪些语言适合GIS开发?

最近总有很多人关心GIS开发语言的问题,这个确实很重要,毕竟学习一门编程语言需要花费不少时间和精力,找不到合适GIS的编程语言意味着浪费时间。 首先我们来简单看一下常见的编程语言有哪些,后续再给大家介绍哪些语言适合GIS开发&a…

[机器学习] 低代码机器学习工具PyCaret库使用指北

PyCaret是一个开源、低代码Python机器学习库,能够自动化机器学习工作流程。它是一个端到端的机器学习和模型管理工具,极大地加快了实验周期,提高了工作效率。PyCaret本质上是围绕几个机器学习库和框架(如scikit-learn、XGBoost、L…

JVM常用概念之锁粗化和循环

1.什么是锁粗化 锁粗化一般指有效地合并几个相邻的锁定块,从而减少锁定开销。如下述代码所示: 锁粗化前代码: synchronized (obj) {// statements 1 } synchronized (obj) {// statements 2 }锁粗化后代码: synchronized (obj)…

qt c++类继承QWidget和不继承有什么区别

class CheckBoxSetting {Q_OBJECT public:CheckBoxSetting(); };和 class CheckBoxSettingsEditor : public QWidget {Q_OBJECTpublic:explicit CheckBoxSettingsEditor(QWidget *parent 0);~CheckBoxSettingsEditor();有什么区别? 这两个类 CheckBoxSetting 和 C…

PWA缓存策略区别NetworkOnly/CacheFirst/CacheOnly/NetworkFirst/StaleWhileRevalidate

现在来看看 Workbox 提供的缓存策略,主要有这几种: cache-first, cache-only, network-first, network-only, stale-while-revalidate 在前面看到,实例化的时候会给 workbox 挂载一个 Strategies 的实例。提供上面一系列的缓存策略&…

音视频开发—视频相关概念:YUV与RGB

文章目录 YUV相关概念组成部分优点常见的 YUV 格式数据量的计算YUV4:2:0 存储格式平面模式(planar):打包模式(packed) RGB 和 YUV 的定义关系与转换RGB 到 YUV 的转换YUV 到 RGB 的转换 使用场景优缺点 YUV相关概念 YUV 是一种颜色编码格式&…

微信小程序的tabbar怎么配置

微信小程序的tabBar配置是在全局配置文件app.json中进行的,主要用于设置小程序底部的导航栏效果。以下是一个清晰的tabBar配置步骤和示例: 1. 打开app.json文件 这个文件位于小程序项目的根目录下,是微信小程序的全局配置文件。 2. 添加或…