我正在尝试创建一个简单的Python 3.3程序,它接受四个名称的列表,并将它们随机分配给列表中的其他人。例如,如果姓名是John、Aaron、Lydia和Robin:
John先选出一个名字。他不能抽到自己的名字,如果他抽到了,就把它放回去再抽一次。假设John抽到了Robin的名字。Robin的名字将从池中消失。接下来轮到Aaron抽签,他抽到了John。John的名字被淘汰了。等等,直到所有的名字都被分配完。
我创建了一个包含四个名字的列表,并为每个名字分配了1-4的值。然而,在移除列表时遇到了问题,显示值不存在。 list.remove(x):x不在列表中。
代码大致如下所示:
John先选出一个名字。他不能抽到自己的名字,如果他抽到了,就把它放回去再抽一次。假设John抽到了Robin的名字。Robin的名字将从池中消失。接下来轮到Aaron抽签,他抽到了John。John的名字被淘汰了。等等,直到所有的名字都被分配完。
我创建了一个包含四个名字的列表,并为每个名字分配了1-4的值。然而,在移除列表时遇到了问题,显示值不存在。 list.remove(x):x不在列表中。
代码大致如下所示:
def drawNames():
import random
John=1
Aaron=2
Lydia=3
Robin=4
validNames=[John, Aaron, Lydia, Robin]
nameDrawn=random.choice(validNames)
def draw():
nameDrawn=random.choice(validNames)
#John's Draw:
draw()
if nameDrawn != 1:
if nameDrawn == 2:
print("John drew: Aaron")
validNames.remove(2)
elif nameDrawn == 3:
print("John drew: Lydia")
validNames.remove(3)
elif nameDrawn == 4:
print("John drew: Robin")
validNames.remove(4)
#Aaron's Draw:
draw()
if nameDrawn !=2:
if nameDrawn ==1:
print("Aaron drew: John")
validNames.remove(1)
elif nameDrawn ==3:
print("Aaron drew: Lydia")
validNames.remove(3)
elif nameDrawn ==4:
print("Aaron drew: Robin")
validNames.remove(4)
#Lydia's Draw:
draw()
if nameDrawn !=3:
if nameDrawn ==1:
print("Lydia drew: John")
validNames.remove(1)
elif nameDrawn ==2:
print("Lydia drew: Aaron")
validNames.remove(2)
elif nameDrawn ==4:
print("Lydia drew: Robin")
validNames.remove(4)
#Robin's Draw:
draw()
if nameDrawn !=4:
if nameDrawn ==1:
print("Robin drew: John")
validNames.remove(1)
elif nameDrawn ==2:
print("Robin drew: Aaron")
validNames.remove(2)
elif nameDrawn ==3:
print("Robin drew: Lydia")
validNames.remove(3)
drawNames()
我也尝试使用名称而不是数字值,但仍然出现了相同的错误。
我认为这种方案效率低下。如果您有更好的建议,我将非常感激。