本系列的理想是:让"非专业"人员通过少量
python
代码达到10X
办公效率。
你现在是公司的HR,领导想让你在做一个抽奖系统在年会用,参与人员与奖品全在Excel
里。见下图
回想起你刚学会用python
,于是心血来潮,开始编码。
脑海里回想起无数个抽奖画面,觉得都有点太过花哨,你所需要的只有一个抽奖按钮,一个奖品显示。所以这一定需要:
接着你在纸上画下设计草图:
为了减少不必要依赖,你决定使用python
自带的tkinter
。
Tkinter 是 Python 的标准 GUI 库,基于 Tcl/Tk。它随 Python 标准库一起提供,不需要额外安装即可使用。 优点:简单易学,适合快速开发小型应用;跨平台支持良好。
import tkinter as tk
# 创建主窗口
root = tk.Tk()
root.title('抽奖系统')
# 设置长宽
root.geometry('400x300')
# 显示抽奖结果
result_label = tk.Label(root, text='点击按钮开始抽奖', font=('Arial', 24))
result_label.pack(pady=20)
# 抽奖按钮,Button的参数command可以指定点击事件
lottery_button = tk.Button(root, text='开始抽奖', font=('Arial', 16))
lottery_button.pack(pady=60)
# 运行Tkinter事件循环
root.mainloop()
运行结果
奖品设置的比较固定可以手动录入,公司员工的数量较多,考虑从Excel直接读取。
以下需要用到pandas和openpyxl,需要手动安装。
pip install pandas openpyxl
读取第一列的代码
import pandas as pd
import openpyxl
# 读取Excel文件
df = pd.read_excel('data.xlsx')
# 获取第一列的数据
column_data = df.iloc[:, 0].tolist()
# 输出数据
print(column_data)
输出结果
['李四', '王五', '赵六', '花花']
以上代码的输出结果没有张三,因为第一行默认是序列。
如果想要取消预设,可以在读取的时候追加参数,写成如下:
df = pd.read_excel('data.xlsx', header=None)
最简单就是,根据数量在Excle中另起一列,然后和职工做随机。
以下算法片段可运行尝试
from random import choice
# 假设我们有以下奖项列表
awards = ['一等奖', '二等奖', '三等奖', '谢谢参与']
# 随机抽取一个奖项
result = choice(awards)
print(result)
这时可能会注意到一个问题,奖品数量有限,如何做到每个都只会抽到一次呢?
不同于Java,python可以直接删除掉这个元素,优化后的代码如下
from random import choice
# 假设我们有以下奖项列表(实际应从Excel中读取)
awards = ['一等奖', '二等奖', '三等奖', '谢谢参与']
def draw_lottery():
# 随机抽取一个奖项
result = choice(awards)
awards.remove(result)
print(result)
for i in range(len(awards)):
draw_lottery()
remove
方法的另外一个特点:如果有多个重复的,也只会删除一个。
不想在Excel里面操作,也可通过代码生成奖品列表。
最后,把职工和对应的他们抽到的奖品全都列在label中就可以了
result_label.config(text=result)
相比于其他语言做图形化的抽奖,python依旧发挥着他简洁的特点。在一些小的细节上,比如随机抽取,也是一步搞定。当真效率神器!
说到效率神器,一键搞定当然是最想要的了。然后就在最近我发现腾讯云出了一款高性能应用服务器HAI,可以一键部署Stable Diffusion、语言模型、Pytorch等环境。如果你也想拥有一个自己的大模型助手,又担心本地电脑性能有限,那就来点击下方体验快速部署的乐趣吧!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。