我爱普洱茶 发表于 2024-9-3 07:46:03

学习大数据DAY30 python基础语法3

目录

上机训练 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'])<money:
print("您的余额不足!")
break
else:
i['bat']=str(int(i['bat'])-money)
print(f"您已成功取款{money},您当前余额为:
{i['bat']}")
break
pass
# 存钱
def SaveMoney(id):
money=int(input("请输入存款金额:"))
if money<=0:print("存款金额不正确!")
else:
for i in data:
if id==i['id']:
i['bat']=str(int(i['bat'])+money)
print(f"您已成功存款{money},您当前的余额为:
{i['bat']}")
break
pass
# 查询余额
def CheckMoney(id):
for i in data:
if id==i['id']:
print(f"您当前的可用余额为:{i['bat']}")
break
pass
#转账
def GiveMoney(id):
give_id=input("请输入收款账号:")
if give_id==id:
print("收款账号不能是自己!")
else:
for i in data:
if give_id==i['id']:
money=int(input("请输入转账金额:"))
if money<=0:
print("转账金额不正确!")
return
else:
for j in data:
if id==j['id']:
if int(j['bat'])<money:
print("您的余额不足!")
return
else:
i['bat']=str(int(i['bat'])+money
)
j['bat']=str(int(j['bat'])-money
)
print(f"您已成功转账{money},您当前
余额为:{j['bat']}")
return
print("账号不存在!")pass
#操作界面
def Operation(id):
if id==None:
return
while 1:
op=int(input("""----------操作页面----------
1.存款
2.取款
3.查询余额
4.转账
5.退出
----------------------------
请输入操作选项:"""))
if op==1:
SaveMoney(id)
elif op==2:
DrawMoney(id)
elif op==3:
CheckMoney(id)
elif op==4:
GiveMoney(id)
elif op==5:
QuiteATM=input("请问是否退出? y/n:")
if QuiteATM=="y":
print("已成功退出,请取回您的银行卡")
return
else:
continue
else:
print("输入错误")
pass
if __name__=="__main__":
id=login()
Operation(id) 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 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'])<money:
print("您的余额不足!")
break
else:
i['bat']=str(int(i['bat'])-money)
print(f"您已成功取款{money},您当前余额为:
{i['bat']}")
write_csv()
break
except ValueError:
print("请输入整数!")
except Exception as e:
print("其它错误,请联系管理员!",e)
pass
# 存钱
def SaveMoney(id):
try:
money=int(input("请输入存款金额:"))
if money%100!=0 or money<=0:
print("存款金额不正确!请输入 100 的倍数的正整数!")else:
for i in data:
if id==i['id']:
i['bat']=str(int(i['bat'])+money)
print(f"您已成功存款{money},您当前的余额为:
{i['bat']}")
write_csv()
break
except ValueError:
print("请输入整数!")
except Exception as e:
print("其它错误,请联系管理员!",e)
pass
# 查询余额
def CheckMoney(id):
for i in data:
if id==i['id']:
print(f"您当前的可用余额为:{i['bat']}")
break
pass
#转账
def GiveMoney(id):
give_id=input("请输入收款账号:")
if give_id==id:
print("收款账号不能是自己!")
else:
for i in data:
if give_id==i['id']:
try:
money=int(input("请输入转账金额:"))
if money<=0:
print("转账金额不正确!")
return
else:
for j in data:
if id==j['id']:
if int(j['bat'])<money:
print("您的余额不足!")
return
else:
i['bat']=str(int(i['bat'])+m
oney)j['bat']=str(int(j['bat'])-m
oney)
print(f"您已成功转账{money},
您当前余额为:{j['bat']}")
write_csv()
return
except ValueError:
print("请输入整数!")
return
except Exception as e:
print("其它错误,请联系管理员!",e)
return
print("账号不存在!")
pass
#操作界面
def Operation(id):
if id==None:
return
while 1:
op=input("""----------操作页面----------
1.存款
2.取款
3.查询余额
4.转账
5.退出
6.注销账号
----------------------------
请输入操作选项:""")
if op=='1':
SaveMoney(id)
elif op=='2':
DrawMoney(id)
elif op=='3':
CheckMoney(id)
elif op=='4':
GiveMoney(id)
elif op=='5':
QuiteATM=input("请问是否退出? y/n:")
if QuiteATM=="y":
print("已成功退出,请取回您的银行卡")
return
else:
continueelif op=='6':
DropMyCounter(id)
return
else:
print("输入错误")
pass
if __name__=="__main__":
read_csv()
id=login()
Operation(id)
# 3.将内容“诚挚邀请您来参加本次宴会”追加到“邀请函.txt”文件末尾。
# 4.读取邀请函的内容。
with open('/root/python/邀请函.txt', 'a', encoding='UTF-8') as f:
f.write("诚挚邀请您来参加本次宴会\n")
f.close()
with open('/root/python/邀请函.txt', 'r', encoding='UTF-8') as f:
data=f.read()
print(data)
f.close()
    今天写的代码比力多,但是整理一下思绪还是不难写的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 学习大数据DAY30 python基础语法3