学习大数据DAY30 python基础语法3
创始人
2024-11-13 15:08:44
0次

目录

上机练习 5

File(文件) 读写

文本文件写

文本文件读

csv 文件写

csv 文件读

异常

自定义异常

上机练习 6


上机练习 5

上机练习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'])

File(文件) 读写

持久化存储数据 例如:atm 取款机程序重新执行数据没有保存

文本文件写

write()方法将任何字符串写入打开的文件,换行符(‘\n‘) mode="w"覆盖写 mode="a"追加写 文本文件可以是 txt 或者 csv with open("D:\\wtest.txt",mode='w',encoding='UTF-8') as f : f.write("ccccccccccccccc\n") f.write("ccccccccccccccc\n") f.close()

文本文件读

#全部读出来 with open("/root/python/test.txt",mode='r',encoding='UTF-8') as f: resutl = f.read() print(resutl) f.close() #readlines 方法则是读取所有行,一次性全部读出, #按行作为分隔符条件,返回所有行组成的列表(每行内容是一个元素) with open("/root/python/test.txt",mode='r',encoding='UTF-8') as f: data = f.readlines() for i in data :print(i,end="") f.close()

csv 文件写

import csv 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'}] with open("/root/python/user.csv",mode="w", encoding="UTF-8") as f: result=csv.DictWriter(f,fieldnames=["id","passwd","bat"]) result.writeheader() result.writerows(data) f.close()

csv 文件读

将 csv 文件以字典的形式存储在列表里 id,passwd,bat 1001,123456,1000 1002,123456,2000 1003,123456,3000 1004,123456,4000 with open("/root/python/user.csv",mode='r',encoding='UTF-8') as f: result = csv.DictReader(f) data.clear() for i in result:data.append(i) f.close()

异常

程序在运行期间,当 python 检测到一个错误时,解释器就无法继续执行(程序 崩溃) 了,反而出现了一些错误提示,这就是所谓的异常 try: x = int(input("请输入一个数字: ")) z=100/x print("ok") except ValueError: print("您输入的不是数字,请再次尝试输入!") except ZeroDivisionError: print("除数不能为零") except Exception as e: print("未知错误") print(e) finally: print("无论如何都会执行")

自定义异常

使用 raise 语句抛出一个指定的异常。 try: x = int(input("请输入一个小于 5 的数字: ")) if x > 5: raise Exception("x 不能大于 5。")# print("x 不能大于 5") except Exception as e: print(e)

上机练习 6

# 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'])

今天写的代码比较多,但是整理一下思路还是不难写的。

相关内容

热门资讯

菠萝智星德州详情!wepoke... 菠萝智星德州详情!wepoker是不是技术越好牌就越好(透视),原本真的是有透视软件主打赛后复盘的 ...
WePoKer有挂!微扑克发牌... WePoKer有挂!微扑克发牌真的很假(辅助),竟然是真的有辅助软件是一款可以让一直输的玩家,快速成...
红龙PoKer必备!wepok... 您好,wepoker开挂透视方法这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】...
德州扑克科普!德扑之星辅助下载... 您好,德扑之星辅助下载这款游戏可以开挂的,确实是有挂的,需要了解加微【485275054】很多玩家在...
aapoker总结!微扑克辅助... aapoker总结!微扑克辅助封号(辅助器),总是真的有辅助器安装是一款可以让一直输的玩家,快速成为...
微扑克普及!AlphaQ德州辅... 微扑克普及!AlphaQ德州辅助怎么样(辅助器),一向是真的有辅助器安装主打赛后复盘的 AI 游戏攻...
德州扑克必备!德州辅助app官... 您好,德州辅助app官方最新版本介绍大全这款游戏可以开挂的,确实是有挂的,需要了解加微【136704...
智星菠萝德州关于!德扑之星开挂... 智星菠萝德州关于!德扑之星开挂辅助器(辅助器),先前是有辅助器神器是一款可以让一直输的玩家,快速成为...
菠萝智星德州揭露!德扑之星系统... 您好:德扑之星系统规律这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
WOK关于!wepoker辅助... WOK关于!wepoker辅助挂是什么(透视挂),原本是真的有透视挂软件AI 智能体黑科技再上新,自...