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

用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']]

>>>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持随便开发网。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 获取服务器硬件_dell服务器远程获取硬件状态

以dell的R620型号的服务器做的测试登陆上dell服务器ilo的IP地址,首先打开ipmi,ilo2是直接支持ipmi2.0的此框需要点击 “IDRAC设置”->“网络”->“IPMI设置”在”启用LAN上IPMI“后的复选框打钩,才能启动ipmi好像是内置到了ilo2&#x…

简单可行性报告模板_项目可行性报告模板分享!第三章主要内容

项目可行性报告模板分享!第三章主要内容如下:第三章 市场分析与建设规模市场分析在可行性研究中的重要地位在于,任何一个项目,其生产规模的确定、技术的选择、投资估算甚至厂址的选择,都必须在市场需求情况有了充分的了解后才能解…

java外挂源码_2.7 万 Star!Github 项目源码辅助阅读神器

【导语】:一款用于将 Github 项目代码以树形格式展示的浏览器插件。简介大家平时逛 GitHub 是否会觉得查看源代码的体验十分糟糕?项目文件需要一层层点击,返回也要一层层返回。这样不直观,也比较麻烦。Octotree 是一款辅助阅读 Gi…

php把时间戳转换成字符串,php中将时间差转换为字符串提示的实现代码

