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 相关文章推荐
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
Python 实现数据库更新脚本的生成方法
Jul 09 Python
python文件特定行插入和替换实例详解
Jul 12 Python
python+django+sql学生信息管理后台开发
Jan 11 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
Python实现聊天机器人的示例代码
Jul 09 Python
Windows下PyCharm安装图文教程
Aug 27 Python
python3正则提取字符串里的中文实例
Jan 31 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
Windows平台Python编程必会模块之pywin32介绍
Oct 01 Python
python基于property()函数定义属性
Jan 22 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 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有效防止图片盗用、盗链的两种方法
2016/11/01 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
超清晰的document对象详解
2007/02/27 Javascript
学习js所必须要知道的一些
2007/03/07 Javascript
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
2010/08/13 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
2016/07/07 Javascript
基于KO+BootStrap+MVC实现的分页控件代码分享
2016/11/07 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
node.js中cluster的使用教程
2017/06/09 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
基于zTree树形菜单的使用实例
2017/12/25 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
一文了解vue-router之hash模式和history模式
2019/05/31 Javascript
js面向对象方式实现拖拽效果
2021/03/03 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
Python决策树分类算法学习
2017/12/22 Python
pyhton列表转换为数组的实例
2018/04/04 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
详解Python:面向对象编程
2019/04/10 Python
python性能测量工具cProfile使用解析
2019/09/26 Python
python+OpenCV实现图像拼接
2020/03/05 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
Python短信轰炸的代码
2020/03/25 Python
CSS3线性渐变简单实现以及该属性在浏览器中的不同
2012/12/12 HTML / CSS
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
HTML5触摸事件演化tap事件介绍
2016/03/25 HTML / CSS
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
大专生自荐信
2013/10/04 职场文书
顶岗实习协议书
2015/01/29 职场文书
员工聘用合同范本
2015/09/21 职场文书
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