python+redisは簡単に赤いパッケージを実現します

8327 ワード

redisとは何ですか.
Redisは高性能key-valueデータベースです!
詳細については、検索エンジンを移動して自分で検索してください.
この小さなプログラムを書く目的はredisに対して簡単な小さな操作を行うことであり、redisに対して初歩的な理解があり、高尚な騒ぎ操作はなく、白の読書に適している.
プログラムは全部で3つの部分に分かれている.
  1.お年玉の作成
  2.お年玉をデータベースに保存
  3.お年玉を取り出す
1.お年玉の作成
まず、お年玉の作成に必要なパラメータを決定する必要があります.
  1.お年玉の最小金額0.01
  2.お年玉の数
  3.お年玉の総額
  4.お年玉にはID番号が必要です(データベースを格納する際に使用する必要があります)
  5.お年玉1個あたりの金額
1 def __init__(self):
2         self.min = 0.01  #       
3         self.nums = 1  #     
4         self.money = 0  #      
5         self.ID = []  #           ID 。
6         self.evePm = []  #          

 
お年玉の総金額とお年玉の数を入力するには、ここで判断する必要があります(平均金額が0.01未満の気まずい状況を避ける)
while self.money / self.nums < 0.01:
            self.money = float(input(""))
            self.nums = int(input(""))
            if self.money / self.nums < 0.01:
                print("")

ここでヒントを与える必要があります.金額と数量を取得するときは必ずタイプ変換を行います.そうしないと、タイプエラーが報告されます.
金額とお年玉の数があれば、お年玉の金額の配分ができます.ここは困りました.お年玉の金額はどうやって分配しますか.そこで私はネットで探して、調べないで知らないで、調べると本当に奇妙です.お年玉を配るアルゴリズムは複雑です.だから私は時間と労力を節約するために、比較的いい加減な方法を選んだ.シロに対してもすぐに分かるわけではありませんが、ゆっくり読むと読めるようになります.
for i in range(self.nums):  #            
            if i != self.nums-1:
                safe_total = (self.money - (self.nums - i) * self.min) / (self.nums - i)  #       
                evemoney = random.randint(self.min * 100, int(safe_total * 100)) / 100
                self.money -= evemoney
            else:
                evemoney = round(self.money, 2)  #          
            self.evePm.append(evemoney)

お年玉の配分にはいくつか注意が必要です.1つ目は、この計算方法でお年玉を割り当てるときに必ず判断しなければならないことです.判断がなければ、各お年玉の金額を直接算出すると、すべてのお年玉の金額を合計して総お年玉の金額に等しくないことがわかります.原因も乱数による災いだ.2つ目は判断しましたが、お年玉の金額が少し大きい場合、最後のお年玉の金額は小数点以下の数桁に正確になります.これは多くの言語にある問題です.では、後の2人まで正確にしなければなりません.それでも総額ですか?安心して、はい.
お年玉をデータベースに送信(redisインストールについては他の技術ブログを参照)
pool = redis.ConnectionPool(host='127.0.0.1', password='')  #   redis   
r = redis.Redis(connection_pool=pool)  #   redis  

グローバルredis接続プールの作成
self.ID = [i for i in range(self.nums)]  #         id
        red_dic = zip(self.ID, self.evePm)  #  id        
        # for i, j in red_dic:
        #    print("id:{}    :{}".format(i, j))
        for i, j in red_dic:
            r.set(i, j)

お年玉データをデータベースに格納
ユーザーがお年玉を取る
def __init__(self, nums):
        self.ID = []  #     id
        self.nums = nums  #     

    def get_red(self):
        pnums = int(input(""))
        self.ID = [i for i in range(pnums)]
        random.shuffle(self.ID)  #  id      ,         
        if pnums > self.nums:  #        
            for i in range(pnums):
                if i < self.nums:
                    print("id {}      {} ".format(self.ID[i], r.get(i).decode("utf-8")))
                else:
                    print("id {}        ".format(self.ID[i]))
        else:
            for j in range(pnums):
                print("id {}      {} ".format(self.ID[j], r.get(j).decode("utf-8")))
            print("  {}      ".format(self.nums - pnums))

ここのコードは少しも難易度がなく、よく見てもわかります.私は説明しません.
プログラムのソースコードを取得するには、「取得」をクリックします.