用到的模块请自行导入(在pycharm中菜单栏file选取setting→Python Interprete→“+” → 搜索相应的模块名称,选中→Install Package进行下载)@H_403_5@ 我用的Excel文件存储的人名格式如下图所示,表头为:姓名,表单名为:Sheet2,列名为:A,文件名为:宿舍名单.xlsx@H_403_5@
@H_403_5@
代码如下:// A code block# 调取用到的模块import pygame, sys, randomfrom 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 = ''# 初始化pygamepygame.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, randomfrom 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 = ''# 初始化pygamepygame.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实现随机选人、选取活动或节目小程序全部内容,希望文章能够帮你解决用python实现随机选人、选取活动或节目小程序所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)