2

(我的意思是蒙蒂霍尔问题,这个网站不会让我提交标题中带有“问题”的东西)

我正在尝试在 python 中创建 Monty Hall 问题,我以为我有一个很好的计划,但我收到错误““NoneType”对象不可下标”。当我尝试嵌套列表时会发生这种情况。有谁知道我该怎么做?或修复它?

谢谢你。

这是代码:

car = 0
goat = 0
turns = 0
amount = 100

import random

items = ["New Car", "Goat", "Goat"]
doors = ["Door1", "Door2", "Door3"]

while turns < amount:
    x = random.shuffle(items)
    door = random.shuffle(doors)
    door1 = [door[0], x[0]]
    door2 = [door[1], x[1]]
    door3 = [door[2], x[2]]

    new_list = [door1, door2, door3]

    player_choice = random.randint(0, 2)
    if player_choice == 0:
        print("You have chosen {0}, and behind that is a {1}".format(door1[0], door1[1]))
        if new_list[0][1] == "New Car":
            car += 1
            turns += 1
        else:
            goat += 1
            turns += 1

然后错误:

Traceback (most recent call last):
  File "<string>", line 250, in run_nodebug
  File "C:\Programming\Random Programs\Monty Hall Problem.py", line 16, in <module>
    door1 = [door[0], x[0]]
TypeError: 'NoneType' object is not subscriptable
4

3 回答 3

5

random.shuffle不返回结果。它只是修改您作为参数传递的列表。

也许你想要这样的东西?

random.shuffle(items)
random.shuffle(doors)
door1 = [doors[0], items[0]]
door2 = [doors[1], items[1]]
door3 = [doors[2], items[2]]
于 2012-10-07T01:04:23.077 回答
1

random.shuffle就地洗牌它不会返回任何东西......我想你想要random.choice

于 2012-10-07T00:59:51.167 回答
1

random.shuffle就地打乱列表,但不返回任何内容。

改用random.choice

door1 = [random.choice(doors), random.choice(items)]
于 2012-10-07T01:02:25.947 回答