python 异常处理高级形式例子_Python中的异常处理

一、程序的异常处理

异常处理是现代编程语言不可或缺的能力,它已经成为衡量一门编程语言是否已经成熟和健壮的标准之一。

例如在二级编程题中有一个‘猜数字’游戏,如下

import random

target = random.randint(1,1000)

count = 0

while True:

guess = eval(input('请输入一个猜测的整数(1至1000):'))

count = count+1

if guess > target:

print('猜大了')

elif guess < target:

print("猜小了")

else:

print("猜对了")

break

print("本轮猜测的次数是:{}".format(count))

该游戏会产生一个1-1000的随机数,然后请用户循环猜这个数字,对于每个答案只回答"猜大了"或"猜小了",直到猜准确为止,输出用户的猜测次数

下面附上运行结果

请输入一个猜测的整数(1至1000):500

猜大了

请输入一个猜测的整数(1至1000):100

猜大了

请输入一个猜测的整数(1至1000):1

猜小了

请输入一个猜测的整数(1至1000):abc

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

in

3 count = 0

4 while True:

----> 5 guess = eval(input('请输入一个猜测的整数(1至1000):'))

6 count = count+1

7 if guess > target:

in

NameError: name 'abc' is not defined

可以看到我们无法保证用户会输入什么数据,输入有误程序就会报错,这时异常处理的作用就体现出来了

仔细观察下面的代码

import random

target = random.randint(1,1000)

count = 0

while True:

try:

guess = eval(input('请输入一个猜测的整数(1至1000):'))

except:

print("输入格式有误,请重新输入")

continue

count = count+1

if guess > target:

print('猜大了')

elif guess < target:

print("猜小了")

else:

print("猜对了")

break

print("本轮猜测的次数是:{}".format(count))

可以看到在第五行和第七行分别加了try和except语句

运行结果如下:

请输入一个猜测的整数(1至1000):500

猜大了

请输入一个猜测的整数(1至1000):100

猜大了

请输入一个猜测的整数(1至1000):1

猜小了

请输入一个猜测的整数(1至1000):abc

输入格式有误,请重新输入

请输入一个猜测的整数(1至1000):

结果显而易见,所以程序的异常处理是非常有必要的

二、异常的高级用法

其实程序的异常处理还有一些略微高级的用法,这些用法也十分常用。

例题如下:

try:

alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

idx = eval(input("请输入一个整数:"))

print(alp[idx])

except NameError:

print("输入错误,请输入一个0-25的整数")

except:

print("其它错误")

运行结果如下:

请输入一个整数:NO

输入错误,请输入一个0-25的整数

请输入一个整数:100

其它错误

除了try和except保留字外,异常语句还可以与else和finally保留字配合使用,语法格式如下:

try:

except :

else:

finally:

当try中的语句块1正常执行结束且没有发生异常时,else中的语句块3执行,可以看作是对try语句块正常执行后的一种追加处理。finally语句块则不同,无论try中的语句块1是否发生异常,语句块4都会执行,可以将程序执行语句块1的一些收尾工作放在这里。

小伙伴们赶快找个例子练练手吧

原文链接:https://blog.csdn.net/AQAmbition/article/details/107589673

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值