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 ...
随机推荐
- sass文件编译(.scss->.css),使用ruby环境,在windows10,koala工具,Error: Invalid GBK character "\xE5"
1 注意事项: 问题描述: 请确保 Encoding.default_external = Encoding.find('utf-8') 是uft-8 编码! sass文件编译时候使用ruby环境,在 ...
- Next.js 10
Next.js 10 October 27th 2020 https://nextjs.org/blog/next-10 refs xgqfrms 2012-2020 www.cnblogs.com ...
- Parcel all in one
Parcel all in one Parcel https://parceljs.org/ # cli $ yarn global add parcel-bundler $ npm install ...
- How to using PyPI publish a Python package
How to using PyPI publish a Python package PyPI & Python package https://pypi.org/ main make a f ...
- dragable tabs & iframe & new window
dragable tabs & iframe & new window https://www.npmjs.com/package/react-draggable-tab demo h ...
- css useful skills blogs
css useful skills blogs https://caniuse.com/ https://css-tricks.com https://css-tricks.com/almanac/p ...
- express+apollo+mongodb
阿波罗服务器入门 λ yarn add --dev @babel/core @babel/cli @babel/preset-env λ yarn add --dev nodemon // " ...
- Iterable object of JavaScript
数组是可迭代的,所以数组可以用于for of,字符串也是可迭代的,所以字符串也可以用作for of,那么,对象呢? 试一试: var somebody = { start:0, end:100 } f ...
- 代码生成器 springboot架构
import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.IdType; ...
- Vue学习笔记-vue调试工具vue-devtools安装及使用
一 使用环境: windows 7 64位操作系统 二 vue调试工具vue-devtools安装及使用 1.下载: 百度中查找 "vue-devtools下载" 找到最新 ...