一. 场景描述案例:模拟银行ATM存款取款
1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式);
2.提示用户输入银行卡和密码,遍历每张卡的信息验证是否成功;
3.如果用户输入正确—提示让用户选择取款.存款还是退出,并提示余额多少. 输入错误—重新输入卡号密码;
选择取款—提示输入取款额度,如果超过余额,提示余额不足;否则,在余额上减掉相应金额;
选择存款—输入存款额度,余额加上相应额度,并提示余额多少;
选择退出—重新登录;
4.设置3次输入错误账号密码,提示银行卡已被锁定,程序结束。
二. 实现思路
- 首先,手动输入三张银行卡(使用列表嵌套字典)。
- 设计登录系统。
- 利用选择结构实现三个业务。
三. 代码实现
card1 = {"姓名":"张三","卡号":"1001","密码":"123","余额":"1000"}
card2 = {"姓名":"李四","卡号":"1002","密码":"123","余额":"2000"}
card3 = {"姓名":"王五","卡号":"1003","密码":"123","余额":"3000"}
card4 = {"姓名":"赵六","卡号":"1004","密码":"123","余额":"4000"}
cardsList=[card1,card2,card3,card4]
msg = 0
i = 3
while 1:
cnum = input("请输入卡号:")
cpwd = input("请输入密码:")
for card in cardsList:
if cnum == card["卡号"] and cpwd == card["密码"]:
msg = 1
print("恭喜您!",card["姓名"],"验证成功!")
if msg == 0:
i = i - 1
if i > 0:
print("验证失败!请重新输入!")
print("您还有",str(i),"次机会。")
if i == 0:
print("您没有登录机会了!")
break
temp = 0
if msg == 1:
while 1:
choice = int(input("请输入要办理的业务(1.存款 2.取款 3.退出):"))
if choice == 1:
deposit = int(input("请输入您的存款额度:"))
for card in cardsList:
if cnum == card["卡号"]:
card["余额"] = int(card["余额"]) + deposit
print("存款完成,您当前卡中余额为:",card["余额"],"元")
elif choice == 2:
withdrawmoney = int(input("请输入您要取款的金额:"))
for card in cardsList:
if cnum == card["卡号"]:
if withdrawmoney > int(card["余额"]):
print("余额不足!")
else:
card["余额"] = int(card["余额"]) - withdrawmoney
print("恭喜您取款成功,当前卡中的余额为",card["余额"],"元")
elif choice == 3:
print("您已经退出!")
temp = 1
break
else:
print("没有此类相关的业务!")
if temp == 1:
break
四. 运行结果
五. 反思
- 需要弄明白字典里面的键值对的数据类型。
- 循环结构里面经常需要存在一些标志变量用来判断业务是否达到上限。