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 03 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
Python利用turtle库绘制彩虹代码示例
Dec 20 Python
利用 python 对目录下的文件进行过滤删除
Dec 27 Python
Python读取视频的两种方法(imageio和cv2)
Apr 15 Python
python+pandas+时间、日期以及时间序列处理方法
Jul 10 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
Python可以实现栈的结构吗
May 27 Python
python上selenium的弹框操作实现
Jul 13 Python
Python 捕获代码中所有异常的方法
Aug 03 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
phpstudy2018升级MySQL5.5为5.7教程(图文)
2018/10/24 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
有关于eclipse配置spket需要注意的一些地方
2013/04/07 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
jquery实现漂浮在网页右侧的qq在线客服插件示例
2013/05/13 Javascript
JS页面延迟执行一些方法(整理)
2013/11/11 Javascript
jquery删除数据记录时的弹出提示效果
2014/05/06 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
巧用canvas
2017/01/21 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
JS验证不重复验证码
2017/02/10 Javascript
基于JavaScript实现抽奖系统
2018/01/16 Javascript
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
vue 实现模糊检索并根据其他字符的首字母顺序排列
2019/09/19 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
原理深度解析Vue的响应式更新比React快
2020/04/04 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
python网络编程实例简析
2014/09/26 Python
python中的随机函数小结
2018/01/27 Python
解决PyCharm的Python.exe已经停止工作的问题
2018/11/29 Python
python算法与数据结构之单链表的实现代码
2019/06/27 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
意大利奢侈品购物网站:Giglio
2018/01/05 全球购物
幼儿园园长岗位职责
2013/11/26 职场文书
大一自我鉴定范文
2013/12/27 职场文书
大学毕业感言一句话
2014/02/06 职场文书
优乐美广告词
2014/03/14 职场文书
初中学生期末评语
2014/04/24 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
承诺书模板大全
2015/05/04 职场文书
治理商业贿赂工作总结
2015/08/10 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
解决redis批量删除key值的问题
2022/03/23 Redis
Redis批量生成数据的实现
2022/06/05 Redis