Python:Task03:异常处理——2020.01.27

Task03:异常处理——2020.01.27

try-except语句:

先执行try语句,当其中出现异常的时候,匹配下面对应的异常类型的except,执行其语句,再往下执行

try :
	f = open("test.txt")
    print(f.read())
    f.close()
except OSError as error:  #把出错原因赋给error
    print("打开文件出错的原因是",str(error))
except TypeError as error:
    print()
except ValueError as error:
    print()

#如果几个except后面的类型存在父子关系,先写子再写父

try-except-finally语句

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

不管try子句里面有没有发生异常,finally子句都会执行。

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

try-except-else语句

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

try:
    检测范围
except(Exception1[, Exception2[,...ExceptionN]]]):
   发生以上多个异常中的一个,执行这块代码
else:
    如果没有异常执行这块代码

raise语句

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

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

猜数字游戏

题目描述:

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

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

获取随机数采用random模块。

分析:

1.在random模块中有randint方法来随机生成一个整数random.randint(0,100)

2.由于我对错误类型不太了解,不好从帮助文档里查找输入错误应该是什么类型的错误,于是我强行输入字符串并将其转化为int型,这时系统报错:

ValueError: invalid literal for int() with base 10: 'kr'

嗯,随后在帮助文档中查找到了ValueError:ValueError:传入无效的参数。于是我确定了错误类型,完成解题。

import random
a = random.randint(0,100)
print("请输入一个0到100之间的整数.")
b = True
times = 0
while b:
    times += 1
    try:
        c = int(input("第"+str(times)+"次猜,请输入一个整形数字:"))
        if c > a :
            print("太大")
        elif c < a :
            print("太小")
        else:
            print("恭喜你猜到了这个数是",a)
            b = False
    except ValueError as error:
        print("输入无效")
        
#
C:\ProgramData\Anaconda3\python.exe C:/Users/zhaohaobing/PycharmProjects/pythonProject/task03.py
121次猜测,请输入猜测结果1
太小
第2次猜测,请输入猜测结果62
太大
第3次猜测,请输入猜测结果88
太大
第4次猜测,请输入猜测结果12
恭喜你猜到了这个数是12

Process finished with exit code 0

分析:

c = int(input(“第”+str(times)+“次猜,请输入一个整形数字:”))

这里input输入的是一个字符串,没有转换成int类型,一直出错。

猜你喜欢

转载自blog.csdn.net/zhaohaobingniu/article/details/113360458