嘉年华抽奖程序曝光,居然几行代码就能搞定

话说2017年7月8日,测试技术嘉年华携一众小仙再度归来,唤醒暮气沉沉的合肥技术圈,再次树起技术自由分享的大旗,各种礼品也是吸引眼球,抽奖,居然只是这几行源代码,现场review,说到做到……

环境:Python3.6



在脚本的开头,我们需要import三种方法,os模块是在与文件打交道时所必须的, pyexcel_xls中的get_data是为了接下来获得excel中所有的数据,pyexcel_xls这个包需要在终端中下载后使用。random是为了接下来获得随机的数字。


接下来我们慢慢来看一看这段代码是简单、简洁的实现我们需要的功能。




此行,使用get_data获得excel文件中的所有数据。xlsData是一个有序的字典,key为页数,value为每行行的数据。

 



接下来的两行,我们将字典的value中所有数据取出来,剔除不需要的key值,所以data是一个list,其中包含很多list,每一个list都是excel文件中一行数据。

 


‘record’这个文件,在每一次执行抽奖之前会读取其内容,并且和data取差集,防止不小心中断程序后抽到已经中奖的人员。‘record_rewards’这个文件是为了保存每一次获奖人员的信息。即时程序中断也有信息保存。

 



定义一个变量,名字为continu,此时的值为‘y’。

 



 

从第15行开始到26行,进行一个while循环。当continu这个变量不是‘n’时,进入这个循环,每一次的循环代表着一次抽奖,进入循环后,用户输入此次抽奖的人数,设为n。输入以后,使用random.sample()的方法,在范围内,任意取n个随机数字。然后我们使用一个for循环,依次根据RandomIndex中的数字找到data中对应数据。


NewPhonenum是将获奖者的手机号中间四个数字用星号隐藏起来,随后输出并记录获奖者的名字和手机号,并且使用del从data中删除这个获奖者信息,使其在此次程序中不再有机会获奖。在while循环的最后,询问用户是否还继续抽奖,如果结束输入‘n’,继续输入除‘n’以外的任意字母。当输入了‘n’以后,抽奖结束,此次程序也结束了。




 此脚本有一些精心设计的地方使得我们可以在短短27行之内满足所有功能,多层保护使无论用户就算不小心终止了程序都不会抽到同一个人,并且备份了所有获奖人员信息。




会议时间:2017-7-8

会场地址:合肥市望江西路666号科大讯飞语音产业基地A1#201会场

微信公众号:itest_forever




技术嘉年华官网:http://itest.iflytek.com/ 

嘉年华在线报名:https://www.sojump.hk/jq/14382135.aspx

铂金合作伙伴:躺倒鸭、OWASP





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值