年会抽奖1.0娱乐项目

年会抽奖1.0娱乐项目

首页休闲益智真实模拟喝可乐更新时间:2024-05-07

年底了,又到了一年一度咸鱼转卖年会奖品的好时节,对于年会没有中大奖的我来说,心里自然是愤愤不平。说起来工作这么长时间,就没有中过大奖,基本就是阳关普照。所以突发奇想,自己动手来写一个小小的抽奖系统吧

技术选型

因为是个小项目,而且娱乐为主,开发速度当然是最重要的,再加上自己有段时间没有用python了,所以我们就用python来完成吧。

因为目前没有其他数据的需求,我们就用excel来存储抽奖名单吧,后期再改用其他的方式吧!

模拟数据

python 有个faker包,专门用来模拟测试数据的,使用起来也非常简单,这里我们用它来生成中文名字用来做抽奖员工

if __name__ == "__main__": from faker import Faker f = Faker(locale='zh_CN') name_list = [] for i in range(100): name_list.append(f.name()) for i in range(100): excel_write(name_list)

生成员工如下

随机选取员工

要不说python 快呢,随机抽取员工也是一个random包就能搞定

import random # 随机选取员工 def random_employees(lists, nums): employees_list = random.sample(lists, nums) return employees_list

其中lists 就是从excel中读取的员工列表数据,而nums 就是抽取的员工数

已中奖的不能再参加抽奖

年会抽奖的规则一般都是如果你已经中了一次,后面的奖项自然与你无缘。所以我以往参加年会的时候不到最后一刻,我都以为自己是大奖,最后获得个阳光普照。。。。 这里的逻辑我们先需要通过openpyxl来获取和删除数据

from openpyxl import load_Workbook, Workbook file = "/Users/le/Documents/pyproject/lottery/utils/抽奖员工.xlsx" class ExcelUtils: def __init__(self): self.file = file self.wb = load_workbook(self.file) self.ws = self.wb['Sheet'] def excel_read(self): lists = [] print(self.ws.max_row) # 遍历excel中数据 for i in range(1, self.ws.max_row 1): name = self.ws.cell(i, 1).value lists.append(name) return lists # 通过值获取行数 # 通过值获取行数 def get_cell_row(self, cell_value): lists = [] for i in range(1, self.ws.max_row 1): name = self.ws.cell(i, 1).value for value in cell_value: if name == value: lists.append(i) return lists # 删除一行 def delete_row(self, which_rows): for i in which_rows: self.ws.delete_rows(int(i)) self.wb.save(self.file)

然后我们再取消已中间员工的抽奖名单

# 已获奖的员工不能再抽奖 def del_employees(list_employees): utils = ExcelUtils() list_had_lottery = utils.get_cell_row(list_employees) try: utils.delete_row(list_had_lottery) except Exception as e: print("删除数据失败 :{}".format(e)) 启动项目

打开官方文档,查看示例

@app.get("/lottery/{id}/{nums}") async def lottery(nums): lists = ExcelUtils().excel_read() employees_list = employess.random_employees(lists, int(nums)) # 删除已中奖的员工 employess.del_employees(employees_list) return employees_list if __name__ == "__main__": uvicorn.run(app, host="127.0.0.1", port=8000)

我们将id 的意思为几等奖,nums 为抽取的人数 启动项目后我们来抽奖

3等奖抽10个

这时我们的excel 中会删除10个员工,剩下90个

然后我们直接抽2等奖5个

抽奖显示

剩余85人参与1等奖的瓜分

抽奖3

如果真的只拿这个东西去抽奖那可是太简陋了,年会抽奖玩的是气氛,前端要有动效,有音效才刺激。如果真要我写年会抽奖项目,我肯定要往代码里面"下毒",我必须要拿个大奖啊!

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved