我们需要创建一个可用于“ 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 圣诞老人 :)
