zoukankan      html  css  js  c++  java
  • Python强化训练笔记(七)——使用deque队列以及将对象保存为文件

    collections模块中的deque对象是一个队列,它有着正常队列的先进先出原则。我们可以利用这个对象来实现数据的保存功能。

    例如,现有一个猜数字大小的游戏,系统开始会随机roll点一个0~100的整数,然后键盘开始接收你的输入,每次输入的数字系统会告诉你比这个随机数大还是小,直到你猜对了程序才会结束。如下图这样:

    代码见:

    from collections import deque
    from random import randint
    
    N = randint(0, 100)
    history = deque([], 5)
    
    def guess(k):
        if k == N:
            print "right"
            return True
        if k < N:
            print "%s is less-than N" % k
        if k > N:
            print "%s is greater-than N" % k
        return False
    
    while True:
        line = raw_input("please input a number:")
        if line.isdigit():
            k = int(line)
            history.append(k)
            if guess(k):
                break
        elif line == "history" or line == "h?":
            print list(history)

    在这里我们使用了这个deque对象,它记录下了我们上次的输入历史,便于我们记忆从而避免重复猜测。

    deque([], 5)

    deque这里接受两个参数,第一个为队列的初值,第二个指定存储空间。这里指定长度为5,超出5个长度后,第一个数出去,最新的数进入。

    >>> d = deque([], 5)
    >>> d.append(1)
    >>> d.append(2)
    >>> d.append(3)
    >>> d.append(4)
    >>> d.append(5)
    >>> d
    deque([1, 2, 3, 4, 5], maxlen=5)
    >>> d.append(6)
    >>> d
    deque([2, 3, 4, 5, 6], maxlen=5)

    保存对象

    对于上面的队列d,我们希望保存下来,下次程序重启还可以使用,可以使用pickle模块。

    保存

    >>> import pickle
    >>> s = [1, 2, 3, 4, 5]
    >>> pickle.dump(s, open('object', 'w')) >>> # 这样就将s对象存在了object这个文件中,并且这个文件有一个写权限

    导入

    >>> import pickle
    >>> s = pickle.load('object')
    >>> s
    [1, 2, 3, 4, 5]
  • 相关阅读:
    第二次团队作业
    第一次团队作业
    软件工程结对编程第二次作业
    第四次软件工程作业
    Hadoop综合大作业
    hive基本操作与应用
    熟悉HBase基本操作
    爬虫大作业(爬取广州番禺职业技术学院新闻发布方)
    熟悉常用的HDFS操作
    数据结构化与保存
  • 原文地址:https://www.cnblogs.com/shiyu404/p/5947099.html
Copyright © 2011-2022 走看看