看到了一個(gè)面試題,想了兩種解法,不知道符不符合要求,記錄如下:
創(chuàng)新互聯(lián)建站是專業(yè)的峰峰礦網(wǎng)站建設(shè)公司,峰峰礦接單;提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行峰峰礦網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!題目:有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)