如何基于python實(shí)現(xiàn)年會抽獎工具
用python來實(shí)現(xiàn)一個抽獎程序,供大家參考,具體內(nèi)容如下
主要功能有
1.從一個csv文件中讀入所有員工工號
2.將這些工號初始到一個列表中
3.用random模塊下的choice函數(shù)來隨機(jī)選擇列表中的一個工號
4.抽到的獎項(xiàng)的工號要從列表中進(jìn)行刪除,以免再次抽到
初級版
這個比較簡單,缺少定制性,如沒法設(shè)置一等獎有幾名,二等獎有幾名
import csv
#創(chuàng)建一個員工列表
emplist = []
#用with自動關(guān)閉文件
with open('c://emps.csv') as f:
empf = csv.reader(f)
for emp in empf:
emplist.append(emp)
print("進(jìn)行一等獎抽獎,共有一名")
import random
#利用random模塊的chice函數(shù)來從列表中隨機(jī)選取一個元素
e1 = random.choice(emplist)
#將中獎的員工從列表中剔除
emplist.remove(e1)
print('一等獎得主的號碼是 %s' % e1)
print('進(jìn)行三個二等獎的號碼抽獎')
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))
#下面依次類推可以設(shè)置三等獎的抽獎
改進(jìn)版
上面的那個初級版,假如要設(shè)置個三等獎一百名那么將要重新維護(hù)幾百行代碼,下面用比較高級點(diǎn)的辦法實(shí)現(xiàn).
我們考慮用面向?qū)ο髞韺?shí)現(xiàn),設(shè)計(jì)一個抽獎類,類中包含一個屬性(號碼來源),一個方法:產(chǎn)生所有抽獎層次指定個數(shù)的抽獎號碼。
用到如下知識點(diǎn):
1. csv模塊部分函數(shù)用法
2. sys模塊讀取輸入
3. random模塊函數(shù)choice函數(shù)用法
4. 列表和字典元素的添加、刪除
6. for循環(huán)中range用法
7. 類和面向?qū)ο?br />
8. 字符打印,print中的計(jì)算
9.open中with
#!/usr/bin/python
#coding=utf-8
import csv
import sys
import random
reload(sys)
sys.setdefaultencoding('utf8')
#coding=utf-8
print("開始進(jìn)行抽獎")
#定義個抽獎類,功能有輸入抽獎級別和個數(shù),打印出每個級別的抽獎員工號碼
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('請輸入當(dāng)前獲獎層次 %s 對應(yīng)的獎品個數(shù)' % ( 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
#循環(huán)完成后抽獎層次字典構(gòu)造完畢
#進(jìn)行抽獎開始
print('抽獎字典設(shè)置為: %s' % level_dict)
for i in range(0,len(level_dict)):
winers = []
#產(chǎn)生當(dāng)前抽獎層次i對應(yīng)的抽獎個數(shù)
for j in range(0,int(level_dict[i])):
#利用random模塊中的choice函數(shù)從列表中隨機(jī)產(chǎn)生一個
winer = random.choice(emplist)
winers.append(winer)
emplist.remove(winer)
print('抽獎層次 %s 下產(chǎn)出的獲獎人員有:' % (i + 1 ))
print(winers)
#類功能定義完畢,開始初始化并使用
if __name__ == '__main__':
peoples = Choujiang('c://emps.csv')
peoples.creat_num()
該段程序在python 2.6 以上及 3中均可以運(yùn)行,運(yùn)行結(jié)果如下
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 ================================
>>>
開始進(jìn)行抽獎
共有24790 人參與抽獎
抽獎分幾個層次,請輸入:2
請輸入當(dāng)前獲獎層次 1 對應(yīng)的獎品個數(shù)
1
請輸入當(dāng)前獲獎層次 2 對應(yīng)的獎品個數(shù)
3
抽獎字典設(shè)置為: {0: 1, 1: 3}
抽獎層次 1 下產(chǎn)出的獲獎人員有:
[['張三19826']]
抽獎層次 2 下產(chǎn)出的獲獎人員有:
[['張三18670'], ['張三23235'], ['張三15705']]
>>>
:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 詳解python--模擬輪盤抽獎游戲
- python實(shí)現(xiàn)轉(zhuǎn)盤效果 python實(shí)現(xiàn)輪盤抽獎游戲
- python制作抽獎程序代碼詳解
- 編寫python代碼實(shí)現(xiàn)簡單抽獎器
- python編寫實(shí)現(xiàn)抽獎器
- Python趣味實(shí)例,實(shí)現(xiàn)一個簡單的抽獎刮刮卡
- 使用 Python 寫一個簡易的抽獎程序
- python實(shí)現(xiàn)21點(diǎn)小游戲
- 教你用Python寫一個植物大戰(zhàn)僵尸小游戲
- 教你如何用python開發(fā)一款數(shù)字推盤小游戲
- python反編譯教程之2048小游戲?qū)嵗?/a>
- 教你用Python實(shí)現(xiàn)一個輪盤抽獎小游戲
相關(guān)文章
python實(shí)現(xiàn)簡單的TCP代理服務(wù)器
這篇文章主要介紹了python實(shí)現(xiàn)簡單的TCP代理服務(wù)器,包含了完整的實(shí)現(xiàn)過程及對應(yīng)的源碼與說明文檔下載,非常具有參考借鑒價值,需要的朋友可以參考下2014-10-10
Python爬蟲與防反爬蟲策略從入門到實(shí)戰(zhàn)
本文將從基礎(chǔ)的爬蟲原理和庫介紹開始,逐步深入,通過實(shí)際示例代碼,帶領(lǐng)讀者學(xué)習(xí)Python爬蟲的使用和技巧,掌握從簡單到復(fù)雜的爬蟲實(shí)現(xiàn)2024-01-01
Pandas對每個分組應(yīng)用apply函數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了Pandas對每個分組應(yīng)用apply函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python 日期區(qū)間處理 (本周本月上周上月...)
這篇文章主要介紹了Python 日期區(qū)間處理 (本周本月上周上月...),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Pytorch中expand()的使用(擴(kuò)展某個維度)
這篇文章主要介紹了Pytorch中expand()的使用(擴(kuò)展某個維度),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

