python之极简ATM系统示例
"""
用户可登陆系统
输错三次锁定账号
用户可以创建新的用户名密码
新用户初始账户设为0
新用户可直接登陆系统
用户登陆成功后可以选择业务类型
用户数据可以根据业务修改
输入Q随时退出
"""
name_list = ["zhangdada","wangxiaoxiao","lizhongzhong"]
pwd_list = ["123","456","789"]
info = ["1:存款","2:取款","3:转账","4:查询"] # 用户账户数据
bank = {
"zhangdada":{
"name":"zhangdada",
"money":10000,
},
"lizhongzhong":{
"name":"lizhongzhong",
"money":45000,
},
"wangxiaoxiao":{
"name":"wangxiaoxiao",
"money":200000,
},
} # 程序主循环
tag = True
while True: print("*"*20)
print("欢迎使用本系统\n用户登陆请输入1\n新用户注册请输入2\n退出请输入Q")
print("*"*20)
choose = input("请选择类型:").strip() if choose == "Q": # 退出行
tag = False
print("欢迎下次使用")
break # 新用户注册
if choose == "2":
while True:
name_new = input("请创建用户名:").strip()
if name_new in name_list:
print("用户名已存在请重新输入!")
continue
else:
pwd_new = input("请设置密码:").strip()
if pwd_new in pwd_list:
print("密码重复,请重新来过!")
continue
else:
name_list.append(name_new)
pwd_list.append(pwd_new)
bank[name_new] = {}
bank[name_new]["name"] = name_new
bank[name_new]["money"] = 0
print("——"*15)
print("用户创建成功!")
print("——" * 15)
que = input("直接登入请输入#").strip() # 直接登入选项
if que == "#":
choose = "1"
name = name_new
pwd = pwd_new
break elif choose == "1" :
break
else:
print("输入错误,请重新来过!") # 登陆部分和业务处理
i = 0
while tag: name = input("请输入你的用户名:").strip()
pwd = input("请输入你的密码:").strip() if name == "Q" or pwd == "Q": # 退出条件
tag = False
print("欢迎下次使用")
break if i >= 2: # 输入次数判断
print("您今日的次数已用完,账户锁定!")
break if name not in name_list or pwd not in pwd_list: # 登录逻辑
i += 1
print("用户名或者密码错误!")
continue
else:
print("——" * 15)
for i in info: # 业务逻辑展示
print("****%s*****" % i) while tag: # 业务逻辑循环
print("——"*15)
print("——"*15)
yewu = input("请输入你要办理的业务对应数字:").strip()
print("——" * 15)
print("——" * 15) if yewu == "Q": # 退出条件
tag = False
break if yewu == "2": # 取款操作
number_1 = input("请输入取款金额:").strip()
if number_1 < str(bank[name]["money"]):
print("余额不足!")
continue
else:
print("您已取款:1000元")
bank[name]["money"] -= int(number_1) elif yewu == "1": # 存款操作
number_2 = input("请输入存款金额:").strip()
bank[name]["money"] += int(number_2)
print(" 您当前账户余额为:%s" % bank[name]["money"]) elif yewu == "3": # 转账操作
name_zhuanzhang = input("请输入转账的用户名:").strip()
if name_zhuanzhang not in name_list:
print("该用户不存在,请重新输入!")
else:
print("请确认用户%s" % name_zhuanzhang)
money = input("请输入转账金额:").strip()
bank[name]["money"] -= int(money)
bank[name_zhuanzhang]["money"] += int(money)
print("转账成功!")
print("您当前账户余额为:%s" % bank[name]["money"]) elif yewu == "4": # 查询操作
print("您当前账户余额为:%s" % bank[name]["money"])
else:
print("输入错误,请从新输入")
python之极简ATM系统示例的更多相关文章
- 类别不平衡问题之SMOTE算法(Python imblearn极简实现)
类别不平衡问题类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题.例如逻辑回归即不适合处理类别不平衡问题,例如逻辑回归在欺诈检测问题 ...
- 流动python - 一个极简主义event制
event至少该系统的核心,以满足: 1.存储容器事件,可以被添加到事件来删除 2.触发事件fire 守则. class Event(list): def __call__(self, *args, ...
- 极简Word排版示例(以Word2013为例)
文档标题 第一行写下文档的名字,居中,微软雅黑字体,三号 章节标题 每一章的标题单独一行,光标选中这行,设置为标题1 每一节的标题单独一行,光标选中这行,设置为标题2 全部章节标题设置完毕后,下一步 ...
- Python面向对象 组合(选课系统示例)
# Author : Kelvin # Date : 2019/1/15 20:44 """ 学校与老师关联 课程与老师和学校关联 """ ...
- 工具(1): 极简Word排版示例(Example by Word2013)
文档标题 第一行写下文档的名字,居中,微软雅黑字体,三号 章节标题 每一章的标题单独一行,光标选中这行,设置为标题1 每一节的标题单独一行,光标选中这行,设置为标题2 全部章节标题设置完毕后,下一步 ...
- Python 极简教程(八)字符串 str
由于字符串过于重要,请认真看完并保证所有代码都至少敲过一遍. 对于字符串,前面在数据类型中已经提到过.但是由于字符串类型太过于常用,Python 中提供了非常多的关于字符串的操作.而我们在实际编码过程 ...
- [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)
[开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve) 1.滑动平均概念 滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ...
- 你一定看得懂的 DDD+CQRS+EDA+ES 核心思想与极简可运行代码示例
前言 随着分布式架构微服务的兴起,DDD(领域驱动设计).CQRS(命令查询职责分离).EDA(事件驱动架构).ES(事件溯源)等概念也一并成为时下的火热概念,我也在早些时候阅读了一些大佬的分析文,学 ...
- 极简 Node.js 入门 - 1.2 模块系统
极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...
随机推荐
- js 深入原理讲解系列-事件循环
js 深入原理讲解系列-事件循环 能看懂这一题你就掌握了 js 事件循环的核心原理 不要专业的术语,说人话,讲明白! Q: 输出下面 console.log 的正确的顺序? console.log(' ...
- 使用 js 实现十大排序算法: 冒泡排序
使用 js 实现十大排序算法: 冒泡排序 冒泡排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!
- web online code editor All In One
web online code editor All In One 在线代码编辑器 Monaco Editor 摩纳哥编辑器 ️ 22.1k The Monaco Editor is the code ...
- js binary search algorithm
js binary search algorithm js 二分查找算法 二分查找, 前置条件 存储在数组中 有序排列 理想条件: 数组是递增排列,数组中的元素互不相同; 重排 & 去重 顺序 ...
- 破除区块链支付壁垒,NGK支付架构方案浮出水面
什么叫做区块链支付?区块链支付系统与传统支付系统有哪些不同?简要地说,原来传统的支付系统是有一个类似于银行的中间平台存在的,用户们的支付交易第一时间是寄存在平台,由平台核实验证交易行为之后,方才放行交 ...
- K8S部署Redis Cluster集群(三主三从模式) - 部署笔记
一.Redis 介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理.它可以存储和操作高级数据类型,例如列表,地图,集合和排序 ...
- 使用gitlab构建基于docker的持续集成(二)
使用gitlab构建基于docker的持续集成(二) gitlab docker aspnetcore Centos配置gitlab镜像并且启动 Centos配置防火墙 windows上访问gitla ...
- MongoDB 在评论中台的实践
本文主要讲述 vivo 评论中台在数据库设计上的技术探索和实践. 一.业务背景 随着公司业务发展和用户规模的增多,很多项目都在打造自己的评论功能,而评论的业务形态基本类似.当时各项目都是各自设计实现, ...
- go 报错 import cycle not allowed
运行时报错,import cycle not allowed : 查了goole大概知道了原因,还是导包类的问题,我检察了一下我的代码库,发现我昨天划分几个工具文件,里面的两个文件相互引用,就导致报i ...
- 【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?
转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ...