"""
用户可登陆系统
输错三次锁定账号

用户可以创建新的用户名密码
新用户初始账户设为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系统示例的更多相关文章

  1. 类别不平衡问题之SMOTE算法(Python imblearn极简实现)

    类别不平衡问题类别不平衡问题,顾名思义,即数据集中存在某一类样本,其数量远多于或远少于其他类样本,从而导致一些机器学习模型失效的问题.例如逻辑回归即不适合处理类别不平衡问题,例如逻辑回归在欺诈检测问题 ...

  2. 流动python - 一个极简主义event制

    event至少该系统的核心,以满足: 1.存储容器事件,可以被添加到事件来删除 2.触发事件fire 守则. class Event(list): def __call__(self, *args, ...

  3. 极简Word排版示例(以Word2013为例)

    文档标题 第一行写下文档的名字,居中,微软雅黑字体,三号 章节标题 每一章的标题单独一行,光标选中这行,设置为标题1 每一节的标题单独一行,光标选中这行,设置为标题2 全部章节标题设置完毕后,下一步 ...

  4. Python面向对象 组合(选课系统示例)

    # Author : Kelvin # Date : 2019/1/15 20:44 """ 学校与老师关联 课程与老师和学校关联 """ ...

  5. 工具(1): 极简Word排版示例(Example by Word2013)

    文档标题 第一行写下文档的名字,居中,微软雅黑字体,三号 章节标题 每一章的标题单独一行,光标选中这行,设置为标题1 每一节的标题单独一行,光标选中这行,设置为标题2 全部章节标题设置完毕后,下一步 ...

  6. Python 极简教程(八)字符串 str

    由于字符串过于重要,请认真看完并保证所有代码都至少敲过一遍. 对于字符串,前面在数据类型中已经提到过.但是由于字符串类型太过于常用,Python 中提供了非常多的关于字符串的操作.而我们在实际编码过程 ...

  7. [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve)

    [开发技巧]·Python极简实现滑动平均滤波(基于Numpy.convolve) ​ 1.滑动平均概念 滑动平均滤波法(又称递推平均滤波法),时把连续取N个采样值看成一个队列 ,队列的长度固定为N ...

  8. 你一定看得懂的 DDD+CQRS+EDA+ES 核心思想与极简可运行代码示例

    前言 随着分布式架构微服务的兴起,DDD(领域驱动设计).CQRS(命令查询职责分离).EDA(事件驱动架构).ES(事件溯源)等概念也一并成为时下的火热概念,我也在早些时候阅读了一些大佬的分析文,学 ...

  9. 极简 Node.js 入门 - 1.2 模块系统

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

随机推荐

  1. Adobe DreamWeaver CC 快捷键

    1 1 ADOBE DREAMWEAVER CC Shortcuts: DREAMWEAVER CC DOCUMENT EDITING SHORTCUTS Select Dreamweaver > ...

  2. 一个模块如何同时支持 ESM 和 CJS

    一个模块如何同时支持 ESM 和 CJS 模块转化 webpack + babel refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问 ...

  3. ruby & rvm

    ruby & rvm https://rvm.io/ Ruby Version Manager (RVM) RVM is a command-line tool which allows yo ...

  4. 用Qt写了个将视频设置为壁纸的软件

    软件功能很简单,使用时占用的资源和播放的视频有关: 依赖于FFplay,Github源码 效果图:

  5. Flutter 创建透明的路由页面

    原文 import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends St ...

  6. sql server 局域网与公网上的发布与订阅

    一台局域网的服务器,可以访问公网. 一台云端的服务器. 要求:将局域网中的服务器部分数据库同步到云端的服务器上. 配置情况: win server 2012 是发布服务器. win server 20 ...

  7. redis的两种持久化的机制,你真的了解么?

    redis提供了两种持久化的机制 RDB和AOF机制 RDB(redis Database):RDB保存某一个时间点之前的快照数据. AOF(Append-Only File):指所有的命令行记录以r ...

  8. 上天的源码要不要——GitHub 热点速览 v.21.08

    作者:HelloGitHub-小鱼干 前几天,"机智号" 所用的飞行软件框架 F´ 被 NASA 开源了,想看 F´ 这个嵌入式的代码不妨考虑下 Sourcetrail 这个神器, ...

  9. TcaplusDB服务体系揭秘

    导言 TcaplusDB是腾讯出品的分布式NoSQL数据库,存储和调度的代码完全自研.具备缓存+落地融合架构.PB级存储.毫秒级时延.无损水平扩展和复杂数据结构等特性.同时具备丰富的生态.便捷的迁移. ...

  10. k8s v1.18.2 centos7 下环境搭建

    准备 服务器:3台机器--1台主.2台工作节点,可以使用virtualbox 搭建虚拟机 主机名 centos version ip docker version flannel version 主机 ...