Python教程

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

本文主要是介绍用python实现随机选人、选取活动或节目小程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

用到的模块请自行导入(在pycharm中菜单栏File选取setting→Python Interprete→“+” → 搜索相应的模块名称,选中→Install Package进行下载)
我用的Excel文件存储的人名格式如下图所示,表头为:姓名,表单名为:Sheet2,列名为:A,文件名为:宿舍名单.xlsx
文件名
代码如下:

// 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
# 异常处理
while True:
    try:
        # 用户输入存放人员名单的Excel文件中,人名数据那一列的第一行,即表头,如果第一行放的是人名,这个人名将不会被选取到
        namePath = input('##############################################################\n'
                         '请将存放人员名单的Excel文件中,人名数据那一列的第一行改为表头,例如:姓名\n'
                         '注意:不要将第一行就放入人名!\n'
                         '如果未设置表头,请设置好后重新运行程序,\n'
                         '并请您在此输入您设置的表头内容:')
        # 用户输入存放数据的文件路径、表单名、列名
        filePath = input('请输入存放人员名单的Excel文件名称及路径,例如:D:/chapter01/活动库.xlsx :')
        sheetPath = input('请输入存放人员名单的表单名称,例如:Sheet1 :')
        cloPath = input('请输入存放人员名单的列名,例如:A :')
        # 从文件中调用数据,放入列表
        nameList = nameRandom(filePath, sheetPath, cloPath, namePath)
    except FileNotFoundError:
        print('\n########## 您输入的文件不存在,请重新输入 ##########')
    except ValueError:
        print('\n########## 您输入的表单不存在,请重新输入 ##########')
    except KeyError:
        print('\n########## 您输入的表头不存在当前表单中,请确认表单及表头后重新输入 ##########')
    except AssertionError:
        print('\n########## 输入内容不能为空 ##########')
    else:
        break

# 输入活动库的路径: 本程序是将活动直接放入列表中,也可以根据自己的需要用下行代码调用文件中的活动内容
# 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('随机点名')
# 设置字体和大小
startEndFont=pygame.font.Font('simkai.ttf',60)
nameFont=pygame.font.Font('simkai.ttf',80)
# 设置计数器容器
counter = 0
# 显示板
while True:
    # 显示板的背景图
    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.blit(activeText,(530,260))
    # 更新展示板
    pygame.display.update()

// An highlighted 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
# 异常处理
while True:
    try:
        # 用户输入存放人员名单的Excel文件中,人名数据那一列的第一行,即表头,如果第一行放的是人名,这个人名将不会被选取到
        namePath = input('##############################################################\n'
                         '请将存放人员名单的Excel文件中,人名数据那一列的第一行改为表头,例如:姓名\n'
                         '注意:不要将第一行就放入人名!\n'
                         '如果未设置表头,请设置好后重新运行程序,\n'
                         '并请您在此输入您设置的表头内容:')
        # 用户输入存放数据的文件路径、表单名、列名
        filePath = input('请输入存放人员名单的Excel文件名称及路径,例如:D:/chapter01/活动库.xlsx :')
        sheetPath = input('请输入存放人员名单的表单名称,例如:Sheet1 :')
        cloPath = input('请输入存放人员名单的列名,例如:A :')
        # 从文件中调用数据,放入列表
        nameList = nameRandom(filePath, sheetPath, cloPath, namePath)
    except FileNotFoundError:
        print('\n########## 您输入的文件不存在,请重新输入 ##########')
    except ValueError:
        print('\n########## 您输入的表单不存在,请重新输入 ##########')
    except KeyError:
        print('\n########## 您输入的表头不存在当前表单中,请确认表单及表头后重新输入 ##########')
    except AssertionError:
        print('\n########## 输入内容不能为空 ##########')
    else:
        break

# 输入活动库的路径: 本程序是将活动直接放入列表中,也可以根据自己的需要用下行代码调用文件中的活动内容
# 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('随机点名')
# 设置字体和大小
startEndFont=pygame.font.Font('simkai.ttf',60)
nameFont=pygame.font.Font('simkai.ttf',80)
# 设置计数器容器
counter = 0
# 显示板
while True:
    # 显示板的背景图
    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.blit(activeText,(530,260))
    # 更新展示板
    pygame.display.update()

这篇关于用python实现随机选人、选取活动或节目小程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!