您好,登錄后才能下訂單哦!
這篇文章運用簡單易懂的例子給大家介紹使用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實現一個年會抽獎工具就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。