python实现年会抽奖程序


Posted in Python onJanuary 22, 2019

用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 21 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
Mar 26 Python
python编程线性回归代码示例
Dec 07 Python
利用python提取wav文件的mfcc方法
Jan 09 Python
python基于SMTP协议发送邮件
May 31 Python
Python列表list常用内建函数实例小结
Oct 22 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
解决c++调用python中文乱码问题
Jul 29 Python
Python grpc超时机制代码示例
Sep 14 Python
Python帮你解决手机qq微信内存占用太多问题
Feb 15 Python
使用Python拟合函数曲线
Apr 14 Python
在python中实现强制关闭线程的示例
Jan 22 #Python
Python实现简单石头剪刀布游戏
Jan 20 #Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 #Python
python 对类的成员函数开启线程的方法
Jan 22 #Python
python实现石头剪刀布小游戏
Jan 20 #Python
对Python3之进程池与回调函数的实例详解
Jan 22 #Python
python多任务及返回值的处理方法
Jan 22 #Python
You might like
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
PHP数据分析引擎计算余弦相似度算法示例
2017/08/08 PHP
PHP实现微信退款功能
2018/10/02 PHP
JavaScript修改css样式style
2008/04/15 Javascript
jQuery版Tab标签切换
2011/03/16 Javascript
谈谈关于JavaScript 中的 MVC 模式
2013/04/11 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
javascript入门教程基础篇
2015/11/16 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
解决vue 格式化银行卡(信用卡)每4位一个符号隔断的问题
2018/09/14 Javascript
微信小程序实现工作时间段选择
2019/02/15 Javascript
利用原生JavaScript实现造日历轮子实例代码
2019/05/08 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
python 实现删除文件或文件夹实例详解
2016/12/04 Python
python中如何使用正则表达式的非贪婪模式示例
2017/10/09 Python
python实现kNN算法
2017/12/20 Python
pytorch 数据集图片显示方法
2018/07/26 Python
在python中安装basemap的教程
2018/09/20 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
Python编写一个验证码图片数据标注GUI程序附源码
2019/12/09 Python
python实现文件+参数发送request的实例代码
2021/01/05 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
亚运会口号
2014/06/20 职场文书
2014离婚协议书范文
2014/09/10 职场文书
小班上学期幼儿评语
2014/12/30 职场文书
观后感格式
2015/06/19 职场文书
廉政党课工作报告案例
2019/06/21 职场文书
Python字符串格式化方式
2022/04/07 Python