python n个人交换礼物(自己交换自己的)
import random
def changegift(n):
person=[]
gift=[]
for i in range(1,n+1):
person.append(‘person’+str(i))
gift.append(‘gift’+str(i))
person_gift=dict(zip(person,gift)) #给每个人指定一个礼物
#gift_new=[]
person_gift_new={} #交换礼物后的字典
print(“交换礼物前:{}”.format(person_gift)) #交易礼物前
for i in range(n): #交换次数
gift_ing = gift #将原礼物列表复制到实时礼物列表
b=len(gift_ing)
#print(gift_ing)
#随机生成一个数字获取礼物列表中任意一个礼物,如果获取到礼物与原礼物相同则重新随机获取,获取成功后将此礼物移除
#直到实时礼物列表只剩最后一个礼物时,则直接获取
if b==1:
person_gift_new[person[i]]=gift_ing[0] #直到实时礼物列表只剩最后一个礼物时,则直接获取
else:
num=random.randint(0,b-1)
#print(gift_ing[num],person_gift[person[i]])
if gift_ing[num]==person_gift[person[i]]: #随机生成一个数字获取礼物列表中任意一个礼物,如果获取到礼物与原礼物相同则重新随机获取
flag = True