0
点赞
收藏
分享

微信扫一扫

day16-demo01&exer01

Go_Viola 2022-04-27 阅读 33
python

异常

1. 定义:运行时检测到的错误。

2. 现象:当异常发生时,程序不会再向下执行,而转到函数的调用语句。

3. 常见异常类型:

-- 名称异常(NameError):变量未定义。

-- 类型异常(TypeError):不同类型数据进行运算。

-- 索引异常(IndexError):超出索引范围。

-- 属性异常(AttributeError):对象没有对应名称的属性。

-- 键异常(KeyError):没有对应名称的键。

-- 异常基类 Exception。

"""
    异常处理
不是检测语法用的,而是检测逻辑错误(往往数值超过有效范围引起)

"""
"""
    异常处理 Error
        目的:保障软件可以按照既定流程执行,而不是让软件单纯的不报错
"""

# 不适用以下语法错误:
# print(qtx)

# list01 = []
# print(list01[0])

# list 02 = [

# 适用于解决逻辑错误(数值超过有效范围而引起):
"""
def div_apple(apple_count):
    # ValueError
    person_count = int(input("请输入人数:"))
    # ZeroDivisionError
    result = apple_count / person_count
    print(f"每人{result}个")

div_apple(10)
"""

# 现象:错误了不继续向下执行,而是不断向上返回,调试看执行过程
"""
def div_apple(apple_count):
    # ValueError
    person_count = int(input("请输入人数:"))
    # ZeroDivisionError
    result = apple_count / person_count
    print(f"每人{result}个")

def main():
    div_apple(10)

main()
print("不继续后续逻辑")
"""

# 解决方法
# 写法1:包治百病(民间喜好) 用得多-----掌握这个就行
#try失败就干嘛干嘛,成功就不执行失败的那个干嘛干嘛
"""
def div_apple(apple_count):
    try:
        # ValueError
        person_count = int(input("请输入人数:"))
        # ZeroDivisionError
        result = apple_count / person_count
        print(f"每人{result}个")
    # except Exception:(后来直接except简化)
    except:
        print("分苹果失败")


div_apple(10) 
print("继续后续逻辑")
"""

# 写法2:对症下药(官方建议)用得少
"""
def div_apple(apple_count):
    try:
        # ValueError
        person_count = int(input("请输入人数:"))
        # ZeroDivisionError
        result = apple_count / person_count
        print(f"每人{result}个")
    except ValueError:#根据内置的关键字来判断
        print("错误!输入的不是整数")
    except ZeroDivisionError:
        print("错误!输入的是零")

div_apple(10)
print("后续逻辑")
"""

# 写法3:finally:无论是否发生错误,一定执行的逻辑
#try 成功与失败都干嘛干嘛
"""
def div_apple(apple_count):
    try:
        person_count = int(input("请输入人数:"))
        result = apple_count / person_count
        print(f"每人{result}个")
        # 打开文件
        # 处理文件
    finally:#不论处理是否成功,都要关闭文件
        print("分苹果结束啦,不知道成功与否")
        # 关闭文件

div_apple(10) 
print("继续后续逻辑")
"""


# 写法4:没有错误才执行的逻辑,有错误"分苹果失败",没错误"分苹果成功"----用得少
#try的部分成功就干嘛干嘛,失败就干嘛干嘛
def div_apple(apple_count):
    try:  # 可以与else配对用
        person_count = int(input("请输入人数:"))
        result = apple_count / person_count
        print(f"每人{result}个")
    except:
        print("分苹果失败")
    else:
        print("分苹果成功")


div_apple(10)
print("继续后续逻辑")
练习:创建函数,在终端中录入int类型成绩。
如果格式不正确,重新输入。
def get_score():
    while True:
        try:
            score = int(input("请输入成绩"))
            return score
        except:
            print("输入有误")


score = get_score()
print("成绩是 : %d " % score)

举报

相关推荐

day11-demo01&exer01

day01_matplotlib_demo

day15-demo01-02

day10-demo02&exer02

Demo01

day19-demo04-05&exer02-04

01 DAPP简单Demo

day01

2022-01-16

2020-01-16

0 条评论