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 09 Python
使用python加密自己的密码
Aug 04 Python
详解Python中映射类型的内建函数和工厂函数
Aug 19 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
Python利用递归和walk()遍历目录文件的方法示例
Jul 14 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
Aug 05 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
jupyter notebook的安装与使用详解
May 18 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
python3实现常见的排序算法(示例代码)
Jul 04 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
PHP编程网上资源导航
2006/10/09 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
PHP导出带样式的Excel示例代码
2016/08/28 PHP
HTML中的setCapture和releaseCapture使用介绍
2012/03/21 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue项目设置scrollTop不起作用(总结)
2018/12/21 Javascript
JS实现求字符串中出现最多次数的字符和次数示例
2019/07/05 Javascript
layui复选框的全选与取消实现方法
2019/09/02 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
Python的Flask框架应用调用Redis队列数据的方法
2016/06/06 Python
安装Python和pygame及相应的环境变量配置(图文教程)
2017/06/04 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
Python自定义线程类简单示例
2018/03/23 Python
kafka-python批量发送数据的实例
2018/12/27 Python
Python3 单行多行万能正则匹配方法
2019/01/07 Python
Python如何爬取实时变化的WebSocket数据的方法
2019/03/09 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
土耳其风格手工珠宝:Ottoman Hands
2019/07/26 全球购物
什么是servlet
2012/05/08 面试题
策划主管的工作职责
2013/11/24 职场文书
贷款委托书范本
2014/04/08 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
我的中国梦演讲稿高中篇
2014/08/19 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
2016入党积极分子党课学习心得体会
2015/10/09 职场文书
Python 内置函数速查表一览
2021/06/02 Python
手把手教你从零开始react+antd搭建项目
2021/06/03 Javascript
vue使用watch监听属性变化
2022/04/30 Vue.js