【问题标题】:cant get random.shuffle to work python random.shuffle() [duplicate]无法让 random.shuffle 工作 python random.shuffle() [重复]
【发布时间】:2018-05-11 00:23:11
【问题描述】:

现在我正在尝试为蒙蒂霍尔问题编写一段代码

我有一些代码正在尝试修复然后增强

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

我正在尝试使用 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.")

【问题讨论】:

  • 您需要密切关注answers to the question you linkedrandom.shuffle() 不返回任何东西。它会就地打乱列表。
  • random.shuffle() 就是这样做的……它对数据进行洗牌。 不应该输出任何东西。

标签: python python-3.x random


【解决方案1】:

random.shuffle 随机播放,这意味着如果您尝试将变量分配给它不存在的输出,它将返回 None

既然你说你必须使用shuffle,你可以用random.shuffle(door) 打乱列表,然后从这个打乱的列表中取出一个元素,例如:door[0]

【讨论】:

    【解决方案2】:

    来自python3 documentation of the random module

    random.shuffle(x[, random]) 将序列 x 打乱。

    “就地”意味着该函数将变量 x(在您的情况下为“门”)替换为具有与以前相同的值但顺序打乱的不同变量。它没有返回值,它只是修改了你给它的变量,这就是你的打印语句显示“无”的原因。

    如果您必须使用 random.shuffle,您只需在洗牌后选择门的一个元素(即 random.shuffle(door) 然后 print(door[0]))。

    但是,如果要选择其他功能,那么 random.sample(door,1) 可能会更简单(random.sample here 的文档)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 2014-12-22
      • 2018-01-10
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多