当前位置: 首页 > news >正文

异常概述

自学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.lryc.cn/news/364048.html

相关文章:

  • 【Postman接口测试】第五节.Postman接口测试项目实战(下)
  • 医用腕带朔源用的条形码与二维码如何选择
  • “Kubectl 如何工作案例:编写自定义 Kubectl 命令
  • opencv-python(五)
  • 免费生物蛋白质的类chatgpt工具助手copilot:小分子、蛋白的折叠、对接等
  • Mybatis01-初识Mybatis
  • 算法课程笔记——基础数据结构 堆
  • 边缘数据采集网关为企业提供高效、安全、可靠的数据采集解决方案-天拓四方
  • 鸿蒙开发接口安全:【@ohos.security.huks (通用密钥库系统)】
  • 黄仁勋:打破摩尔定律,机器人时代来了
  • 每天的CTF小练--6.5(ascll码高级运用)
  • docker参数大P与小p的区别
  • 智慧启航 网联无限丨2024高通汽车技术与合作峰会美格智能分论坛隆重举行
  • 20.Redis之缓存
  • vue中实现一个时间选择器的级联框,第一层小时,第二层分钟
  • 数据分析必备:一步步教你如何用Pandas做数据分析(17)
  • 检查用户是否在错误的目录中运行了CMake命令
  • 前端工程化工具系列(四)—— Commitlint(v19.3.0):规范化 Git 提交
  • <vs2022><问题记录>visual studio 2022使用console打印输出时,输出窗口不显示内容
  • 推荐一个免费的相亲工具
  • 写一个盲盒模拟器
  • Java使用正则表达式匹配以某个字符开始,某个字符结束
  • 什么叫硬编码?如何避免硬编码
  • RK3588 Android13自定义一个按键实现长按短按
  • 映射网络驱动器自动断开的解决方法
  • (Arkts界面示例)ets pages Demo(笔记版本0.0.1)
  • Python 动态导入库
  • 【WP|8】深入解析WordPress钩子函数
  • Java集合简略记录
  • 能获取淘宝商品简化链接的浏览器书签