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易忽视知识点小结
May 25 Python
python xml.etree.ElementTree遍历xml所有节点实例详解
Dec 04 Python
有趣的python小程序分享
Dec 05 Python
zookeeper python接口实例详解
Jan 18 Python
Matplotlib 生成不同大小的subplots实例
May 25 Python
Django 浅谈根据配置生成SQL语句的问题
May 29 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
python用什么编辑器进行项目开发
Jun 17 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
Nov 17 Python
PyTorch 如何检查模型梯度是否可导
Jun 05 Python
Python实现老照片修复之上色小技巧
Oct 16 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Apr 12 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
19个超实用的PHP代码片段
2014/03/14 PHP
PHP调用wsdl文件类型的接口代码分享
2014/11/19 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
php实现Mysql简易操作类
2015/10/11 PHP
总结AJAX相关JS代码片段和浏览器模型
2007/08/15 Javascript
JavaScript中的对象化编程
2008/01/16 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
js对字符的验证方法汇总
2015/02/04 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
CentOS下Python3的安装及创建虚拟环境的方法
2018/11/28 Python
Python实现时间序列可视化的方法
2019/08/06 Python
在tensorflow中设置保存checkpoint的最大数量实例
2020/01/21 Python
Python递归求出列表(包括列表中的子列表)的最大值实例
2020/02/27 Python
浅析python函数式编程
2020/09/26 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
客服文员岗位职责
2013/11/29 职场文书
实习单位接收函模板
2014/01/10 职场文书
喜之郎果冻广告词
2014/03/20 职场文书
融资合作协议书范本
2014/10/17 职场文书
2014年教研工作总结
2014/12/06 职场文书
介绍信的格式
2015/01/30 职场文书
大学生入党自传2015
2015/06/26 职场文书
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python