交换礼物用什么程序写好

时间:2025-01-17 23:17:23 热门攻略

```python

import random

参与者的名字和所带礼物

dictGiftIn = {

"杰克": "苹果",

"彼得": "啤酒",

"汤姆": "卡",

"公爵": "娃娃",

"玛丽": "菠萝",

"詹姆斯": "笛",

"蒂娜": "咖啡"

}

构造一个列表存储参与者的名字

people = list(dictGiftIn.keys())

标记自己带来的礼物是否还未分配出去

giftIn = dict(dictGiftIn)

def exchange_gifts(people, giftIn):

while len(giftIn) > 1: 只要还有礼物未分配,就继续交换

p = random.choice(people) 随机选择一个参与者

flag = 0 标记该参与者是否已经拿到自己的礼物

myGift = giftIn.pop(p) 如果该参与者带来的礼物还未分配,则去掉该礼物

if myGift in giftIn: 如果该参与者的礼物还在礼物列表中

flag = 1 标记为已拿到自己的礼物

giftIn[p] = myGift 将自己的礼物放到未分配礼物中

if flag: 如果该参与者已经拿到自己的礼物

giftIn[p] = myGift 将自己的礼物放到未分配礼物中

else:

getGift = giftIn.popitem() 随机返回并移除一对键值

giftIn[p] = getGift 得到的礼物

return dict(giftIn) 返回最终的礼物分配情况

运行交换礼物的程序

final_gift_distribution = exchange_gifts(people, giftIn)

print(final_gift_distribution)

```

这个程序首先定义了一个包含参与者名字和礼物的字典`dictGiftIn`,然后通过一个循环实现礼物的随机交换,直到所有礼物都被分配完毕。在每次循环中,程序会随机选择一个参与者,并检查他是否已经拿到了自己的礼物。如果没有,则从剩余的礼物中随机选择一件给他,并将自己的礼物放到未分配的礼物列表中。如果已经拿到了自己的礼物,则将自己的礼物重新放回未分配的礼物列表中。最后,程序返回最终的礼物分配情况。