欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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