看到了一個(gè)面試題,想了兩種解法,不知道符不符合要求,記錄如下:
題目:有N個(gè)人,每人備一個(gè)圣誕禮物,現(xiàn)需要寫一個(gè)程序,隨機(jī)交互禮物,要求:自己不能換到自己的禮物,用python實(shí)現(xiàn)。
方法一:
構(gòu)造二維列表存儲(chǔ)參與者的名字和所帶禮物,使用random.choice()隨機(jī)選擇禮物。
import random lsGiftIn = [['Jack','apple'],['June','ball'],['Mary','card'],['Duke','doll'],['James','egg'],['Tina','flute'],['Tom','coffee']]#存儲(chǔ)參與者的姓名和自己帶來的禮物 lsGiftOut = []#存儲(chǔ)交換后的結(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)