python实现抽奖小程序


Posted in Python onApril 15, 2020

本文实例为大家分享了python实现抽奖小程序的具体代码,供大家参考,具体内容如下

设计一个抽奖服务 

背景:有x个奖品,要求在y天内发完;每天至少发放z个奖品;每天抽奖人数不定,事先会假设一个范围是m-n

举例:有100个奖品,要求5天内发完,每天至少发15个奖品;每天来抽奖的人估计是 2000-3000 人,希望奖品能够比较均匀,但随机的抽取出来。

接口要求:服务监听一个端口,测试程序不断连接,发送一个数字代表是第几天,比如第1-2000个请求发送1(模拟第一天来了2000人),第2001到5000请求发送2(模拟第二天来了3000人)... 服务返回 0 or 1 表示是否抽到奖品

client.py:设置初始化参数,模拟用户向server端发送数据

# -*- 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("奖品个数x:"))
y = int(input("发放天数y:"))
z = int(input("每天至少发放奖品个数:"))
m = int(input("最少人数m:"))
n = int(input("最多人数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,"天人数为",num)
 k=0
 for k in range(num):
 s.sendto(str(day+1).encode('utf-8'), address)
s.close()

server.py:服务端接收初始数据和每个用户发送的数据

# -*- 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):

 #估计到来当天的人数和奖品的个数
 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实现抽奖小程序

想要学习更多关于抽奖功能的实现,请参考此专题:抽奖功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
python实现数独游戏 java简单实现数独游戏
Mar 30 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
Jan 29 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 Python
Python实现TCP探测目标服务路由轨迹的原理与方法详解
Sep 04 Python
浅析PEP572: 海象运算符
Oct 15 Python
解决Tensorflow sess.run导致的内存溢出问题
Feb 05 Python
基于python-pptx库中文文档及使用详解
Feb 14 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
python爬虫 requests-html的使用
Nov 30 Python
学会Python数据可视化必须尝试这7个库
Jun 16 Python
Python常见数据类型转换操作示例
May 08 #Python
Python数据类型之Number数字操作实例详解
May 08 #Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 #Python
Python数据类型之String字符串实例详解
May 08 #Python
Python数据类型之List列表实例详解
May 08 #Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 #Python
详解Python的三种可变参数
May 08 #Python
You might like
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
自编函数解决pathinfo()函数处理中文问题
2014/11/03 PHP
JS 日期验证正则附asp日期格式化函数
2009/09/11 Javascript
javascript深入理解js闭包
2010/07/03 Javascript
浅析js中2个等号与3个等号的区别
2013/08/06 Javascript
JS操作数据库的实例代码
2013/10/17 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
node.js Web应用框架Express入门指南
2014/05/28 Javascript
纯Javascript实现ping功能的方法
2015/03/20 Javascript
使用JQuery实现的分页插件分享
2015/11/05 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
利用原生JS自动生成文章标题树的实例
2016/08/22 Javascript
JS实现touch 点击滑动轮播实例代码
2017/01/19 Javascript
JS多个异步请求 按顺序执行next实现解析
2019/09/16 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
初步解析Python下的多进程编程
2015/04/28 Python
python中的字符串内部换行方法
2018/07/19 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
纯CSS3绘制打火机动画火焰效果
2016/07/18 HTML / CSS
美国最大的网络男装服装品牌:Bonobos
2017/05/25 全球购物
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
2015/05/29 面试题
农村党建工作汇报材料
2014/10/27 职场文书
考研英语复习计划
2015/01/19 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
公司保密管理制度
2015/08/04 职场文书
nginx配置文件使用环境变量的操作方法
2021/06/02 Servers
python开发人人对战的五子棋小游戏
2022/05/02 Python