本文实例为大家分享了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实现抽奖小程序相关推荐

  1. 用python写一个简单的网页游戏_python模拟点击玩游戏的实例讲解

    小编发现很多小伙伴都喜欢玩一些游戏,而手游因为玩的场景限制不多,所以受众的人更多.游戏里有很多重复的任务需要我们完成,虽然过程非常无聊,但是为了任务奖励还是有很多小伙伴不厌其烦的去做.那么,有没有什么 ...

  2. python扫雷游戏_python实现扫雷小游戏

    前面我们用python实现了贪吃蛇.坦克大战.飞船大战.五子棋等游戏 今天我们用python来实现一下扫雷游戏 本游戏代码量和源文件较多 可以从我的GitHub地址中获取 构建地雷区 import r ...

  3. python做简单温度转华氏_python温度转换华氏温度实现代码

    相信有些小伙伴,在没接触py之前,肯定都是有所准备的,想学语言由来已久,拿小编来说,一直趁着空挡就开始找课程学习,用记下学习历程,还会向一些大佬提出有疑问的点.这样一来我能获取问题答案,也能听到其他人 ...

  4. 采用python语言实现猜数游戏_python实现猜数游戏

    本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 一.问题描述: 使用python开发一个猜数小游戏,程序随机产生0~1024之间的数字,用户输入猜测数字,程序告诉用户 ...

  5. python画简单花的代码_Python竟能画这么漂亮的花,帅呆了(代码分享)

    讨论函数和模块这么久后,我一直想用一个有趣的和有趣的例子总结,同时作为一个实际锻炼.有趣的编程实际上是最好的学习方式.当我刚毕业十多年前,我第一次写在我的手机应用程序的工作.当时,我认为这是非常有趣的 ...

  6. python抽奖简单小程序游戏_python——(分别用两种方式实现)公司年会抽奖小程序...

    张三科技有限公司有300名员工,开年会抽奖,奖项如下 一等奖3名 : 泰国五日游 二等奖6名 :iphone手机 三等奖30名 :避孕套一盒 规则: 1.一共抽3次,第一次抽3等奖,第二次抽2等奖,第 ...

  7. 如何用python制作五子棋游戏_Python制作打地鼠小游戏

    原文链接 Python制作小游戏(二十一)​mp.weixin.qq.com 效果展示 打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 ...

  8. python点击按钮打开游戏_Python如何入门?直接按这个方式玩炸弹超人小游戏,就能掌握编程...

    还在从基础知识点开始学python吗? 还不如直接玩python小游戏炸弹超人,跟着详细教程开始,从不会python到掌握python基础知识点,并且还有所有源码,想学不会编程都难. 下面讲一下开发P ...

  9. python五子棋程序教程_python实现五子棋小程序

    本文实例为大家分享了python实现五子棋小程序的具体代码,供大家参考,具体内容如下 一.结合书上例子,分三段编写: wuziqi.py #coding:utf-8 from win_notwin i ...

最新文章

  1. 编写程序记录文件位置
  2. 企业运维监控平台架构设计与实现
  3. git错误fatal: remote origin already exists.
  4. 红米note2移动4g在哪里显示无服务器,红米note2移动版能用联通4g吗?红米note2插联通卡用法介绍...
  5. DataInputStream
  6. hibernate.jdbc.fetch_size 和 hibernate.jdbc.batch_size
  7. pdf在html中加载不出来,在网页中打开显示PDF
  8. 机器学习没有想象中的那么难
  9. 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践
  10. python输入数据pyqt5_python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例...
  11. Python分析一下双色球,中大奖指日可待!
  12. 获取本机IP和MAC地址
  13. 以前收集到的PHP总结笔记
  14. 金融数据安全分类分级解决方案
  15. 极客大挑战--PHP
  16. 某年的月初月末时间戳获取
  17. 决策树(ID3、C4.5、CART、随机森林)
  18. 二、单链表的头插法建表和尾插法建表
  19. 对付木马:空手入白刃谁动了我的电脑系统(转)
  20. 用Python获取Amazon亚马逊的商品信息

热门文章

  1. RK3568平台开发系列讲解(安卓适配篇)Android11 预安装应用功能
  2. 02计蒜客 002蓝桥模拟
  3. Ubuntu20.04桌面系统快速上手教程
  4. 用友通账套备份操作流程
  5. 魔兽世界怀旧服服务器显示配置,《魔兽世界怀旧服》配置要求是什么 什么配置能玩...
  6. lemming games 1!! hdlbits
  7. mac安装pygraphviz找不到头文件
  8. 关于Java,你想知道的一切,这里说透了
  9. 读书:每天做一个情绪稳定的成年人!
  10. 尤雨溪的5KB petite-vue源码解析