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 相关文章推荐
在 Django/Flask 开发服务器上使用 HTTPS
Jul 03 Python
Python六大开源框架对比
Oct 19 Python
手把手教你python实现SVM算法
Dec 27 Python
python实现图片文件批量重命名
Mar 23 Python
python调用staf自动化框架的方法
Dec 26 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
python中import与from方法总结(推荐)
Mar 21 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
python3模拟实现xshell远程执行liunx命令的方法
Jul 12 Python
django 实现celery动态设置周期任务执行时间
Nov 19 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
详解python定时简单爬取网页新闻存入数据库并发送邮件
Nov 27 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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
基于PHP输出缓存(output_buffering)的深入理解
2013/06/13 PHP
php设计模式之单例模式使用示例
2014/01/20 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
Jquery中children与find之间的区别详细解析
2013/11/29 Javascript
jquery制作 随机弹跳的小球特效
2015/02/01 Javascript
jQuery实现DIV层收缩展开的方法
2015/02/27 Javascript
javascript获取文档坐标和视口坐标
2015/05/26 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
原生javascript实现图片无缝滚动效果
2016/02/12 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
2016/07/11 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
vue 重塑数组之修改数组指定index的值操作
2020/08/09 Javascript
[32:30]夜魇凡尔赛茶话会 第一期01:谁是卧底
2021/03/11 DOTA
Django 配置多站点多域名的实现步骤
2019/05/17 Python
Python3 翻转二叉树的实现
2019/09/30 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
Canvas实现保存图片到本地的示例代码
2018/06/28 HTML / CSS
摩顿布朗英国官方网上商店:奢华沐浴、身体和头发护理
2016/10/29 全球购物
H&M旗下高端女装品牌:& Other Stories
2018/05/07 全球购物
weblogic面试题
2016/03/07 面试题
计算机专业应届毕业生自荐信
2013/09/26 职场文书
开学季活动策划方案
2014/02/28 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
高校师德师风自我剖析材料
2014/09/29 职场文书
第一书记观后感
2015/06/08 职场文书
协议书格式模板
2016/03/24 职场文书
如何使用flask将模型部署为服务
2021/05/13 Python
css中:last-child不生效的解决方法
2022/08/05 HTML / CSS