python基础---异常处理

说说废话

最近一直忙着一些事情好久没有更新了,加上最近电脑在跑一些大数据,也就九百万条数据,还是没有加上一些复杂模型的,结果我的jupyter notebook就崩掉了,最后迫不得已重装软件,还在苦苦配置环境中,等以后学习pytorch和tensorflow都不敢在本地上跑了。

程序的异常处理

今天霖小白心血来潮想来分享一下python基础中的如何异常处理,使程序有更好的用户体验。

前言

python程序对用户的输入有一定的要求,所以当实际输入不满足程序要求时,可能在程序运行过程中会直接报错无法进行下一步的运行。

例子1

在这里插入图片描述

因为我们使用了eval()函数,所以我们输入的数字需要是数字的,如果输入的不是一个数字,比如上面的例子就是输入的是python,是字母而不是数字就会直接报错。

使用保留字try和except进行异常处理

语法格式

try:
    <语句块1>
except:
    <语句块2>

语句块1是正常执行的程序内容,当执行这个语句块发生异常时,则会执行语句块2的内容。

例子2

我们在例子1的基础上进行改进,通过这两个例子的对比就可以很清楚的理解了这一部分的内容了。

try:
    n = eval(input("请输入一个数字:"))
    print('输入的数字的平方是{}'.format(pow(n)))
except:
    print("输入错误,请输入一个数字!")

在这里插入图片描述

这样的话即使我们输入的是字母也不会直接报错,而是会提示你输入错误,从而可以使程序继续往下运行(如果下面有程序的话)

除此之外还可以使用这个知识内容处理程序执行中的运行异常。

例子3

[]

在这一段代码中初始值i是0,所以下面式子为6除以0,因为python不支持除以0的操作,所以自然就会报错了。

接下来我们还是使用try和except来处理这样的异常情况。

try:
    for i in range(3):
        print(6/i, end=' ')
except:
    print('产生除零错误')

在这里插入图片描述

这样就可以完美解决报错带来的烦躁感哈哈哈哈,debug的时候可以试着用它,至少霖小白要是在写一段程序的时候,要是经常报错,多多少少暴脾气就上来了,不过经历了许多,包括上面所说的jupyter notebook的服务器崩溃了,一直不断在抢救它,重装,以及环境的配置一直失败等这样也是真的很大提高了我的耐心,做到“临危不惧”哈哈哈哈,简单粗暴说就是越来越佛了。

进一步优化

例子3其实还可以进一步优化,结合特定的错误类型进行处理。例子2的错误其实就是产生了ZeroDivisionError运用错误,可以指定处理该类型错误,再添加其他错误。

try:
    for i in range(3):
        print(6/i, end=' ')
except zeroDivisionError:
    print('产生除零错误')
except:
    print('其他错误!')

没事写写猜字游戏

猜字游戏相信各位已经非常不陌生了,基础中的基础知识了,接下来也是没啥事,就来加上上面的异常处理的知识再练练基础题。

import random
number = random.randint(1,1000)
guess_count = 0
while True:
    try:
        guess_number = eval(input('请在1~1000中猜一个数字:'))
    except:
        print('输入错误,但不计次数')
        continue
    guess_count += 1
    if guess_number > number:
        print('猜大了')
    elif guess_number < number:
        print('猜小了')
    else:
        print('恭喜你猜对了')
        break
print('你一个猜了{}次'.format(guess_count))

这时候有人站出来说,random.randint(1,1000)哇,这么随机怎么可能猜得到呢?有一个高效的方法,二分查找法。啥?什么是二分查找法?

在这里插入图片描述

百度,你值得拥有!

更多基础知识请关注公众号“一本正经的霖小白”
推文链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值