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创建XML文档
Mar 01 Python
python简单猜数游戏实例
Jul 09 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
python绘图模块matplotlib示例详解
Jul 26 Python
python的re模块使用方法详解
Jul 26 Python
Python3从零开始搭建一个语音对话机器人的实现
Aug 23 Python
python列表推导式入门学习解析
Dec 02 Python
tensorflow 自定义损失函数示例代码
Feb 05 Python
Python eval函数原理及用法解析
Nov 14 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
详解Python中*args和**kwargs的使用
Apr 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
Yii查询生成器(Query Builder)用法实例教程
2014/09/04 PHP
PHP7.0版本备注
2015/07/23 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
Date对象格式化函数代码
2010/07/17 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
js仿黑客帝国字母掉落效果代码分享
2020/11/08 Javascript
Jquery ajax基础教程
2015/11/20 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
jQuery实现的仿百度,仿谷歌搜索下拉框效果示例
2016/12/30 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
详解如何使用webpack打包Vue工程
2017/05/27 Javascript
使用npm安装最新版本nodejs
2018/01/18 NodeJs
JavaScript中arguments和this对象用法分析
2018/08/08 Javascript
实例详解vue.js浅度监听和深度监听及watch用法
2018/08/16 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
解析Python中的异常处理
2015/04/28 Python
python清除指定目录内所有文件中script的方法
2015/06/30 Python
python采用django框架实现支付宝即时到帐接口
2016/05/17 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
windows下python安装小白入门教程
2018/09/18 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
python实现无边框进度条的实例代码
2020/12/30 Python
python自动化发送邮件实例讲解
2021/01/04 Python
加拿大花店:1800Flowers.ca
2016/11/16 全球购物
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
初一体育教学反思
2014/01/29 职场文书
委托证明模板
2014/09/16 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
办公室卫生管理制度
2015/08/04 职场文书