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

打印 上一主题 下一主题

主题 517|帖子 517|积分 1551

目录

上机训练 5
File(文件) 读写
文本文件写
文本文件读
csv 文件写
csv 文件读
非常
自定义非常
上机训练 6


上机训练 5

上机训练5的作业我昨天就写完了,但是因为它是今天的作业,我就今天发咯。
  1. # atm 机模拟器:使用 main 入口,结合函数与列表等实现
  2. # 核心数据如下
  3. # data=[{'id':'1001','passwd':'123456','bat':'1000'},
  4. # {'id':'1002','passwd':'123456','bat':'2000'},
  5. # {'id':'1003','passwd':'123456','bat':'3000'},
  6. # {'id':'1004','passwd':'123456','bat':'4000'}]
  7. # ---------- 欢迎使用 ATM 机 ----------
  8. # 请输入账号:1002
  9. # 请输入密码:123
  10. # 账号或密码错误
  11. # ---------- 欢迎使用 ATM 机 ----------
  12. # 请输入账号:1002
  13. # 请输入密码:123456
  14. # 登录成功,请进行下列操作:
  15. # ----------操作页面----------
  16. # 1.存款
  17. # 2.取款
  18. # 3.查询余额
  19. # 4.转账
  20. # 5.退出
  21. # ----------------------------
  22. # 请输入操作选项:3
  23. # 您当前的可用余额为:2000
  24. # ----------操作页面----------
  25. # 1.存款
  26. # 2.取款
  27. # 3.查询余额
  28. # 4.转账
  29. # 5.退出
  30. # ----------------------------
  31. # 请输入操作选项:1
  32. # 请输入存款金额:2000
  33. # 您已成功存款 2000,您当前的余额为:4000
  34. # ----------操作页面----------
  35. # 1.存款
  36. # 2.取款# 3.查询余额
  37. # 4.转账
  38. # 5.退出
  39. # ----------------------------
  40. # 请输入操作选项:2
  41. # 请输入取款金额:5000
  42. # 您的余额不足!
  43. # ----------操作页面----------
  44. # 1.存款
  45. # 2.取款
  46. # 3.查询余额
  47. # 4.转账
  48. # 5.退出
  49. # ----------------------------
  50. # 请输入操作选项:2
  51. # 请输入取款金额:200
  52. # 您已成功取款 200,您当前余额为:3800
  53. # ----------操作页面----------
  54. # 1.存款
  55. # 2.取款
  56. # 3.查询余额
  57. # 4.转账
  58. # 5.退出
  59. # ----------------------------
  60. # 请输入操作选项:4
  61. # 请输入收款账号:1003
  62. # 请输入转账金额:200
  63. # 您已成功转账 200,您当前余额为:3600
  64. # 注:判断收款账号不能是自己,判断账号是否存在,判断自己余额是否够转账
  65. # ----------操作页面----------
  66. # 1.存款
  67. # 2.取款
  68. # 3.查询余额
  69. # 4.转账
  70. # 5.退出
  71. # ----------------------------
  72. # 请输入操作选项:5
  73. # 请问是否退出? y/n:y
  74. # 已成功退出,请取回您的银行卡
  75. # ----------------------------
  76. # 请输入操作选项:6
  77. # 输入错误data=[{'id':'1001','passwd':'123456','bat':'1000'},
  78. {'id':'1002','passwd':'123456','bat':'2000'},
  79. {'id':'1003','passwd':'123456','bat':'3000'},
  80. {'id':'1004','passwd':'123456','bat':'4000'}]
  81. # 登录
  82. def login():
  83. errorcount=0
  84. while 1:
  85. print("---------- 欢迎使用 ATM 机 ----------")
  86. id=input("请输入账号:")
  87. passwd=input("请输入密码:")
  88. for i in data:
  89. if id==i['id'] and passwd==i['passwd']:
  90. print("登录成功,请进行下列操作:")
  91. return id
  92. errorcount+=1
  93. if 7-errorcount<=0:
  94. print("密码错误次数过多,请稍后再试")
  95. return None
  96. else :
  97. print(f"账号或密码错误,你还有{7-errorcount}次机会")
  98. pass
  99. # 取钱
  100. def DrawMoney(id):
  101. money=int(input("请输入取款金额:"))
  102. if money<=0:
  103. print("取款金额不正确!")
  104. else:
  105. for i in data:
  106. if id==i['id']:
  107. if int(i['bat'])<money:
  108. print("您的余额不足!")
  109. break
  110. else:
  111. i['bat']=str(int(i['bat'])-money)
  112. print(f"您已成功取款{money},您当前余额为:
  113. {i['bat']}")
  114. break
  115. pass
  116. # 存钱
  117. def SaveMoney(id):
  118. money=int(input("请输入存款金额:"))
  119. if money<=0:print("存款金额不正确!")
  120. else:
  121. for i in data:
  122. if id==i['id']:
  123. i['bat']=str(int(i['bat'])+money)
  124. print(f"您已成功存款{money},您当前的余额为:
  125. {i['bat']}")
  126. break
  127. pass
  128. # 查询余额
  129. def CheckMoney(id):
  130. for i in data:
  131. if id==i['id']:
  132. print(f"您当前的可用余额为:{i['bat']}")
  133. break
  134. pass
  135. #转账
  136. def GiveMoney(id):
  137. give_id=input("请输入收款账号:")
  138. if give_id==id:
  139. print("收款账号不能是自己!")
  140. else:
  141. for i in data:
  142. if give_id==i['id']:
  143. money=int(input("请输入转账金额:"))
  144. if money<=0:
  145. print("转账金额不正确!")
  146. return
  147. else:
  148. for j in data:
  149. if id==j['id']:
  150. if int(j['bat'])<money:
  151. print("您的余额不足!")
  152. return
  153. else:
  154. i['bat']=str(int(i['bat'])+money
  155. )
  156. j['bat']=str(int(j['bat'])-money
  157. )
  158. print(f"您已成功转账{money},您当前
  159. 余额为:{j['bat']}")
  160. return
  161. print("账号不存在!")pass
  162. #操作界面
  163. def Operation(id):
  164. if id==None:
  165. return
  166. while 1:
  167. op=int(input("""----------操作页面----------
  168. 1.存款
  169. 2.取款
  170. 3.查询余额
  171. 4.转账
  172. 5.退出
  173. ----------------------------
  174. 请输入操作选项:"""))
  175. if op==1:
  176. SaveMoney(id)
  177. elif op==2:
  178. DrawMoney(id)
  179. elif op==3:
  180. CheckMoney(id)
  181. elif op==4:
  182. GiveMoney(id)
  183. elif op==5:
  184. QuiteATM=input("请问是否退出? y/n:")
  185. if QuiteATM=="y":
  186. print("已成功退出,请取回您的银行卡")
  187. return
  188. else:
  189. continue
  190. else:
  191. print("输入错误")
  192. pass
  193. if __name__=="__main__":
  194. id=login()
  195. 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. # 1.修改 atm 取款机数据为持久化永久存储,csv 读取实现(分别使用函数实
  2. 现读和取),使
  3. # 用异常处理 atm 取款机读取 csv 时判断文件是否存在,如果文件不存在提示"
  4. 没有文件使用
  5. # 原数据"
  6. # 2.使用异常在 atm 取款机的项目中存款函数中:
  7. # 如果输入的存款金额不是整数则提示:请输入整数;
  8. # 如果输入的存款金额不是 100 的倍数或者是负数则提示:请输入 100 的倍数
  9. 的正整数
  10. import csv
  11. data=[]
  12. # 存入 csv 文件
  13. def write_csv():
  14. with open('/root/atmdata.csv','w',encoding='UTF-8') as
  15. sdata:
  16. savedata=csv.DictWriter(sdata,fieldnames=['id','passwd',
  17. 'bat'])
  18. savedata.writeheader()
  19. savedata.writerows(data)
  20. sdata.close()
  21. # 读取 csv 文件
  22. def read_csv():
  23. try:
  24. with open('/root/atmdata.csv','r',encoding='UTF-8') as
  25. fdata:
  26. datadict=csv.DictReader(fdata)
  27. data.clear()
  28. for i in datadict:
  29. data.append(i)
  30. fdata.close()
  31. except FileNotFoundError:
  32. print("没有文件使用原数据")# 注销账号
  33. def DropMyCounter(id):
  34. DropConfirm=input("确认一下该账户的密码:")
  35. for i in data:
  36. if id==i['id'] and DropConfirm==i['passwd']:
  37. data.remove(i)
  38. print("注销成功!")
  39. write_csv()
  40. return
  41. print("密码不正确!")
  42. pass
  43. # 注册账号
  44. def Register():
  45. try:
  46. id=input("请输入您的账号:")
  47. passwd=input("请输入您的密码:")
  48. if id in [i['id'] for i in data]:
  49. raise Exception("账号已存在!")
  50. if len(id)<4 or len(passwd)<6:
  51. raise Exception("账号 id 不能小于 4 位,密码不能小于 6 位!
  52. ")
  53. data.append({'id':id,'passwd':passwd,'bat':'0'})
  54. print("注册成功!")
  55. write_csv()
  56. except Exception as e:
  57. print("注册失败!",e)
  58. pass
  59. # 登录界面
  60. def login():
  61. errorcount=0
  62. while 1:
  63. print("---------- 欢迎使用 ATM 机 ----------")
  64. RegisterOrLogin=input("请选择登录或注册(R 注册,L 登录,Q 退
  65. 出):")
  66. if RegisterOrLogin=="R":
  67. Register()
  68. continue
  69. elif RegisterOrLogin=="L":
  70. id=input("请输入账号:")
  71. passwd=input("请输入密码:")
  72. for i in data:
  73. if id==i['id'] and passwd==i['passwd']:
  74. print("登录成功,请进行下列操作:")return id
  75. errorcount+=1
  76. if 7-errorcount<=0:
  77. print("密码错误次数过多,请稍后再试")
  78. return None
  79. else :
  80. print(f"账号或密码错误,你还有{7-errorcount}次机会
  81. ")
  82. elif RegisterOrLogin=="Q":
  83. return None
  84. else:
  85. print("输入错误,请重新输入")
  86. pass
  87. # 取钱
  88. def DrawMoney(id):
  89. try:
  90. money=int(input("请输入取款金额:"))
  91. if money<=0:
  92. print("取款金额不正确!")
  93. else:
  94. for i in data:
  95. if id==i['id']:
  96. if int(i['bat'])<money:
  97. print("您的余额不足!")
  98. break
  99. else:
  100. i['bat']=str(int(i['bat'])-money)
  101. print(f"您已成功取款{money},您当前余额为:
  102. {i['bat']}")
  103. write_csv()
  104. break
  105. except ValueError:
  106. print("请输入整数!")
  107. except Exception as e:
  108. print("其它错误,请联系管理员!",e)
  109. pass
  110. # 存钱
  111. def SaveMoney(id):
  112. try:
  113. money=int(input("请输入存款金额:"))
  114. if money%100!=0 or money<=0:
  115. print("存款金额不正确!请输入 100 的倍数的正整数!")else:
  116. for i in data:
  117. if id==i['id']:
  118. i['bat']=str(int(i['bat'])+money)
  119. print(f"您已成功存款{money},您当前的余额为:
  120. {i['bat']}")
  121. write_csv()
  122. break
  123. except ValueError:
  124. print("请输入整数!")
  125. except Exception as e:
  126. print("其它错误,请联系管理员!",e)
  127. pass
  128. # 查询余额
  129. def CheckMoney(id):
  130. for i in data:
  131. if id==i['id']:
  132. print(f"您当前的可用余额为:{i['bat']}")
  133. break
  134. pass
  135. #转账
  136. def GiveMoney(id):
  137. give_id=input("请输入收款账号:")
  138. if give_id==id:
  139. print("收款账号不能是自己!")
  140. else:
  141. for i in data:
  142. if give_id==i['id']:
  143. try:
  144. money=int(input("请输入转账金额:"))
  145. if money<=0:
  146. print("转账金额不正确!")
  147. return
  148. else:
  149. for j in data:
  150. if id==j['id']:
  151. if int(j['bat'])<money:
  152. print("您的余额不足!")
  153. return
  154. else:
  155. i['bat']=str(int(i['bat'])+m
  156. oney)j['bat']=str(int(j['bat'])-m
  157. oney)
  158. print(f"您已成功转账{money},
  159. 您当前余额为:{j['bat']}")
  160. write_csv()
  161. return
  162. except ValueError:
  163. print("请输入整数!")
  164. return
  165. except Exception as e:
  166. print("其它错误,请联系管理员!",e)
  167. return
  168. print("账号不存在!")
  169. pass
  170. #操作界面
  171. def Operation(id):
  172. if id==None:
  173. return
  174. while 1:
  175. op=input("""----------操作页面----------
  176. 1.存款
  177. 2.取款
  178. 3.查询余额
  179. 4.转账
  180. 5.退出
  181. 6.注销账号
  182. ----------------------------
  183. 请输入操作选项:""")
  184. if op=='1':
  185. SaveMoney(id)
  186. elif op=='2':
  187. DrawMoney(id)
  188. elif op=='3':
  189. CheckMoney(id)
  190. elif op=='4':
  191. GiveMoney(id)
  192. elif op=='5':
  193. QuiteATM=input("请问是否退出? y/n:")
  194. if QuiteATM=="y":
  195. print("已成功退出,请取回您的银行卡")
  196. return
  197. else:
  198. continueelif op=='6':
  199. DropMyCounter(id)
  200. return
  201. else:
  202. print("输入错误")
  203. pass
  204. if __name__=="__main__":
  205. read_csv()
  206. id=login()
  207. Operation(id)
  208. # 3.将内容“诚挚邀请您来参加本次宴会”追加到“邀请函.txt”文件末尾。
  209. # 4.读取邀请函的内容。
  210. with open('/root/python/邀请函.txt', 'a', encoding='UTF-8') as f:
  211. f.write("诚挚邀请您来参加本次宴会\n")
  212. f.close()
  213. with open('/root/python/邀请函.txt', 'r', encoding='UTF-8') as f:
  214. data=f.read()
  215. print(data)
  216. f.close()
复制代码

    今天写的代码比力多,但是整理一下思绪还是不难写的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表