通過python實(shí)現(xiàn)隨機(jī)交換禮物程序詳解
看到了一個(gè)面試題,想了兩種解法,不知道符不符合要求,記錄如下:
題目:有N個(gè)人,每人備一個(gè)圣誕禮物,現(xiàn)需要寫一個(gè)程序,隨機(jī)交互禮物,要求:自己不能換到自己的禮物,用python實(shí)現(xiàn)。
方法一:
構(gòu)造二維列表存儲參與者的名字和所帶禮物,使用random.choice()隨機(jī)選擇禮物。
import random lsGiftIn = [['Jack','apple'],['June','ball'],['Mary','card'],['Duke','doll'],['James','egg'],['Tina','flute'],['Tom','coffee']]#存儲參與者的姓名和自己帶來的禮物 lsGiftOut = []#存儲交換后的結(jié)果 n = len(lsGiftIn)#參與人數(shù) gifts = [i[1] for i in lsGiftIn]#未分配出去的禮物 for x in range(n): flag = 0 person = lsGiftIn[x][0] myGift = lsGiftIn[x][1] if myGift in gifts: flag = 1 gifts.remove(myGift) getGift = random.choice(gifts)#隨機(jī)分配禮物 lsGiftOut.append([person,getGift]) gifts.remove(getGift) if flag: gifts.append(myGift) print(lsGiftOut)
方法二:
構(gòu)造字典存儲參與者的姓名和禮物,其中姓名為key,禮物為value,使用字典的popitem()方法隨機(jī)返回禮物。
dictGiftIn = {'Jack':'apple','Peter':'beer','Tom':'card','Duke':'doll','Mary':'pineapple','James':'flute','Tina':'coffee'} dictGiftOut = {} persons = list(dictGiftIn.keys()) for p in persons: flag = 0#標(biāo)記自己帶來的禮物是否還未分配出去 if p in dictGiftIn: flag = 1 myGift = dictGiftIn.pop(p)#如果自己帶來的禮物還未分配,則去掉該禮物 getGift = dictGiftIn.popitem()#隨機(jī)返回并移除一對key-value值 dictGiftOut[p] = getGift[1]#得到的禮物 if flag: dictGiftIn[p] = myGift#將自己的禮物添到未分配禮物中 print(dictGiftOut)#輸出禮物分配情況
The End ~
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- python代碼 FTP備份交換機(jī)配置腳本實(shí)例解析
- python使用paramiko模塊通過ssh2協(xié)議對交換機(jī)進(jìn)行配置的方法
- 使用python telnetlib批量備份交換機(jī)配置的方法
- Python通過RabbitMQ服務(wù)器實(shí)現(xiàn)交換機(jī)功能的實(shí)例教程
- Python中的正則表達(dá)式與JSON數(shù)據(jù)交換格式
- Python 實(shí)現(xiàn)交換矩陣的行示例
- Python Numpy 實(shí)現(xiàn)交換兩行和兩列的方法
- Python自動巡檢H3C交換機(jī)實(shí)現(xiàn)過程解析
相關(guān)文章
Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法【測試可用】
這篇文章主要介紹了Python圖像處理實(shí)現(xiàn)兩幅圖像合成一幅圖像的方法,結(jié)合實(shí)例形式分析了Python使用Image.blend()接口與Image.composite()接口進(jìn)行圖像合成的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01jupyter notebook oepncv 顯示一張圖像的實(shí)現(xiàn)
這篇文章主要介紹了jupyter notebook oepncv 顯示一張圖像的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Win10系統(tǒng)下安裝編輯器之神(The?God?of?Editor)Vim并且構(gòu)建Python生態(tài)開發(fā)環(huán)境過程(2
這篇文章主要介紹了Win10系統(tǒng)下安裝編輯器之神(The?God?of?Editor)Vim并且構(gòu)建Python生態(tài)開發(fā)環(huán)境(2020年最新攻略),本次我們在Win10平臺構(gòu)建一套以Vim為核心的Python開發(fā)環(huán)境,需要的朋友可以參考下2023-01-01淺談python為什么不需要三目運(yùn)算符和switch
下面小編就為大家?guī)硪黄獪\談python為什么不需要三目運(yùn)算符和switch。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06淺談如何使用python抓取網(wǎng)頁中的動態(tài)數(shù)據(jù)實(shí)現(xiàn)
這篇文章主要介紹了淺談如何使用python抓取網(wǎng)頁中的動態(tài)數(shù)據(jù)實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08