導航:首頁 > 編程語言 > python簡單抽獎設計

python簡單抽獎設計

發布時間:2024-04-23 11:16:38

1. 怎麼用python寫一個抽獎程序,是抽取圖片或視頻

16年年會抽獎網上有人對公司的抽獎結果又偏見,於是全員進行了抽獎代碼的review,好像是愛奇藝公司的,下面用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-8import csvimport sysimport random
reload(sys)
sys.setdefaultencoding('utf8')#coding=utf-8print("開始進行抽獎")#定義個抽獎類,功能有輸入抽獎級別和個數,列印出每個級別的抽獎員工號碼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 "right", "credits" or "license()" for more information.>>> ================================ RESTART ================================>>> 開始進行抽獎
共有24790 人參與抽獎
抽獎分幾個層次,請輸入:2請輸入當前獲獎層次 1 對應的獎品個數1請輸入當前獲獎層次 2 對應的獎品個數3抽獎字典設置為: {0: 1, 1: 3}
抽獎層次 1 下產出的獲獎人員有:
[['張三19826']]
抽獎層次 2 下產出的獲獎人員有:
[['張三18670'], ['張三23235'], ['張三15705']]>>> 1234567891011121314151617

2. python編寫抽獎程序

#data和name_data數據自己添加

import random



# 所有員工數據,字典的key是一個set類型,value是list類型

data = {

('能永年', '甲隊'): ['項目隊長', '曾經外派抵達x地做出了某事', '曾經外派抵達子公司做出了ss項目'],

('巴偉毅', '乙隊'): ['HR'],

('紀文博', '丙隊'): ['項目成員', '為xx事做出了重大貢獻', '曾經做過AA項目'],

('吉信鴻', '丙隊'): ['HR', '為公司面試了XX人次', ],

('沙雅旭', '丙隊'): ['財務管理', '針對財務的做出了重要指導'],

}name_data = ['能永年', '巴偉毅', '紀文博', '吉信鴻', '沙雅旭'] # 參見抽獎人的姓名random_name = random.choice(name_data) # 隨機一個中獎的人for key, value in data.items():# print(key,value)if random_name == key[0]: # 在字典key中找到這人print('{}:{}'.format(key[0], key[1]))for item in value: # 遍歷他的信息print(' ' + item.ljust(20))

閱讀全文

與python簡單抽獎設計相關的資料

熱點內容
重生收母 瀏覽:539
都市之開局被10個老婆寵成 瀏覽:232
程序員兩年應該多少工資 瀏覽:964
極盜者2在線免費觀看 瀏覽:853
男男電影免費觀看推薦 瀏覽:360
福建u盤加密聯系方式 瀏覽:516
釜山行3免費完整觀看國語 瀏覽:78
官神夏想幾個老婆 瀏覽:249
看片網站知乎 瀏覽:60
張鳴pdf 瀏覽:172
王者區蘋果怎麼轉安卓 瀏覽:77
蛇的電影免費的完整版 瀏覽:30
哈薩克 電影 瀏覽:986
少女大尺度電影禁片 瀏覽:210
python列表get的用法 瀏覽:832
安卓平板如何用外接鍵盤玩游戲 瀏覽:289
漢中地面波加密了嗎 瀏覽:796
成龍演的五行拳的電影 瀏覽:297
python字元串轉string 瀏覽:357
在電影院不要說話用英語怎麼說 瀏覽:807