Python自学 从入门到实践,异常的处理

liftword1个月前 (03-29)技术文章14

在Python中导致程序无法运行的有2种情况。

1;语法错误,这是致命错误,需要重新查看代码进行修改,比如:缩进问题,比如关键字错误。

2;程序异常,这不是致命错误,我们可以捕获它。

在Python中处理异常是用try - except代码代码块来处理的。

学习这章的目的是:告诉Python发生异常时怎么办。使用try-except代码块后,即便出现异常,程序也将继续运行:我们可以编写的友好的错误消息,而不是令用户迷惑的traceback。

举个例子:

ZeroDivisionError: integer division or modulo by zero

大概意思是说;除数不能为0.

如何通过try - except,捕获这个异常,并且不会出现程序异常呢?

def ceshi(a,b):
    return a//b

b=int(input('请输入一个除数:'))
a=int(input('请输入一个被除数:'))
try:
    print(ceshi(a,b))
except ZeroDivisionError:
    print('除数不能为0')

这样来看,就算除数输入0,也不会出现异常,不过还有一个问题,就是程序结束了,应该要让用户知道不能输入0之后,能输入其他数才对。加入一个while循环 和 退出条件完善一下:

def ceshi(a,b):
    return a//b

while True:
    b = input('请输入一个除数:')
    if b =='退出':
        break
    else:
        a = int(input('请输入一个被除数:'))
        b = int(b)
        try:
            print(ceshi(a,b))
        except ZeroDivisionError:
            print('除数不能为0')

现在需要思考另外一个问题了,就是except 后面到底应该跟什么内容呢?我发现后面可以跟很多内容,都是大写字母开头的,我们可能需要记得少部分,但不需要全部去记忆,可以当发生异常的时候,把异常的第一段加入进去 即可。再看一个例子:

我想读取一个不存在的文件,Python抛出了异常:FileNotFoundError。现在我可以利用这个异常,捕获它,然后提醒用户;

FileNotFoundError。现在我可以利用这个异常,捕获它,然后提醒用户;

dizhi ="/Users/xuxizhi/Desktop/Python523.txt"
try:
    with open(dizhi,'r',encoding='utf-8')as a:
        a.write('我想用只读的方式打开这个文件,但现在这个文件不存在,应该会出现异常')
except FileNotFoundError:
    print(f"提醒~提醒~{dizhi}不存在,无法读取")

那是不是任何的异常都可以捕获呢?我们多试试。

异常的开头是:ValueError 我们来试试捕获它。

在实际运用中,客户的输入总是会出现奇怪的情况,为了让程序正常运行,我们需要捕获异常,并且告知客户应该怎么输入才正确,这样可以给到客户良好的体验。

来看下面的案例,比较两个数的大小:1;要求客户输入的是数值,2;并且限定了输入数值的范围(这仅仅是我做试验用的方法)

def ceshi(a, b):
    if a > b:
        return f"{a}比{b}大"
    else:
        return f"{a}比{b}小"

while True:
    try:
        a = int(input('请输入数值a:'))
    except ValueError:
        print('只能输入数值哈 输入其他都没有用')
    else:
        if a > 10:
            print('填入的数值不能大于10')
            continue
        else:
            print('输入正确')
            break

while True:
    try:
        b = int(input('请输入数值b:'))
    except ValueError:
        print('只能输入数值哈 输入其他都没有用')
    else:
        if b > 10:
            print('填入的数值不能大于10')
            continue
        else:
            print('输入正确')
            break

print(ceshi(a, b))

我们需要学会这种方法,其目的是让程序能够正常运行并给客户良好的体验,同时也加深我们对可能发生的所有情况都计算在内。

相关文章

Python 中读取、写入和管理文件的基础知识

File 处理是 Python 中每个开发人员都应该掌握的一项基本技能。无论您是在处理文本文件、日志、配置文件,还是二进制数据,了解如何读取、写入和管理文件都是必不可少的。Python 的内置工具使文...

一文掌握Python找到文件操作

阅读文件读取文件的全部内容:with open('example.txt', 'r') as file: content = file.read() print(content)2....

Python文件和异常处理打开、读写和关闭文件详解

文件和异常处理是 Python 编程中非常重要的概念。在本篇文章中,我们将详细讲解如何打开、读写和关闭文件,以及如何处理异常。文件操作在 Python 中,可以使用内置的 open() 函数打开文件。...

小白零基础用Python半小时搞定TXT转PDF!附赠脚本

"原来根本不用充会员!" 昨天我还在为100本TXT电子书无法上传腾讯ima知识库急得跳脚,今天却用60行Python代码实现了全自动转换pdf(全程没花1分钱)。作为一个连安装软件都要百度的新手,这...

怎么用Python提取txt的章节目录?

提取txt文本中的章节在网络上下载的小说,一般是txt格式的,并且往往是没有目录的。那么有没办法提取出小说的目录呢?下面是一个示例代码,用于提取txt文本中的章节作为目录: import re #...

python初学者系列:windows下载python

合集说明这是一个针对python3初学者的合集,将持续更新。 本合集主要内容是一些代码案例,帮助初学者学习发散,主体包含知识点、结果展示、思路分析、实现流程四大模块。初学者可以根据知识点判断是否继续阅...