我有一些代码,我正在尝试修复然后增强
这是我坚持的一件事:
我试图通过使用random.shuffle()来改变选择奖项的方式,我必须使用random.shuffle(),而不是其他任何东西。
我该怎么做?
我现在拥有的不适用于此。
如果我放print(random.shuffle(door))
,我就不会得到新的输出。
如何让它返回所选的输出
import random
door = ["goat","goat","car"]
choice = int(input("Door 1, 2 or 3? "))
otherDoor = 0
goatDoor = 0
if choice == 1:
if door[1] == "goat":
otherDoor = 3
goatDoor = 2
elif door[2] == "goat":
otherDoor = 2
goatDoor = 3
elif choice == 2:
if door[0] == "goat":
otherDoor = 3
goatDoor = 1
elif door[2] == "goat":
otherDoor = 1
goatDoor = 3
elif choice == 3:
if door[0] == "goat":
otherDoor = 2
goatDoor = 1
elif door[1] == "goat":
otherDoor = 1
goatDoor = 2
switch = input("There is a goat behind door " + str(goatDoor) +\
" switch to door " + str(otherDoor) + "? (y/n) ")
if switch == "y":
choice = otherDoor
if random.shuffle(door) == "car":
print("You won a car!")
else:
print("You won a goat!")
input("Press enter to exit.")
答案 0 :(得分:1)
random.shuffle
随机播放,这意味着如果您尝试为其输入不存在的输出,它将返回None
。
由于您说您必须使用shuffle
,因此您可以使用random.shuffle(door)
对列表进行随机播放,然后从此混洗列表中获取元素,例如:door[0]
答案 1 :(得分:0)
来自python3 documentation of the random module:
random.shuffle(x [,random]) 将序列x随机移动。
'到位'意味着该函数正在用一个不同的变量替换变量x(在您的情况下,' door'),该变量具有与之前相同的值但是它们的顺序被洗牌。它没有返回,它只是修改了你给它的变量,这就是你的print语句显示“无”的原因。
如果您必须使用random.shuffle
,则只需在您将其改组后选择一个元素(即random.shuffle(door)
然后print(door[0])
)。
但是,如果要选择其他功能,那么random.sample(door,1)
可能会更简单(random.sample here的文档)。