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控制台显示时钟的示例
Feb 24 Python
用python删除java文件头上版权信息的方法
Jul 31 Python
Python中if __name__ == "__main__"详细解释
Oct 21 Python
python3+PyQt5重新实现自定义数据拖放处理
Apr 19 Python
python实现读Excel写入.txt的方法
Apr 29 Python
Python代码使用 Pyftpdlib实现FTP服务器功能
Jul 22 Python
Python列表list常用内建函数实例小结
Oct 22 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
Jan 08 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
Python + selenium + crontab实现每日定时自动打卡功能
Mar 31 Python
python 生成任意形状的凸包图代码
Apr 16 Python
实例代码讲解Python 线程池
Aug 24 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
使用php语句将数据库*.sql文件导入数据库
2014/05/05 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
php的常量和变量实例详解
2017/06/27 PHP
tp5(thinkPHP5框架)captcha验证码配置及验证操作示例
2019/05/28 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
setTimeout和setInterval的区别你真的了解吗?
2011/03/31 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
2016/10/26 Javascript
编写React组件项目实践分析
2018/03/04 Javascript
解决Layui选择全部,换页checkbox复选框重新勾选的问题方法
2018/08/14 Javascript
vue基础之模板和过滤器用法实例分析
2019/03/12 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
python将图片文件转换成base64编码的方法
2015/03/14 Python
详解Python迭代和迭代器
2016/03/28 Python
举例讲解Python中metaclass元类的创建与使用
2016/06/30 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
python 中的list和array的不同之处及转换问题
2018/03/13 Python
Python 读取某个目录下所有的文件实例
2018/06/23 Python
opencv 图像礼帽和图像黑帽的实现
2020/07/07 Python
CSS3实现超酷的黑猫警长首页
2016/04/26 HTML / CSS
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
运动会通讯稿150字
2014/02/15 职场文书
个人实习生的自我评价
2014/02/16 职场文书
人力资源作业细则
2014/03/03 职场文书
保护环境建议书300字
2014/05/13 职场文书
入职担保书范文
2014/05/21 职场文书
工伤私了协议书范本
2014/11/24 职场文书
python 逐步回归算法
2021/04/06 Python
MySQL深分页问题解决思路
2022/12/24 MySQL