礼物匹配程序怎么做

时间:2025-01-27 04:27:25 单机游戏

礼物匹配程序可以通过以下步骤实现:

构造数据结构

使用二维列表或字典来存储参与者的名字和所带礼物。

随机选择礼物

使用`random.choice()`方法从未分配的礼物中随机选择一份礼物。

分配礼物

将选中的礼物分配给当前参与者,并将该礼物从未分配的礼物列表中移除。

如果当前参与者带来的礼物还未分配,则将其重新放回未分配的礼物列表中。

输出结果

打印出礼物分配的最终结果。

```python

import random

构造字典存储参与者的姓名和礼物

dictGiftIn = {

"杰克": "苹果",

"彼得": "啤酒",

"汤姆": "卡",

"公爵": "娃娃",

"玛丽": "菠萝",

"詹姆斯": "笛",

"蒂娜": "咖啡"

}

dictGiftOut = {}

persons = list(dictGiftIn.keys())

for p in persons:

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

if p in dictGiftIn:

flag = 1

myGift = dictGiftIn.pop(p) 如果自己带来的礼物还未分配,则去掉该礼物

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

dictGiftOut[p] = getGift 得到的礼物

if flag:

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

print(dictGiftOut) 输出礼物分配情况

```

代码解释:

构造数据结构

`dictGiftIn`:存储参与者的名字和所带礼物。

`dictGiftOut`:存储交换后的结果。

`persons`:参与者的名字列表。

随机选择礼物

`getGift = dictGiftIn.popitem()`:从`dictGiftIn`中随机移除并返回一对键值。

分配礼物

如果当前参与者带来的礼物还未分配(`flag == 1`),则将其重新放回`dictGiftIn`。

将选中的礼物分配给当前参与者,并记录在`dictGiftOut`中。

输出结果

打印`dictGiftOut`,显示礼物分配的最终结果。

这个程序可以确保每个参与者都能获得一个礼物,并且不会拿到自己的礼物。