通過python實現(xiàn)隨機交換禮物程序詳解
看到了一個面試題,想了兩種解法,不知道符不符合要求,記錄如下:
題目:有N個人,每人備一個圣誕禮物,現(xiàn)需要寫一個程序,隨機交互禮物,要求:自己不能換到自己的禮物,用python實現(xiàn)。
方法一:
構(gòu)造二維列表存儲參與者的名字和所帶禮物,使用random.choice()隨機選擇禮物。
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)#隨機分配禮物
lsGiftOut.append([person,getGift])
gifts.remove(getGift)
if flag:
gifts.append(myGift)
print(lsGiftOut)
方法二:
構(gòu)造字典存儲參與者的姓名和禮物,其中姓名為key,禮物為value,使用字典的popitem()方法隨機返回禮物。
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()#隨機返回并移除一對key-value值
dictGiftOut[p] = getGift[1]#得到的禮物
if flag:
dictGiftIn[p] = myGift#將自己的禮物添到未分配禮物中
print(dictGiftOut)#輸出禮物分配情況
The End ~
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python圖像處理實現(xiàn)兩幅圖像合成一幅圖像的方法【測試可用】
這篇文章主要介紹了Python圖像處理實現(xiàn)兩幅圖像合成一幅圖像的方法,結(jié)合實例形式分析了Python使用Image.blend()接口與Image.composite()接口進行圖像合成的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
jupyter notebook oepncv 顯示一張圖像的實現(xiàn)
這篇文章主要介紹了jupyter notebook oepncv 顯示一張圖像的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Win10系統(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抓取網(wǎng)頁中的動態(tài)數(shù)據(jù)實現(xiàn)
這篇文章主要介紹了淺談如何使用python抓取網(wǎng)頁中的動態(tài)數(shù)據(jù)實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

