如何基于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 相关文章推荐
Windows环境下python环境安装使用图文教程
Mar 13 Python
Python 创建空的list,以及append用法讲解
May 04 Python
Python中logging.NullHandler 的使用教程
Nov 29 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
Jul 14 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
Python 用三行代码提取PDF表格数据
Oct 13 Python
Python如何操作office实现自动化及win32com.client的运用
Apr 01 Python
解决pyinstaller打包运行程序时出现缺少plotly库问题
Jun 02 Python
keras.layer.input()用法说明
Jun 16 Python
Pycharm常用快捷键总结及配置方法
Nov 14 Python
Python实现学生管理系统(面向对象版)
Jun 24 Python
python 闭包函数详细介绍
Apr 19 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
怎样辨别一杯好咖啡
2021/03/03 新手入门
php读取本地json文件的实例
2018/03/07 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
PHP+MariaDB数据库操作基本技巧备忘总结
2018/05/21 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
2012/12/09 Javascript
禁用JavaScript控制台调试的方法
2014/03/07 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
使用jQuery.form.js/springmvc框架实现文件上传功能
2016/05/12 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
原生js实现新闻列表展开/收起全文功能
2017/01/20 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
JS localStorage存储对象,sessionStorage存储数组对象操作示例
2020/02/15 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
kNN算法python实现和简单数字识别的方法
2014/11/18 Python
Python素数检测实例分析
2015/06/15 Python
Python用csv写入文件_消除空余行的方法
2018/07/06 Python
python3.5绘制随机漫步图
2018/08/27 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
详解python多线程之间的同步(一)
2019/04/03 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
Python Subprocess模块原理及实例
2019/08/26 Python
Python实现图片添加文字
2019/11/26 Python
python烟花效果的代码实例
2020/02/25 Python
Python中os模块功能与用法详解
2020/02/26 Python
python 发送get请求接口详解
2020/11/17 Python
写好自荐信的几个要点
2013/12/26 职场文书
洗煤厂厂长岗位职责
2014/01/03 职场文书
幼儿园教研活动方案
2014/01/19 职场文书
简历的自我评价范文
2014/02/04 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
博士生专家推荐信
2015/03/25 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python