Python基础Task3:异常处理

Python基础Task3:异常处理

1.try-except语句

try:
    检测范围
except Exception[as reason]:
    出现异常后的处理代码

【例子】

try:
    f = open('test.txt')
    print(f.read())
    f.close()
except OSError:
    print('打开文件出错')

try 语句按照如下方式工作:

首先,执行try子句(在关键字try和关键字except之间的语句)
如果没有异常发生,忽略except子句,try子句执行后结束。
如果在执行try子句的过程中发生了异常,那么try子句余下的部分将被忽略。如果异常的类型和except之后的名称相符,那么对应的except子句将被执行。最后执行try语句之后的代码。
如果一个异常没有与任何的except匹配,那么这个异常将会传递给上层的try中。
一个try语句可能包含多个except子句,分别来处理不同的特定的异常。最多只有一个分支会被执行。
使用多个except代码块时,必须坚持对其规范排序,要从最具针对性的异常到最通用的异常。

【例子】

try:
    int("abc")
    s = 1 + '1'
    f = open('test.txt')
    print(f.read())
    f.close()
except OSError as error:
    print('打开文件出错\n原因是:' + str(error))
except TypeError as error:
    print('类型出错\n原因是:' + str(error))
except ValueError as error:
    print('数值出错\n原因是:' + str(error))

# 数值出错
# 原因是:invalid literal for int() with base 10: 'abc'

2. try - except - finally 语句

try:
    检测范围
except Exception[as reason]:
    出现异常后的处理代码
finally:
    无论如何都会被执行的代码

如果一个异常在try子句里被抛出,而又没有任何的except把它截住,那么这个异常会在finally子句执行后被抛出。

3.try - except - else 语句

如果在try子句执行时没有发生异常,Python将执行else语句后的语句。

try:
    检测范围
except:
    出现异常后的处理代码
else:
    如果没有异常执行这块代码

注意:else语句的存在必须以except语句的存在为前提,在没有except语句的try语句中使用else语句,会引发语法错误。

4.raise语句

Python 使用raise语句抛出一个指定的异常。

【例子】

try:
    raise NameError('HiThere')
except NameError:
    print('An exception flew by!')
    
 #An exception flew by!

3.练习题:猜数字

题目描述:

电脑产生一个零到100之间的随机数字,然后让用户来猜,如果用户猜的数字比这个数字大,提示太大,否则提示太小,当用户正好猜中电脑会提示,"恭喜你猜到了这个数是......"。在用户每次猜测之前程序会输出用户是第几次猜测,如果用户输入的根本不是一个数字,程序会告诉用户"输入无效"。

(尝试使用try catch异常处理结构对输入情况进行处理)

获取随机数采用random模块。

import random
count=1
x=random.randint(0,100)
print("猜测一个0到100之间的整数:\n")
while True:
    try:
        m = input("这是第%d次猜,请输入一个整数:\n" % count)
        m1=int(m)
        if m1>x:
            print("太大")
            count +=1
            #continue

        elif m1<x:
            print("太小")
            count += 1
            #continue
        else:
            print("恭喜你猜对了!")
            count=1
            x=random.randint(0,100)
            print("猜测一个0到100之间的整数:\n")
    except ValueError as error:
        print("输入的不是数字" + str(error))
        print("请输入一个0到100之间的整数")
posted @ 2020-07-25 10:15  叮叮咚s  阅读(132)  评论(0编辑  收藏  举报