先调用numpy 库,利用numpy随机生成红包,再打开文件,有45个人,所以准备45个红包。及以下几个过程:
1.读取名单文件。
2.随机输入红包金额和个数。
3.根据你输入的数量来生成获奖人名单并根据权重计算出红包金额。
4.如果是普通红包就直接输入的金额除以红包数来得到每个红包的金额,并与获奖名单一一对应。
5.生成获奖人名单以及其红包的金额,并得出运气王。
代码:
import pandas as pd
import numpy as np
import random as rd
def hongbao(n,m):
global r
a=np.array(rd.sample(range(1,46),n)).reshape(n,1) #随机生成n个不重复的数
r=np.round(a / a.sum() * m,2)
def meanhb(n,m):
global r
a=np.ones([n,1],dtype = int)
r=np.round(a/a.sum()*m,2)
data1=pd.read_csv(r'C:\Users\libo\Desktop\class_7.csv',encoding='gbk ')
df1=pd.DataFrame(data1)
df1=np.array(df1)
z_input=input('拼手气红包-0 普通红包-1')
x_input=float(input('请输入红包金额'))
y_input=int(input('请输入红包个数'))
def run(x_input,y_input,z_input):
get_hb=[]#定义空列表
if z_input=='0':
hongbao(y_input,x_input)
if z_input=='1':
meanhb(y_input,x_input)
x=np.random.choice(45,y_input,replace=False)
for k in range(y_input):
k=np.hstack((df1[x[k]],r[k]))
get_hb.append(k)
get_hb=np.array(get_hb)
print('红包领取记录:')
for i in range(y_input):
print(get_hb[i][0:2])
if z_input=='0':
print('运气王是:',end='')
print(get_hb[get_hb[0:,1]==get_hb[0:,1].max()])
run(x_input,y_input,z_input)
运行结果: