年會(huì),用Python做了個(gè) “抽獎(jiǎng)程序”,boss獎(jiǎng)勵(lì)我一個(gè)紅包!
點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注
回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書
含情欲說宮中事,鸚鵡前頭不敢言。
前言

效果演示

① 第一版:這里讀取的是一個(gè)txt文檔,即所有的姓名都放在一個(gè)txt文檔中,抽獎(jiǎng)程序是讀取該文檔中的姓名數(shù)據(jù),來完成該過程的; ② 第二版:增加重置功能; ③ 第三版:這是final版本,鑒于大家都把數(shù)據(jù)存放在Excel中,我這里直接從csv格式的Excel文件中讀取姓名數(shù)據(jù),來完成抽獎(jiǎng)這個(gè)過程;
功能邏輯敘述




使用注意事項(xiàng)
① 員工姓名信息必須保存為CSV格式文件,并且文件名必須是names.csv; ② 你可以使用WPS或者Office編輯names.csv文件,文件表頭會(huì)自動(dòng)跳過,該文件會(huì)自動(dòng)從第二行讀取第一列的姓名信息,其他列數(shù)據(jù)不用刪除會(huì)自動(dòng)被忽略; ③ 針對(duì)姓名中出現(xiàn)同名同姓的情況,程序會(huì)給出提示并直接退出,建議是給每個(gè)同名同姓的值加上編號(hào)或部門等額外的區(qū)分信息;

開發(fā)流程
1)姓名隨機(jī)生成
def?random_name():
????xing?=?'趙錢孫李周吳鄭王馮陳褚衛(wèi)蔣沈韓楊朱秦尤許何呂施張孔曹嚴(yán)華金魏陶姜戚謝鄒喻柏水竇章云蘇潘葛'?\
???????????'奚范彭郎魯韋昌馬苗鳳花方俞任袁柳酆鮑史唐費(fèi)廉岑薛雷賀倪湯滕殷羅畢郝鄔安常樂于時(shí)傅皮卞齊康'?\
???????????'伍余元卜顧孟平黃和穆蕭尹姚邵湛汪祁毛禹狄米貝明臧計(jì)伏成戴談宋茅龐熊紀(jì)舒屈項(xiàng)祝董梁杜阮藍(lán)閔'?\
???????????'席季麻強(qiáng)賈路婁危江童顏郭梅盛林刁鐘徐邱駱高夏蔡田樊胡凌霍虞萬支柯昝管盧莫經(jīng)房裘繆干解應(yīng)宗'?\
???????????'丁宣賁鄧郁單杭洪包諸左石崔吉鈕龔程嵇邢滑裴陸榮翁荀羊於惠甄曲家封芮羿儲(chǔ)靳汲邴糜松井段富巫'?\
???????????'烏焦巴弓牧隗山谷車侯宓蓬全郗班仰秋仲伊宮寧仇欒暴甘鈄厲戎祖武符劉景詹束龍葉幸司韶郜黎薊薄'?\
???????????'印宿白懷蒲邰從鄂索咸籍賴卓藺屠蒙池喬陰鬱胥能蒼雙聞?shì)伏h翟譚貢勞逄姬申扶堵冉宰酈雍卻璩桑桂'?\
???????????'濮牛壽通邊扈燕冀郟浦尚農(nóng)溫別莊晏柴瞿閻充慕連茹習(xí)宦艾魚容向古易慎戈廖庾終暨居衡步都耿滿弘'?\
???????????'匡國(guó)文寇廣祿闕東歐殳沃利蔚越夔隆師鞏厙聶晁勾敖融冷訾辛闞那簡(jiǎn)饒空曾毋沙乜養(yǎng)鞠須豐巢關(guān)蒯相'?\
???????????'查后荊紅游竺權(quán)逯蓋益桓公萬俟司馬上官歐陽(yáng)夏侯諸葛聞人東方赫連皇甫尉遲公羊澹臺(tái)公冶宗政濮陽(yáng)'?\
???????????'淳于單于太叔申屠公孫仲孫軒轅令狐鐘離宇文長(zhǎng)孫慕容鮮于閭丘司徒司空丌官司寇仉督子車顓孫端木'?\
???????????'巫馬公西漆雕樂正壤駟公良拓跋夾谷宰父谷梁晉楚閆法汝鄢涂欽段干百里東郭南門呼延歸海羊舌微生'?\
???????????'岳帥緱亢況郈有琴梁丘左丘東門西門商牟佘佴伯賞南宮墨哈譙笪年愛陽(yáng)佟第五言福'
????ming?=?'偉剛勇毅俊峰強(qiáng)軍平保東文輝力明永健世廣志義興良海山仁波寧貴福生龍?jiān)珖?guó)勝學(xué)祥才發(fā)武新利清'?\
???????????'飛彬富順信子杰濤昌成康星光天達(dá)安巖中茂進(jìn)林有堅(jiān)和彪博誠(chéng)先敬震振壯會(huì)思群豪心邦承樂紹功松善'?\
???????????'厚慶磊民友裕河哲江超浩亮政謙亨奇固之輪翰朗伯宏言若鳴朋斌梁棟維啟克倫翔旭鵬澤晨辰士以建家'?\
???????????'致樹炎德行時(shí)泰盛秀娟英華慧巧美娜靜淑惠珠翠雅芝玉萍紅娥玲芬芳燕彩春菊蘭鳳潔梅琳素云蓮真環(huán)'?\
???????????'雪榮愛妹霞香月鶯媛艷瑞凡佳嘉瓊勤珍貞莉桂娣葉璧璐婭琦晶妍茜秋珊莎錦黛青倩婷姣婉嫻瑾穎露瑤'?\
???????????'怡嬋雁蓓紈儀荷丹蓉眉君琴蕊薇菁?jí)魨乖敷奕嶂耢\凝曉歡霄楓蕓菲寒欣瀅伊亞宜可姬舒影荔枝思麗秀'?\
???????????'飄育馥琦晶妍茜秋珊莎錦黛青倩婷寧蓓紈苑婕馨瑗琰韻融園藝詠卿聰瀾純毓悅昭冰爽琬茗羽希'
????result?=?[]
????result.append(random.choice(xing))
????for?i?in?range(random.randint(1,?2)):
????????result.append(random.choice(ming))
????if?random.randint(1,?30)?==?1:
????????result.append(random.choice(ming))
????return?"".join(result)

2)GUI程序界面開發(fā)
if?not?os.path.exists("names.txt"):
????yes_no?=?sg.popup_yes_no(
????????"待抽獎(jiǎng)人員姓名名單文件names.txt沒有找到!!!\n請(qǐng)將所有的待抽獎(jiǎng)人員姓名名單,"
????????"\n按行分割以gbk編碼保存在names.txt文件中,\n確認(rèn)后重啟程序!!!"
????????"\n或者你是否要讓程序自動(dòng)幫你生成隨機(jī)姓名列表用于測(cè)試?",
????????title="提示")
????if?yes_no?==?"Yes":
????????num?=?None
????????while?num?is?None:
????????????text?=?sg.popup_get_text("請(qǐng)輸入要生成的姓名個(gè)數(shù):")
????????????try:
????????????????num?=?int(text)
????????????except:
????????????????sg.popup("您輸入的文本非數(shù)字或者點(diǎn)擊了取消,請(qǐng)輸入數(shù)字并點(diǎn)擊確認(rèn)",?title="提示")
????????write_random_name(num)
????else:
????????sys.exit(0)
names?=?load_name_list()
counter?=?Counter(names)
name_count?=?counter.most_common(1)[0]
if?name_count[1]?!=?1:
????sg.popup(f"本地文件data.txt存在同名同姓{name_count[0]},\n請(qǐng)手動(dòng)改同名同姓加其他的值區(qū)分后,再重啟程序繼續(xù)",?title="提示")
????sys.exit(0)
window?=?sg.Window('年會(huì)抽獎(jiǎng)程序',?layout,?finalize=True)
window["in"].update(f"待抽獎(jiǎng)名單({len(names)}人):")
winners?=?[]
random.shuffle(names)
window["list1"].update(names)
程序打包exe

a.ico后,移動(dòng)到和程序在相同的文件夾下,就可以進(jìn)行打包操作了。pyinstaller?-wF?lottery_draw.py?-i?a.ico



-------------------?End?-------------------
往期精彩文章推薦:
解決安裝Pycharm后在C盤下生成大文件的問題
一篇文章教會(huì)你使用Django根據(jù)現(xiàn)有數(shù)據(jù)庫(kù)反向生成models
手把手教你使用Django如何連接Mysql

歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群】
萬水千山總是情,點(diǎn)個(gè)【在看】行不行
/今日留言主題/
隨便說一兩句吧~~
評(píng)論
圖片
表情
