现在我正在为Monty问题做一段代码
我有一些代码,我正在试图修复,然后增强。
,这是我一直坚持的一件事:
我试图改变使用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.")发布于 2017-11-27 17:19:34
random.shuffle洗牌到位,这意味着如果您尝试将一个变量赋值给它不存在的输出,它将返回None。
由于您说您必须使用shuffle,所以您可以使用random.shuffle(door)对列表进行洗牌,然后从这个洗牌列表中提取一个元素--例如:door[0]
发布于 2017-11-27 17:28:18
random.shuffle(x,随机)混淆序列x的位置。
“就位”意味着函数用一个不同的变量替换变量x(在您的例子中是'door'),该变量具有与以前相同的值,但它们的顺序被洗牌。它没有返回,它只是修改您给它的变量,这就是为什么您的print语句显示“None”。
如果您必须使用,random.shuffle,您可以简单地选择一个元素的门后,您已经洗牌(即random.shuffle(door),然后print(door[0]))。
但是,如果其他函数是一个选项,那么random.sample(door,1)可能更简单( random.sample 这里的文档)。
https://stackoverflow.com/questions/47516428
复制相似问题