python基础——异常处理——try
程序员文章站
2022-04-18 09:45:34
本人会先介绍几种异常处理的常见语句,然后以一个 猜数大小游戏 来使用部分异常处理,其中包括Python自带的异常处理和自我定义的异常1.常见的异常处理语句1.1 try - except 语句try: 检测范围 #如果此处没有检测出错误,将跳过except相应的部分,执行后续的代码 #否则就会执行except相应的代码,以except Exception[as reason]: 出现异常后的处理代码......
本人会先介绍几种异常处理的常见语句,然后以一个 猜数大小游戏 来使用部分异常处理,其中包括Python自带的异常处理和自我定义的异常
目录
1.常见的异常处理语句
1.1 try - except 语句
try:
检测范围 #如果此处没有检测出错误,将跳过except相应的部分,执行后续的代码
#否则就会执行except相应的代码,以处理相应的异常
except Exception[as reason]:
出现异常后的处理代码
1.2 try - except - finally 语句
对finally 的理解就是,最后的最后,finally 后的代码还是要执行,不管你出现什么错
try:
检测范围
except Exception[as reason]:
出现异常后的处理代码
finally:
无论如何都会被执行的代码
1.3 try - except - else 语句
else就是,待异常没有出现的情况下,执行 else 后的代码
try:
检测范围
except:
出现异常后的处理代码
else:
如果没有异常执行这块代码
1.4 raise语句
raise语句是用来抛出指定的异常,一般是自定义的异常
这里使用后面的代码来说明一下raise的用法
def game_Test(u_game):
try:
#u_game = input("请输入:")
if len(u_game)>1:
raise TooLongExceptin(len(u_game))
elif u_game.isalpha() != True:
raise CharExceptin(u_game)
except TooLongExceptin as e:
print(e)
except CharExceptin as e:
print(e)
2.猜数游戏——异常检测
这里我通过一个猜数游戏来对上述知识作一个应用。
游戏规则——100以内的猜数,有6次猜数机会,次数用完,游戏结束;在未用完机会的情况下,猜对后可选择继续玩或者结束游戏
代码如下,如有错误,恳请指出。
class TooLongExceptin(Exception): #自定义异常函数,继承了基类Exception
def __init__(self,len):
self.len = len
def __str__(self):
return "您的输入是"+str(self.len)+"字符,只能是单一字符"
class CharExceptin(Exception):
def __init__(self,s):
self.s = s
def __str__(self):
return "输入字符 "+self.s+" 不规范"
def game_Test(u_game):
try:
#u_game = input("请输入:")
if len(u_game)>1:
raise TooLongExceptin(len(u_game))
elif u_game.isalpha() != True:
raise CharExceptin(u_game)
except TooLongExceptin as e:
print(e)
except CharExceptin as e:
print(e)
import random
guess = random.randint(1,100)
#print(guess) #作弊开关
count = 6
u_game= None
print("总共6次机会")
while count > 0:
try: #对输入是否是数值的异常检测
print("当前还有%d次"%count)
u_guess = int( input("u guess a number:") )
count -= 1
except ValueError as error:
print('输入出错\n原因是:' + str(error))
else:
if u_guess > guess :
print("大了大了,再猜再猜")
elif u_guess < guess :
print("小了小了,再猜再猜")
else:
print("你怎么这么厉害,恭喜猜对了")
try:
u_game = str( input("重新开始:S or 愉快结束:Q : ") )
#print("重新开始:S or 愉快结束:Q : ")
game_Test(u_game)
while True:
if u_game == 's' or u_game == 'S':
count =6
guess = random.randint(1,100)
break
elif u_game == 'q' or u_game == 'Q':
break
else :
print("输入正确的操作",end= '--')
u_game = str( input("重新开始:S or 愉快结束:Q : ") )
game_Test(u_game) #自定义的异常检测,检测字符是否是字母
#字符是否单一
except TypeError as error:
print('类型出错\n原因是:' + str(error))
if u_game == 'q' or u_game == 'Q':
break
if count <= 0 :
print('')
print("gameover,再接再厉,下次一定行")
else :
print('完美结束')
本文地址:https://blog.csdn.net/qq_32531505/article/details/107554802
上一篇: 大汉帝国挥之不去的噩梦是什么?