【发布时间】:2013-12-07 02:15:34
【问题描述】:
我正在尝试在 Python 3.3 中创建一个简单的程序,该程序采用四个名称的列表,并将它们随机分配给列表中的另一个人。例如,如果名字是 John、Aaron、Lydia 和 Robin:
约翰首先选择了一个名字。他不能自己画;如果他这样做了,他就把它放回去,然后再画一次。假设约翰画了罗宾的名字。罗宾的名字将从池中删除。接下来轮到Aaron画了。他画约翰。约翰的名字被删除了。等等,直到所有名称都被分配。
我创建了一个包含四个名称的列表,并为每个名称分配了一个值 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()
我也尝试过使用名称而不是数值,这产生了同样的错误。
我也觉得这是一个低效的方案。如果您有更好的建议,我将不胜感激。
【问题讨论】:
-
这是像“白象”还是“秘密圣诞老人”的图画?你想防止两个人互相挑剔吗?
标签: python list python-3.x scripting