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元组操作实例解析
Sep 23 Python
举例介绍Python中的25个隐藏特性
Mar 30 Python
Python提取Linux内核源代码的目录结构实现方法
Jun 24 Python
基于python 字符编码的理解
Sep 02 Python
Python元字符的用法实例解析
Jan 17 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
python交换两个变量的值方法
Jan 12 Python
Python循环结构的应用场景详解
Jul 11 Python
Python 用matplotlib画以时间日期为x轴的图像
Aug 06 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
使用pytorch实现论文中的unet网络
Jun 24 Python
python中@contextmanager实例用法
Feb 07 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生成带有雪花背景的验证码
2006/10/09 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
JavaScript 判断日期格式是否正确的实现代码
2011/07/04 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
2014/12/20 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
浅谈JavaScript的闭包函数
2016/12/08 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
深入浅析JSONAPI在PHP中的应用
2017/12/24 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
JavaScript中 ES6变量的结构赋值
2018/07/10 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
可拖拽组件slider.js使用方法详解
2020/12/04 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
Python基于select实现的socket服务器
2016/04/13 Python
Python(Django)项目与Apache的管理交互的方法
2018/05/16 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
详解python中的异常捕获
2020/12/15 Python
css3圆角边框和边框阴影示例
2014/05/05 HTML / CSS
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
学校经典推荐信
2013/10/30 职场文书
三方股东合作协议书范本
2014/09/28 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
新学期感想
2015/08/10 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
canvas多重阴影发光效果实现
2021/04/20 Javascript
教你修复 Win11应用商店加载空白问题
2021/12/06 数码科技
Java中的随机数Random
2022/03/17 Java/Android