目录
上机练习 5
File(文件) 读写
文本文件写
文本文件读
csv 文件写
csv 文件读
异常
自定义异常
上机练习 6
上机练习5的作业我昨天就写完了,但是因为它是今天的作业,我就今天发咯。
# atm 机模拟器:使用 main 入口,结合函数与列表等实现 # 核心数据如下 # data=[{'id':'1001','passwd':'123456','bat':'1000'}, # {'id':'1002','passwd':'123456','bat':'2000'}, # {'id':'1003','passwd':'123456','bat':'3000'}, # {'id':'1004','passwd':'123456','bat':'4000'}] # ---------- 欢迎使用 ATM 机 ---------- # 请输入账号:1002 # 请输入密码:123 # 账号或密码错误 # ---------- 欢迎使用 ATM 机 ---------- # 请输入账号:1002 # 请输入密码:123456 # 登录成功,请进行下列操作: # ----------操作页面---------- # 1.存款 # 2.取款 # 3.查询余额 # 4.转账 # 5.退出 # ---------------------------- # 请输入操作选项:3 # 您当前的可用余额为:2000 # ----------操作页面---------- # 1.存款 # 2.取款 # 3.查询余额 # 4.转账 # 5.退出 # ---------------------------- # 请输入操作选项:1 # 请输入存款金额:2000 # 您已成功存款 2000,您当前的余额为:4000 # ----------操作页面---------- # 1.存款 # 2.取款# 3.查询余额 # 4.转账 # 5.退出 # ---------------------------- # 请输入操作选项:2 # 请输入取款金额:5000 # 您的余额不足! # ----------操作页面---------- # 1.存款 # 2.取款 # 3.查询余额 # 4.转账 # 5.退出 # ---------------------------- # 请输入操作选项:2 # 请输入取款金额:200 # 您已成功取款 200,您当前余额为:3800 # ----------操作页面---------- # 1.存款 # 2.取款 # 3.查询余额 # 4.转账 # 5.退出 # ---------------------------- # 请输入操作选项:4 # 请输入收款账号:1003 # 请输入转账金额:200 # 您已成功转账 200,您当前余额为:3600 # 注:判断收款账号不能是自己,判断账号是否存在,判断自己余额是否够转账 # ----------操作页面---------- # 1.存款 # 2.取款 # 3.查询余额 # 4.转账 # 5.退出 # ---------------------------- # 请输入操作选项:5 # 请问是否退出? y/n:y # 已成功退出,请取回您的银行卡 # ---------------------------- # 请输入操作选项:6 # 输入错误data=[{'id':'1001','passwd':'123456','bat':'1000'}, {'id':'1002','passwd':'123456','bat':'2000'}, {'id':'1003','passwd':'123456','bat':'3000'}, {'id':'1004','passwd':'123456','bat':'4000'}] # 登录 def login(): errorcount=0 while 1: print("---------- 欢迎使用 ATM 机 ----------") id=input("请输入账号:") passwd=input("请输入密码:") for i in data: if id==i['id'] and passwd==i['passwd']: print("登录成功,请进行下列操作:") return id errorcount+=1 if 7-errorcount<=0: print("密码错误次数过多,请稍后再试") return None else : print(f"账号或密码错误,你还有{7-errorcount}次机会") pass # 取钱 def DrawMoney(id): money=int(input("请输入取款金额:")) if money<=0: print("取款金额不正确!") else: for i in data: if id==i['id']: if int(i['bat']) # 1.修改 atm 取款机数据为持久化永久存储,csv 读取实现(分别使用函数实 现读和取),使 # 用异常处理 atm 取款机读取 csv 时判断文件是否存在,如果文件不存在提示" 没有文件使用 # 原数据" # 2.使用异常在 atm 取款机的项目中存款函数中: # 如果输入的存款金额不是整数则提示:请输入整数; # 如果输入的存款金额不是 100 的倍数或者是负数则提示:请输入 100 的倍数 的正整数 import csv data=[] # 存入 csv 文件 def write_csv(): with open('/root/atmdata.csv','w',encoding='UTF-8') as sdata: savedata=csv.DictWriter(sdata,fieldnames=['id','passwd', 'bat']) savedata.writeheader() savedata.writerows(data) sdata.close() # 读取 csv 文件 def read_csv(): try: with open('/root/atmdata.csv','r',encoding='UTF-8') as fdata: datadict=csv.DictReader(fdata) data.clear() for i in datadict: data.append(i) fdata.close() except FileNotFoundError: print("没有文件使用原数据")# 注销账号 def DropMyCounter(id): DropConfirm=input("确认一下该账户的密码:") for i in data: if id==i['id'] and DropConfirm==i['passwd']: data.remove(i) print("注销成功!") write_csv() return print("密码不正确!") pass # 注册账号 def Register(): try: id=input("请输入您的账号:") passwd=input("请输入您的密码:") if id in [i['id'] for i in data]: raise Exception("账号已存在!") if len(id)<4 or len(passwd)<6: raise Exception("账号 id 不能小于 4 位,密码不能小于 6 位! ") data.append({'id':id,'passwd':passwd,'bat':'0'}) print("注册成功!") write_csv() except Exception as e: print("注册失败!",e) pass # 登录界面 def login(): errorcount=0 while 1: print("---------- 欢迎使用 ATM 机 ----------") RegisterOrLogin=input("请选择登录或注册(R 注册,L 登录,Q 退 出):") if RegisterOrLogin=="R": Register() continue elif RegisterOrLogin=="L": id=input("请输入账号:") passwd=input("请输入密码:") for i in data: if id==i['id'] and passwd==i['passwd']: print("登录成功,请进行下列操作:")return id errorcount+=1 if 7-errorcount<=0: print("密码错误次数过多,请稍后再试") return None else : print(f"账号或密码错误,你还有{7-errorcount}次机会 ") elif RegisterOrLogin=="Q": return None else: print("输入错误,请重新输入") pass # 取钱 def DrawMoney(id): try: money=int(input("请输入取款金额:")) if money<=0: print("取款金额不正确!") else: for i in data: if id==i['id']: if int(i['bat']) 今天写的代码比较多,但是整理一下思路还是不难写的。