用python实现随机选人、选取活动或节目小程序

用到的模块请自行导入(在pycharm中菜单栏File选取setting→Python Interprete→“+” → 搜索相应的模块名称,选中→Install Package进行下载)
我用的Excel文件存储的人名格式如下图所示,表头为:姓名,表单名为:Sheet2,列名为:A,文件名为:宿舍名单.xlsx
文件名
显示板的背景图如下,就是一张空白图片,‘22.png’:

代码如下:

// A code block
# 调取用到的模块
import pygame, sys, random
from pygame.locals import *
import pandas as pd

# 定义从文件导入名单的函数
def nameRandom(fileName, sheetName, columnName,cloName):
    name = pd.read_excel(fileName, sheet_name=sheetName, usecols=columnName)
    nameList = []
    for i in name[cloName]:
        nameList.append(i)
    return nameList 

 # 存放数据的文件路径、表单名、列名
filePath = 'D:/chapter01/活动库.xlsx'  # 存放人员名单的Excel文件名称及路径
sheetPath = 'Sheet1'  # 表单名称
cloPath = 'A'   # 列名
namePath = '姓名'  # 表头,注意:excel表中不要将第一行就放入人名
# 从文件中调用数据,放入列表
nameList = nameRandom(filePath, sheetPath, cloPath, namePath)
 
# 输入活动库的路径: 本程序是将活动直接放入列表中,也可以根据自己的需要用下行代码调用文件中的活动内容
# acttiveList = nameRandom(r'活动库.xlsx','Sheet1','A','活动')
# 设置显示板上将展示的3个文字变量
name = ''
active = ''
startEnd = ''
# 初始化pygame
pygame.init()
# 第一行显示的文本
title ='选人啦'
# 设置显示板的大小
screen = pygame.display.set_mode((1100,600))
# 设置现实版的标题
pygame.display.set_caption('随机点名')
# 设置字体和大小,‘simkai.ttf’为字体的文件路径,这里是相对路径,也可使用绝对路径
startEndFont=pygame.font.Font('simkai.ttf',60)
nameFont=pygame.font.Font('simkai.ttf',80)
# 设置计数器容器
counter = 0
# 显示板
while True:
    # ‘22.png’为显示板的背景图文件路径,可自行下载,或者自己准备好图片后调整文字的位置
    bg=pygame.image.load('22.png')
    screen.blit(bg,(0,0))
    # 遍历事件是否为退出,设置退出循环开关,当event为QUIT时退出循环
    for event in pygame.event.get():
        if event.type==QUIT:
            sys.exit()
    # 获得键盘事件
    keys=pygame.key.get_pressed()
    # 当键盘事件为按下回车键时,随机选择名单
    if keys[K_RETURN]:
        # 防止由名单列表为空引起的报错
        if len(nameList)!=0:
            # 随机选人
            name = random.choice(nameList)
            # 将活动放入一个列表,也可以调用nameRandom()函数从文件中导入
            activeList = ['唱歌', '跳舞', '俯卧撑', '蛙跳']
            # 随机选择活动
            active = random.choice(activeList)
            # 显示板展示选人是否结束
            startEnd = '松开回车键结束'

    # 当回车键未按下时
    else:
        # 防止由name删除后不在列表中而引起的报错
        if name in nameList:
            counter += 1  #记录当前选出了多少小组
            # 向用户展示当前是第几次选人,以及选人的结果
            print("第"+str(counter)+"小组,他们是:<" + name + " 小组>,   选择的活动名是:《" + active+"》")
            # 删除选中的姓名,避免重复出现
            nameList.remove(name)
        # 显示板展示可以开始选人
        startEnd = '按下回车键开始'
    # 设置输出的文本字体及颜色
    titleText = startEndFont.render(title, True, (0,0,250))
    nameText = nameFont.render(name, True, (0,0,250))
    activeText = nameFont.render(active, True, (0,0,250))
    okText = startEndFont.render(startEnd, True, (0,0,250))
    # 设置输出的文本位置
    screen.blit(titleText,(300,120))
    screen.blit(nameText,(120,260))
    screen.blit(okText,(200,400))
    screen.
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值