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]
  • 相关阅读:
    [转]HD钱包的助记词与密钥生成原理
    [转]简单科普私钥、地址、助记词、Keystore的区别
    [转]Sequelize 中文API文档-4. 查询与原始查询
    [转]Node.JS使用Sequelize操作MySQL
    [转]OmniLayer / omnicore API 中文版
    [转]usdt omnicore testnet 测试网络
    [转]USDT与omniCore钱包
    [转]BTC RPC API GetTransaction
    [转]比特币测试链——Testnet介绍
    [转]BTC手续费计算,如何设置手续费
  • 原文地址:https://www.cnblogs.com/shiyu404/p/5947099.html
Copyright © 2011-2022 走看看