学习大数据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'])

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

相关内容

热门资讯

透视脚本!wpk透视辅助靠谱吗... 透视脚本!wpk透视辅助靠谱吗,wpk辅助购买,解说技巧(有挂教程)1、玩家可以在wpk透视辅助靠谱...
透视辅助!新天道作弊(辅助挂)... 透视辅助!新天道作弊(辅助挂)一直存在有挂(详细辅助扑克教程)所有人都在同一条线上,像星星一样排成一...
aapoker透视软件!wep... aapoker透视软件!wepoker辅助透视软件(透视)一贯存在有挂(教你攻略)1、wepoker...
透视辅助!潮友辅助开挂(辅助挂... 透视辅助!潮友辅助开挂(辅助挂)一直存在有挂(详细辅助可靠技巧)1.潮友辅助开挂 ai辅助创建新账号...
透视透视!hhpoker透视下... 透视透视!hhpoker透视下载链接在哪里,wpk有没有脚本,实用技巧(有挂方法)1、hhpoker...
德普之星辅助功能如何打开!we... 德普之星辅助功能如何打开!wepoker作弊方法(透视)其实存在有挂(必备教程)1、完成wepoke...
透视辅助!雷霆辅助器(辅助挂)... 透视辅助!雷霆辅助器(辅助挂)真是是真的有挂(详细辅助2025新版教程)1、完成雷霆辅助器透视辅助安...
透视线上!wpk辅助器安装,w... 透视线上!wpk辅助器安装,wpk辅助ai,靠谱教程(有挂教程)1、起透看视 wpk辅助器安装透明视...
wpk透视脚本视频!uupok... wpk透视脚本视频!uupoker透视(透视)竟然真的有挂(德州教程)1、uupoker透视ai机器...
透视辅助!皮皮胡子辅助(辅助挂... 透视辅助!皮皮胡子辅助(辅助挂)总是存在有挂(详细辅助德州论坛)1、玩家可以在皮皮胡子辅助软件透明挂...