鱼C论坛

 找回密码
 立即注册
查看: 1723|回复: 0

[技术交流] 【008】Python实现历史记录的存取(猜数字游戏)

[复制链接]
发表于 2019-6-12 22:11:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. '''
  2. 目的:以猜数字游戏为例,在磁盘中永久记录下最近5次的输入,并随时读取
  3. '''
  4. from random import randint
  5. from collections import deque
  6. import pickle
  7. #打开'history.txt'文件,如果不存在则创建
  8. open('history.txt','a')
  9. #判断'history.tet'是否为空
  10. isempty = bool(open('history.txt','rb').read())

  11. #如果'history.tet'不为空则将文件中的内容读取并反序列化成对象,否则创建一个长度为5的空双向队列q
  12. q = (pickle.load(open('history.txt','rb')) if isempty else (deque([],5)))

  13. #产生一个随机0到50的答案
  14. N = randint(0,50)
  15. def guess(k):
  16.     if k == N:
  17.         print('You guessed it')
  18.         return True
  19.     if k > N:
  20.         print('%s is greater than N' % k)
  21.     else:
  22.         print('%s is less than N' % k)
  23.     return False
  24. while True:
  25.     ans = input('Please submit your answer:')
  26.     if ans.isdigit():
  27.         k = int(ans)
  28.         q.append(k)
  29.         if guess(k):
  30.             break
  31.    
  32.     #输入'hy'查看最近5次的历史回答
  33.     elif ans == 'hy':
  34.         print(list(q))

  35.     #输入'exit'退出答题
  36.     elif ans == 'exit':
  37.         break

  38. #将p对象序列化写入'history.txt'文件中
  39. pickle.dump(q,open('history.txt','wb'))
  40. '''
  41. 提问与思考:
  42. 1、pickle模块可以序列化对象并保存到磁盘中,并在需要的时候读取出来,任何对象都可以执行序列化操作
  43. 2、pickle关于参数file,必须是以二进制的形式进行操作(存取)
  44. 3、deque用于创建一个有限大小的双向列表(先进先出)
  45. 4、isdigit() 方法检测字符串是否只由数字组成
  46. 5、一开始打开文件如果是'w'形式会从头开始编辑,即原有内容会被删除;以'r'形式打开不存在不会自动创建
  47. '''
复制代码

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-10 17:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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