如微博这看起来更加人性化,好吧,上代码class timeAgo{static $timeagoObject;private $rustle;private $unit;private function __construct(){}private function __clone(){ }public static function getObject(){if(! (self::$timeagoObject instanceo…

php教育网站设计案例_酒店装修,精品酒店设计装修案例,酒店设计网站

酒店设计需要考虑:设计酒店的时候也要顺应市场潮流,不再单一的提供休息、洗漱、睡觉的空间,还要能提供社交、商务等功能,同顾客产生情况共鸣。这样能够引领生活方式的、能够互动,有仪式感的酒店,是很吸引人…

php数据库数组去重复数据库,PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)...

本文实例讲述了php查询并删除数据库多列重复数据的方法。分享给大家供大家参考,具体如下:$con mysql_connect("localhost","root","");if (!$con){die(could not connect: . mysql_error());}$db_selected mysql_selec…

python创建数据库表空间_7.自动化监控多个Oracle表空间

自动化监控多个Oracle表空间上节讲了如何利用Python自动监控Oracle表空间使用率这节会利用一个循环一次性查询多个表空间使用率环境设置Linux系统为 Centos 6.8Python环境为 Python 3.6orale信息文件其次建立一个新的文本文件存放多个数据库的信息注意最后一行不能是空白行文件…

python采用编译型方式执行_Python程序的执行过程 解释型语言和编译型语言

我初学Python时,听到的关于Python的第一句话就是,Python是一门解释性语言,我就这样一直相信下去,直到发现了*.pyc文件的存在。如果是解释型语言,那么生成的*.pyc文件是什么呢?c应该是compiled的缩写才对啊&…

写一个方法判断一个字符串是否对称_判断一个男生是否好色的方法

▾我们店只招黑喵哦?▾其实也不是不能理解为什么男的要跑?▾有什么相见恨晚的小知识??▾见证奇迹?:是不是穿过去了!?▾医学奇迹?▾卧槽流劈!?真的超光速了!▾细节很到位啊几位少年?▾昨有坟头蹦迪?…

php webserver documentroot,php – 在包含中使用$_SERVER [‘DOCUMENT_ROOT’]是个好主意?...

这是一个好主意吗?require_once($_SERVER[DOCUMENT_ROOT]./include.php);如果在同一台服务器上有两个虚拟主机,一个用于实时,另一个用于开发,具有不同的Apache DocumentRoot,则可避免在包含源未知时包含绝对路径,并且可能位于任何目录中.(注意:下一节中的…

java changestr,java change

VetoableChangeListener (Java Platform SE...2.import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ChangeGUI extends JFrame{ private JButton button; private JLabel ......Java 应用技术实训报告 题 目 万年历记事本 起讫日期 2008 年 6 月…

python读取日志统计ip_如何通过命令行统计和排列访问日志里的ip数

以下的方式速度都会卡在sort上面,数量越多越麻烦。Shell方法:grep -i -o -E -r -e "([0-9]{1,3}\.){3}[0-9]{1,3}" access.log | sort -n | uniq -c | sort -nawk方法:如果是accesslog 格式应该是固定的 会简单些。因为awk做排序也比较的郁闷,…

php斯芬克斯,斯芬克斯之迷——ie私有属性haslayout的困扰

就象神话中的斯芬克斯一样,ie的私有属性haslayout是个神秘且让人困惑的难缠东西,她只游荡于ie(这片沙漠)之下。她无法使用css声明直接创建。即便是对于ie,她也不能说是一个实实在在存在的属性。ie下的元素有些本身拥有haslayout(基本上是一些…

matlab计算联合熵,如何用matlab软件计算一幅图像信息的熵以及两幅图像间的联合熵?...

%计算一副图像的熵%随机生成图像Afloor(rand(8,8).*255);[M,N]size(A);tempzeros(1,256);%对图像的灰度值在[0,255]上做统计for m1:M;for n1:N;if A(m,n)0;i1;elseiA(m,n);endtemp(i)temp(i)1;endendtemptemp./(M*N);%由熵的定义做计算result0;for i1:length(temp)if temp(i)0;…

python多线程写日志_python 应用logging多线程写多个log文件

python 使用logging多线程写多个log文件import threadingimport timeimport loggingimport logging.handlersLEVELS{notset:logging.DEBUG,debug:logging.DEBUG,info:logging.INFO,warning:logging.WARNING,error:logging.ERROR,critical:logging.CRITICAL}LOG_FILENAME test.…

php在数据库中上传图片格式,如何上传图片并在php中保存数据库中的URL

在这个PHP代码中我想自定义图像上传目的地 . 有了这个php文件,我有一个名为uploads的目录 . 我想将我上传的所有图像添加到此目录并在db中存储路径 . 我怎样才能做到这一点?// Assigning value about your server to variables for database connection$…

matlab转python难吗_MATLAB在逐渐被Python淘汰吗?

题主的问题我很适合回答,同机械工程大专业,目前供职某车企研发中心,工作内容里也有产品的控制系统研发部分。Matlab与Python各有其优势项,很难笼统的说孰优孰劣。但是在题主所涉及的机械控制工程、航空航天、嵌入式等领域&#xf…

自然水体辐射特性与数值模拟 pdf_OpenGMS系列讲座(十三)汪亚平教授:南黄海水动力过程和辐射沙脊群演化...

2020年8月28日,南京大学海岸与海岛开发教育部重点实验室汪亚平教授应地科院陈旻教授邀请,作客南京师范大学虚拟地理环境教育部重点实验室OpenGMS系列讲座,并做了题为"南黄海水动力过程和辐射沙脊群演化" 的报告。汪教授首先通过两个…

matlab2014a 3d标定,[转载]张的matlab摄像机标定

自己写了下matlab张的标定程序,采用张正有网站上的数据,即数据文档Model.txt data1.txt data2.txtdata3.txt data4.txt data5.txt。其中Model.txt为世界坐标系中的点【实验结果】我的程序:k1 -0.2286 k2 0.1903 fx 832.5000fy 832.5298 cx 30…

插值算法及matlab实现,MATLAB 插值算法实现

1.高斯插值function f Gauss(x,y,x0)if(length(x) length(y))n length(x);elsedisp(x和y的维数不相等!);return;endxx linspace(x(1),x(n),(x(2)-x(1)));if(xx ~ x)disp(节点之间不是等距的!);return;endif( mod(n,2) 1)if(nargin 2)f GStirling(x,…