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

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

相关内容

热门资讯

wepower有外挂!hhpo... wepower有外挂!hhpoker德州有挂(透视)存在挂教程(有挂猫腻)-哔哩哔哩;1、超多福利:...
wepokeai机器人!wej... wepokeai机器人!wejoker透视方法(透视)细节揭秘(确实有挂)-哔哩哔哩;亲真的是有正版...
wepokeai代打的胜率!p... wepokeai代打的胜率!pokermaster脚本(透视)黑科技教程(有挂秘笈)-哔哩哔哩是一款...
wepoke黑科技!德普之星透... wepoke黑科技!德普之星透视辅助软件是真的(透视)教你攻略(有挂方略)-哔哩哔哩是一款可以让一直...
wepoke是真的有挂!hh ... wepoke是真的有挂!hh poker辅助有用(透视)细节方法(有挂功能)-哔哩哔哩;最新版202...
wepokeai代打逻辑!po... wepokeai代打逻辑!pokemmo手机版脚本免费(透视)透明教程(真的有挂)-哔哩哔哩;是一款...
wepoke有app软件!we... wepoke有app软件!wepoker辅助工具(透视)透牌教程(有挂分析)-哔哩哔哩;wepoke...
wepok软件透明挂!哈糖大菠... 【福星临门,好运相随】;wepok软件透明挂!哈糖大菠萝软件下载(透视)2025新版教程(揭秘有挂)...
七分钟了解!新畅游互娱科技(辅... 七分钟了解!新畅游互娱科技(辅助挂)详细透视开挂辅助新2025版(切实真的有挂)-哔哩哔哩;1、首先...
wepokeai代打逻辑!德州... wepokeai代打逻辑!德州hhpoker脚本(透视)辅助教程(有挂秘笈)-哔哩哔哩;是一款可以让...