异常
异常是错误发生的信号,一旦程序出错应付产生一个异常,如果该异常没有被应用程序处理,那么,该异常就会抛出来,程序的执行也随之终止
异常包含三个部分:
1.异常的追踪信息
2.异常的类型
3.异常的信息
错误分为两大类:
1.语法上的错误,在程序运行前就应该立即修正;
2.逻辑上的错误,如变量没有名字、取了字典中没有的key值
进行异常处理的目的:
避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性。
常见报错:
NameError、TypeError、KeyError、IndexError
如何处理异常:
异常处理的单分支
异常处理的多分枝
多分枝的异常捕获,当出现第一个异常的时候就会停止
try:
a #代码体1
#代码体2 ......
except NameError as f:
print('检查一下你的代码') #当抛出的异常是NameError时执行的子代码块
print(f)
# except ....:
# pass
else:
print("代码正确") #pass
finally:
print("完成了异常捕获") #pass
print("12")
合并使用捕获:
try:
a #代码体1
print('---------') #代码体2 ......
print("====")
print("------")
L=[1,2]
L[2]
except (NameError,IndexError) as f:
print('检查一下你的代码') #当抛出的异常是NameError时执行的子代码块
print(f) #一旦捕获到异常,检查的代码体中余下的代码便不再运行
else:
print("代码正确") #pass
finally:
print("完成了异常捕获") #pass
结果
检查一下你的代码
name 'a' is not defined
完成了异常捕获
12
万能捕获Exception
try:
print("------")
L=[1,2]
L[2]
except Exception as f:
print('检查一下你的代码')
print(f) #一旦捕获到异常,检查的代码体中余下的代码便不再运行
else:
print("代码正确") #pass
finally:
print("完成了异常捕获") #pass
print("12")
结果:
------
检查一下你的代码
list index out of range
完成了异常捕获
12
自定义捕获
第一种方式:满足条件,抛出异常
L=[1,2,3,4,5]
print(len(L))
if len(L) !=3:
raise TypeError("自定义的的规则,列表的长度必须为3")
第二种方式: 断言
L=[1,2,3,4,5]
assert len(L)==6
购物车
这是一个简单是的项目,其目的:
1.熟悉python的语法规则,巩固day1到day5的知识点 2.业务逻辑
第一步:导入时间模块
enumerate 枚举
使用for循环同时将列表中的索引及值给取出来。
格式: for 变量1,变量2 in enumerate( )
g=['erft','ewf','rqerge','ewf']
for i, b in enumerate(g):
print(i, b)
结果:
0 erft
1 ewf
2 rqerge
3 ewf
strip 去空格
它可用于输入函数以防止误输
choice=input("请输入商品序号").strip() #strip是用来去空格
简单的购物流程:
成功登录 ,浏览商品与价格, 挑选商品 确定购买的商品与数量 计算总价 付款成功 购物结束
程序设计流程
登录系统
输入用户名,(用户名错误,重新输入。)
用户名正确,输入密码,(密码错误,重新输入,连续三次,锁定5秒)
密码正确,登录成功
商品展示
商品购买
输入序号,挑选商品(同时展示商品价格),
判断输入语法对错,再进行下一步
输入数字,确定商品购买数量,(随即计算总价)。
判断输入语法对错,再进行下一步
最后判断确定商品名称与数量以及价格是否合适。(不合适则取消购买,返回商品展示区)
确定购买
付款
判断余额是否充足,充足则输入密码(判断输入语法对错)购买成功
不充足,则提醒充值后购买。