如何基于python实现年会抽奖工具


Posted in Python onOctober 20, 2020

用python来实现一个抽奖程序,供大家参考,具体内容如下

主要功能有

1.从一个csv文件中读入所有员工工号

2.将这些工号初始到一个列表中

3.用random模块下的choice函数来随机选择列表中的一个工号

4.抽到的奖项的工号要从列表中进行删除,以免再次抽到

初级版

这个比较简单,缺少定制性,如没法设置一等奖有几名,二等奖有几名

import csv
#创建一个员工列表
emplist = []
#用with自动关闭文件
with open('c://emps.csv') as f:
 empf = csv.reader(f)
 for emp in empf:
 emplist.append(emp)
print("进行一等奖抽奖,共有一名")
import random
#利用random模块的chice函数来从列表中随机选取一个元素
e1 = random.choice(emplist)
#将中奖的员工从列表中剔除
emplist.remove(e1)
print('一等奖得主的号码是 %s' % e1)
print('进行三个二等奖的号码抽奖')
e2_1 = random.choice(emplist)
emplist.remove(e2_1)
e2_2 = random.choice(emplist)
emplist.remove(e2_2)
e2_3 = random.choice(emplist)
emplist.remove(e2_3)
print('获得3个二等奖是 %s %s %s',(e2_1,e2_2,e2_3))
#下面依次类推可以设置三等奖的抽奖

改进版

上面的那个初级版,假如要设置个三等奖一百名那么将要重新维护几百行代码,下面用比较高级点的办法实现.

我们考虑用面向对象来实现,设计一个抽奖类,类中包含一个属性(号码来源),一个方法:产生所有抽奖层次指定个数的抽奖号码。

用到如下知识点:

1. csv模块部分函数用法
2. sys模块读取输入
3. random模块函数choice函数用法
4. 列表和字典元素的添加、删除
6. for循环中range用法
7. 类和面向对象
8. 字符打印,print中的计算
9.open中with

#!/usr/bin/python
#coding=utf-8
import csv
import sys
import random
reload(sys) 
sys.setdefaultencoding('utf8')
#coding=utf-8
print("开始进行抽奖")
#定义个抽奖类,功能有输入抽奖级别和个数,打印出每个级别的抽奖员工号码
class Choujiang:
 #定义scv文件路径
 def __init__(self,filepath):
 self.empfile = filepath
 def creat_num(self):
 emplist = []
 with open(self.empfile) as f:
  empf = csv.reader(f)
  for emp in empf:
  emplist.append(emp)
 print('共有%s 人参与抽奖' % len(emplist))
 levels = int(input('抽奖分几个层次,请输入:'))
 #定义一个字典
 level_dict = {}
 for i in range(0,levels):
  print('请输入当前获奖层次 %s 对应的奖品个数' % ( i + 1))
  str_level_dict_key = sys.stdin.readline()
  int_level_dict_key = int(str_level_dict_key)
  level_dict[i] = int_level_dict_key
  #循环完成后抽奖层次字典构造完毕
 #进行抽奖开始
 print('抽奖字典设置为: %s' % level_dict)
 for i in range(0,len(level_dict)):
  winers = []
  #产生当前抽奖层次i对应的抽奖个数
  for j in range(0,int(level_dict[i])):
  #利用random模块中的choice函数从列表中随机产生一个
  winer = random.choice(emplist)
  winers.append(winer)
  emplist.remove(winer)
  print('抽奖层次 %s 下产出的获奖人员有:' % (i + 1 ))
  print(winers)
#类功能定义完毕,开始初始化并使用
if __name__ == '__main__':
 peoples = Choujiang('c://emps.csv')
 peoples.creat_num()

该段程序在python 2.6 以上及 3中均可以运行,运行结果如下

Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>> 
开始进行抽奖
共有24790 人参与抽奖
抽奖分几个层次,请输入:2
请输入当前获奖层次 1 对应的奖品个数
1
请输入当前获奖层次 2 对应的奖品个数
3
抽奖字典设置为: {0: 1, 1: 3}
抽奖层次 1 下产出的获奖人员有:
[['张三19826']]
抽奖层次 2 下产出的获奖人员有:
[['张三18670'], ['张三23235'], ['张三15705']]
>>>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
python非递归全排列实现方法
Apr 10 Python
Python实现在某个数组中查找一个值的算法示例
Jun 27 Python
python数据结构学习之实现线性表的顺序
Sep 28 Python
Django之使用celery和NGINX生成静态页面实现性能优化
Oct 08 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
Mar 27 Python
Python pandas如何向excel添加数据
May 22 Python
python属于解释型语言么
Jun 15 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
python中的对数log函数表示及用法
Dec 09 Python
PyQt实现计数器的方法示例
Jan 18 Python
python析构函数用法及注意事项
Jun 22 Python
python使用re模块爬取豆瓣Top250电影
Oct 20 #Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 #Python
Python 制作查询商品历史价格的小工具
Oct 20 #Python
python实现扫雷游戏的示例
Oct 20 #Python
python3排序的实例方法
Oct 20 #Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 #Python
15款Python编辑器的优缺点,别再问我“选什么编辑器”啦
Oct 19 #Python
You might like
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
javascript的事件描述
2006/09/08 Javascript
js验证表单第二部分
2006/11/25 Javascript
jQuery 浮动广告实现代码
2008/12/25 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
Document:getElementsByName()使用方法及示例
2013/10/28 Javascript
javascript读写json示例
2014/04/11 Javascript
js图片实时加载提供网页打开速度
2014/09/11 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
基于JavaScript实现智能右键菜单
2016/03/02 Javascript
jquery zTree异步加载、模糊搜索简单实例分享
2016/03/24 Javascript
Javascript获取background属性中url的值
2016/10/17 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
JavaScript基于数组实现的栈与队列操作示例
2018/12/22 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
用JavaScript实现贪吃蛇游戏
2020/10/23 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
使用Python脚本操作MongoDB的教程
2015/04/16 Python
python实现每天自动签到领积分的示例代码
2020/08/18 Python
python压包的概念及实例详解
2021/02/17 Python
美国和加拿大计算机和电子产品购物网站:TigerDirect.com
2019/09/13 全球购物
几个Shell Script面试题
2012/08/31 面试题
高一自我鉴定
2013/12/17 职场文书
会计专业自我鉴定范文
2013/12/29 职场文书
伊索寓言教学反思
2014/05/01 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
介绍信范文
2015/01/31 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
python b站视频下载的五种版本
2021/05/27 Python
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python
python小型的音频操作库mp3Play
2022/04/24 Python