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抓取Discuz!用户名脚本代码
Dec 30 Python
python里对list中的整数求平均并排序
Sep 12 Python
Python输出9*9乘法表的方法
May 25 Python
Scrapy爬虫实例讲解_校花网
Oct 23 Python
django实现登录时候输入密码错误5次锁定用户十分钟
Nov 05 Python
python实现剪切功能
Jan 23 Python
Django给admin添加Action的步骤详解
May 01 Python
Django 对象关系映射(ORM)源码详解
Aug 06 Python
python 上下文管理器及自定义原理解析
Nov 19 Python
python实现引用其他路径包里面的模块
Mar 09 Python
Python torch.flatten()函数案例详解
Aug 30 Python
python中出现invalid syntax报错的几种原因分析
Feb 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
咖啡知识 除了喝咖啡还有那些知识点
2021/03/06 新手入门
PHP下MAIL的另一解决方案
2006/10/09 PHP
PHP中for循环语句的几种变型
2006/11/26 PHP
PHP写入WRITE编码为UTF8的文件的实现代码
2008/07/07 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
Ajax+PHP实现的分类列表框功能示例
2019/02/11 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
jQuery EasyUI API 中文文档 - Spinner微调器使用
2011/10/21 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
js查看一个函数的执行时间实例代码
2015/09/12 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
Mvc提交表单的四种方法全程详解
2016/08/10 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
解决URL地址中的中文乱码问题的办法
2017/02/10 Javascript
Webpack path与publicPath的区别详解
2018/05/03 Javascript
webpack4简单入门实例
2018/09/06 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
Python 模拟员工信息数据库操作的实例
2017/10/23 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
2018/07/17 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
python简单实现9宫格图片实例
2020/09/03 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
怎样写辞职信
2015/02/27 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python