首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让random.shuffle工作python random.shuffle()

无法让random.shuffle工作python random.shuffle()
EN

Stack Overflow用户
提问于 2017-11-27 17:15:29
回答 2查看 1.9K关注 0票数 0

现在我正在为Monty问题做一段代码

我有一些代码,我正在试图修复,然后增强。

,这是我一直坚持的一件事:

我试图改变使用random.shuffle()来选择奖品的方式,我必须使用random.shuffle(),而不是其他任何东西。

,我该怎么做?

我现在所拥有的并不能实现这一点。如果我把print(random.shuffle(door))放进去,我就得不到新的输出。如何使它返回选定的输出

代码语言:javascript
复制
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.")
EN

回答 2

Stack Overflow用户

发布于 2017-11-27 17:19:34

random.shuffle洗牌到位,这意味着如果您尝试将一个变量赋值给它不存在的输出,它将返回None

由于您说您必须使用shuffle,所以您可以使用random.shuffle(door)对列表进行洗牌,然后从这个洗牌列表中提取一个元素--例如:door[0]

票数 1
EN

Stack Overflow用户

发布于 2017-11-27 17:28:18

来自随机模块的python3文档

random.shuffle(x,随机)混淆序列x的位置。

“就位”意味着函数用一个不同的变量替换变量x(在您的例子中是'door'),该变量具有与以前相同的值,但它们的顺序被洗牌。它没有返回,它只是修改您给它的变量,这就是为什么您的print语句显示“None”。

如果您必须使用,random.shuffle,您可以简单地选择一个元素的门后,您已经洗牌(即random.shuffle(door),然后print(door[0]))。

但是,如果其他函数是一个选项,那么random.sample(door,1)可能更简单( random.sample 这里的文档)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47516428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档