python循环结构练习(五)—— 模拟银行ATM存款取款

一. 场景描述案例:模拟银行ATM存款取款

1.模拟3张银行卡,1001,1002,1003,分别设置密码和余额(使用列表嵌套字典的方式);
2.提示用户输入银行卡和密码,遍历每张卡的信息验证是否成功;
3.如果用户输入正确—提示让用户选择取款.存款还是退出,并提示余额多少. 输入错误—重新输入卡号密码;
选择取款—提示输入取款额度,如果超过余额,提示余额不足;否则,在余额上减掉相应金额;
选择存款—输入存款额度,余额加上相应额度,并提示余额多少;
选择退出—重新登录;
4.设置3次输入错误账号密码,提示银行卡已被锁定,程序结束。

二. 实现思路

  1. 首先,手动输入三张银行卡(使用列表嵌套字典)。
  2. 设计登录系统。
  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

四. 运行结果

在这里插入图片描述

五. 反思

  1. 需要弄明白字典里面的键值对的数据类型。
  2. 循环结构里面经常需要存在一些标志变量用来判断业务是否达到上限。
  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值