欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)抽獎小程序

 更新時間:2020年04月15日 15:08:55   作者:guoxuequan  
這篇文章主要為大家詳細介紹了python實現(xiàn)抽獎小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了python實現(xiàn)抽獎小程序的具體代碼,供大家參考,具體內(nèi)容如下

設計一個抽獎服務 

背景:有x個獎品,要求在y天內(nèi)發(fā)完;每天至少發(fā)放z個獎品;每天抽獎人數(shù)不定,事先會假設一個范圍是m-n

舉例:有100個獎品,要求5天內(nèi)發(fā)完,每天至少發(fā)15個獎品;每天來抽獎的人估計是 2000-3000 人,希望獎品能夠比較均勻,但隨機的抽取出來。

接口要求:服務監(jiān)聽一個端口,測試程序不斷連接,發(fā)送一個數(shù)字代表是第幾天,比如第1-2000個請求發(fā)送1(模擬第一天來了2000人),第2001到5000請求發(fā)送2(模擬第二天來了3000人)... 服務返回 0 or 1 表示是否抽到獎品

client.py:設置初始化參數(shù),模擬用戶向server端發(fā)送數(shù)據(jù)

# -*- coding: utf-8 -*-
import socket
import random

address = ('127.0.0.1', 31500)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

x = int(input("獎品個數(shù)x:"))
y = int(input("發(fā)放天數(shù)y:"))
z = int(input("每天至少發(fā)放獎品個數(shù):"))
m = int(input("最少人數(shù)m:"))
n = int(input("最多人數(shù)n:"))

data = '{"x":'+str(x)+',"y":+'+str(y)+',"z":'+str(z)+',"m":'+str(m)+',"n":'+str(n)+'}'
s.sendto(data.encode('utf-8'), address)

for day in range(y):
 num = random.randint(m, n)
 print("第",day+1,"天人數(shù)為",num)
 k=0
 for k in range(num):
 s.sendto(str(day+1).encode('utf-8'), address)
s.close()

server.py:服務端接收初始數(shù)據(jù)和每個用戶發(fā)送的數(shù)據(jù)

# -*- coding: utf-8 -*-

import socket
import lottery

address = ('127.0.0.1', 31500)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(address)

list=[]

data, addr = s.recvfrom(2048)
data = data.decode('utf-8')
print ("received:", data, "from", addr)
dic=eval(data)
x=dic['x']
y=dic['y']
z=dic['z']
m=dic['m']
n=dic['n']

k=0
preday = 1
while True:
 k += 1
 day, addr = s.recvfrom(2048)
 if not day:
 print ("client has exist")
 break
 if preday != day:
 list.append(k-1)
 preday = day
 day = int(day.decode('utf-8'))
 x -= lottery.check(x,y,z,m,n,k,day,list)
s.close()

lottery.py:抽獎程序算法

#Filename:lottery.py

def check(x,y,z,m,n,k,day,list):

 #估計到來當天的人數(shù)和獎品的個數(shù)
 if day == 1 or day == y:
 e_x = z
 e_people = n
 elif day == y:
 e_x = x
 e_people = n
 else:
 e_x = x/(y+1-day)
 e_people = sum(list)/len(list)
 
 #中獎間隔
 length = int(e_people/e_x)

 lucky = 0
 if x>0 and k%length == 0 :
 #print(x,"第",k,"個中獎")
 lucky = 1

 print("第",k,"個--第",day,"天--是否中獎--",lucky)
 return lucky

源碼下載:python實現(xiàn)抽獎小程序

想要學習更多關于抽獎功能的實現(xiàn),請參考此專題:抽獎功能

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python程序中設置HTTP代理

    Python程序中設置HTTP代理

    本文主要給大家簡單講解了下http代理的概念以及如何在Python程序中設置http代理的方法,非常的詳細,有需要的小伙伴可以參考下
    2016-11-11
  • python爬蟲之requests庫的使用詳解

    python爬蟲之requests庫的使用詳解

    這篇文章主要為大家介紹了python爬蟲之requests庫的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 解析python高級異常和運算符重載

    解析python高級異常和運算符重載

    異常是一個事件,該事件會在程序執(zhí)行過程中發(fā)生,影響了程序的正常執(zhí)行。 運算符重載,意味著在某個類的方法中攔截內(nèi)置的操作,當類的實例出現(xiàn)在內(nèi)置操作中,Python會調(diào)用你的方法,并且方法的返回值會作為相應操作的結(jié)果。本文主要介紹了python的高級異常和運算符重載
    2021-06-06
  • 簡單介紹Python的輕便web框架Bottle

    簡單介紹Python的輕便web框架Bottle

    這篇文章主要介紹了Python的輕便web框架Bottle,因其注重輕便的設計,與Flask一樣,Bottle框架的人氣同樣也非常高,需要的朋友可以參考下
    2015-04-04
  • 詳解python多線程之間的同步(一)

    詳解python多線程之間的同步(一)

    這篇文章主要介紹了python多線程之間的同步,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • python?pip特殊用法之pip?install?-v?-e?.命令詳解

    python?pip特殊用法之pip?install?-v?-e?.命令詳解

    這篇文章主要給大家介紹了關于python?pip特殊用法之pip?install?-v?-e?.命令的相關資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-09-09
  • 分享Python字符串關鍵點

    分享Python字符串關鍵點

    字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號來創(chuàng)建字符串,通過本篇文章給大家分享python字符串關鍵點相關資料,感興趣的朋友一起學習吧
    2015-12-12
  • Python代碼集pathlib應用之獲取指定目錄下的所有文件

    Python代碼集pathlib應用之獲取指定目錄下的所有文件

    這篇文章主要介紹了Python代碼集pathlib應用之獲取指定目錄下的所有文件,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • python基礎之爬蟲入門

    python基礎之爬蟲入門

    這篇文章主要介紹了python基礎之爬蟲入門,文中有非常詳細的代碼示例,對正在學習python爬蟲的小伙伴們有很好地幫助喲,需要的朋友可以參考下
    2021-05-05
  • Python實現(xiàn)圖片尺寸縮放腳本

    Python實現(xiàn)圖片尺寸縮放腳本

    這篇文章主要為大家分享了Python實現(xiàn)圖片尺寸縮放的小腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03

最新評論