Skip to main content
 首页 » 编程设计

python之secret 圣诞老人计划

2025年05月04日13傻小

我们需要创建一个可用于“ secret 圣诞老人”游戏的程序:

from random import * 
people=[] 
while True: 
    person=input("Enter a person participating.(end to exit):\n") 
    if person=="end": break 
    people.append(person) 
 
 
shuffle(people) 
for i in range(len(people)//2): 
    print(people[0],"buys for",people[1]) 

这是我开发的程序。截至目前,如果我输入 3 个人(例如 Bob、Ben、Bill) 它将返回“Ben buys for Bill”,而没有人为 Ben 或 Bob 购买。我目前正试图让它输出“Bob 为 Ben 购买,Ben 为 Bill 购买,Bill 为 Bob 购买”,但到目前为止没有成功。如果有人能给我一个提示/基础来设置它,我将不胜感激。另外,如果我的代码中有任何错误不允许我完成此操作,您能告诉我吗?谢谢。

请您参考如下方法:

首先提示,在 for 循环中使用 0 和 1 之类的常量而不是 i 是没有意义的。

for i in range(len(people)): 
    print(people[i],"buys for",people[(i+1)%(len(people))]) 

但是,此实现不会为您提供 secret 圣诞老人提供的所有可能性。

假设您输入“Alice”、“Bob”、“Claire”、“David”,您永远不会遇到以下情况:

  • Alice 为 Bob 买东西
  • Bob 为 Alice 买东西
  • 克莱尔为大卫买单
  • 大卫为克莱尔买东西

你只会得到circular permutations ,即:

  • Alice 为 Bob 买东西
  • 鲍勃为克莱尔买东西
  • 克莱尔为大卫买单
  • 大卫为爱丽丝买东西

等。

您需要一些额外的工作才能成为完美的 secret 圣诞老人 :)