Python基础 - 20210520 - 基础10(异常处理)

知识点 异常的定义

异常的python详细讲解

# 1、捕获任何异常
try:
	会出错的代码块
except:
	异常后逻辑处理

# 2、捕获特定异常
try:
	会出错的代码块
except IndexError:  # 仅仅捕获下标越界的异常,非这样的异常都会再次抛出
	异常后逻辑处理

# 3、打印异常信息
try:
	会出错的代码块
except Exception as error: # except  as error 这样不行
	异常后逻辑处理
	print(error)
	
# 4、处理完异常后始终执行
try:
	会出错的代码块
except:
	异常后逻辑处理
finally:
	不管异常是否被捕获,都将执行

# 手动写异常
try:
	raise IndexError ("异常提示消息") # 注意啊 不能和except捕获的异常一致,否则会进except
except keyError:
	print("异常信息")

知识点 列表推导式

1.列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表.
2.如果有if条件语句,for遍历后紧跟着进行条件判断.
3.如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积.
4.可以进行嵌套的列表推导,与嵌套for循环的原理相同
列表推导、字典推导,这位大佬讲的很详细了

练习

题目:
优化去生鲜超市买橘子程序
a.收银员输入橘子的价格,单位:元/斤
b.收银员输入用户购买橘子的重量,单位:斤
c.计算并且 输出 付款金额
d.使用捕获异常的方式,来处理用户输入无效数据的情况

def settlement():
    price = input("请输入您橘子的购买价格:")
    weight = input("请输入购买的橘子数量:")
    if float(price)< 0 or float(weight) <=0:
        return ("亲~ 不能为负数或0哦~")
        # or
        # reise keyError("不能是负数哦") # 中断程序
    try:
        return (f"您所需的付款金额为: {float(price) * float(weight)}")
    except ValueError as err:
        print("报错内容为ValueError:", err)
    except TypeError as err:
        print("报错内容为TypeError:", err)
    except Exception as err:
        print("报错内容为TypeError:", err)

题目:举列数据异常,并捕获

def errorlist(type,*args):
    try:
        if type==1:
            return args[2]
        if type ==2:
            return int(args[0]) + int(args[1])
        if type ==3:
            return args[0] + args[1]
        if type ==4 :
            return int(args[0]) / int(args[1])
        if type ==5 :
            return args[0][3]
        if type ==6 :
            return open(args[0], encoding="utf-8")
    except IndexError as error:  # errorlist(1,2,1)
        print("IndexError",error)
    except TypeError as err:    # errorlist(3,"www",1)
        print("报错内容为TypeError:", err)
    except ValueError as err:    # errorlist(2,"www","222")
        print("报错内容为ValueError:",err)
    except ZeroDivisionError as err:  # errorlist(4,2,0)
        print("报错内容为ZeroDivisionError:", err)
    except KeyError as err:           # errorlist(5,{"2":"0"})
        print("报错内容为KeyError:", err)
    except IOError as err:           # errorlist(6,"test.txt")
        print("报错内容为IOError:", err)
    except Exception as err:
        print("未知错误:",err)

print(errorlist(6,"test.txt"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值