python抽奖简单小程序游戏_python实现抽奖小程序
本文实例为大家分享了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写一个简单的网页游戏_python模拟点击玩游戏的实例讲解
小编发现很多小伙伴都喜欢玩一些游戏,而手游因为玩的场景限制不多,所以受众的人更多.游戏里有很多重复的任务需要我们完成,虽然过程非常无聊,但是为了任务奖励还是有很多小伙伴不厌其烦的去做.那么,有没有什么 ...
- python扫雷游戏_python实现扫雷小游戏
前面我们用python实现了贪吃蛇.坦克大战.飞船大战.五子棋等游戏 今天我们用python来实现一下扫雷游戏 本游戏代码量和源文件较多 可以从我的GitHub地址中获取 构建地雷区 import r ...
- python做简单温度转华氏_python温度转换华氏温度实现代码
相信有些小伙伴,在没接触py之前,肯定都是有所准备的,想学语言由来已久,拿小编来说,一直趁着空挡就开始找课程学习,用记下学习历程,还会向一些大佬提出有疑问的点.这样一来我能获取问题答案,也能听到其他人 ...
- 采用python语言实现猜数游戏_python实现猜数游戏
本文实例为大家分享了python实现猜数游戏的具体代码,供大家参考,具体内容如下 一.问题描述: 使用python开发一个猜数小游戏,程序随机产生0~1024之间的数字,用户输入猜测数字,程序告诉用户 ...
- python画简单花的代码_Python竟能画这么漂亮的花,帅呆了(代码分享)
讨论函数和模块这么久后,我一直想用一个有趣的和有趣的例子总结,同时作为一个实际锻炼.有趣的编程实际上是最好的学习方式.当我刚毕业十多年前,我第一次写在我的手机应用程序的工作.当时,我认为这是非常有趣的 ...
- python抽奖简单小程序游戏_python——(分别用两种方式实现)公司年会抽奖小程序...
张三科技有限公司有300名员工,开年会抽奖,奖项如下 一等奖3名 : 泰国五日游 二等奖6名 :iphone手机 三等奖30名 :避孕套一盒 规则: 1.一共抽3次,第一次抽3等奖,第二次抽2等奖,第 ...
- 如何用python制作五子棋游戏_Python制作打地鼠小游戏
原文链接 Python制作小游戏(二十一)mp.weixin.qq.com 效果展示 打地鼠小游戏https://www.zhihu.com/video/1200492442610450432 简介 ...
- python点击按钮打开游戏_Python如何入门?直接按这个方式玩炸弹超人小游戏,就能掌握编程...
还在从基础知识点开始学python吗? 还不如直接玩python小游戏炸弹超人,跟着详细教程开始,从不会python到掌握python基础知识点,并且还有所有源码,想学不会编程都难. 下面讲一下开发P ...
- python五子棋程序教程_python实现五子棋小程序
本文实例为大家分享了python实现五子棋小程序的具体代码,供大家参考,具体内容如下 一.结合书上例子,分三段编写: wuziqi.py #coding:utf-8 from win_notwin i ...
最新文章
- 编写程序记录文件位置
- 企业运维监控平台架构设计与实现
- git错误fatal: remote origin already exists.
- 红米note2移动4g在哪里显示无服务器,红米note2移动版能用联通4g吗?红米note2插联通卡用法介绍...
- DataInputStream
- hibernate.jdbc.fetch_size 和 hibernate.jdbc.batch_size
- pdf在html中加载不出来,在网页中打开显示PDF
- 机器学习没有想象中的那么难
- 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践
- python输入数据pyqt5_python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例...
- Python分析一下双色球,中大奖指日可待!
- 获取本机IP和MAC地址
- 以前收集到的PHP总结笔记
- 金融数据安全分类分级解决方案
- 极客大挑战--PHP
- 某年的月初月末时间戳获取
- 决策树(ID3、C4.5、CART、随机森林)
- 二、单链表的头插法建表和尾插法建表
- 对付木马:空手入白刃谁动了我的电脑系统(转)
- 用Python获取Amazon亚马逊的商品信息