python n个人交换礼物(自己不能交换自己的)

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值