【问题标题】:'"NoneType' object is not subscriptable". Trying to create the Monty Hall theory'"NoneType' 对象不可下标"。试图创造蒙蒂霍尔理论
【发布时间】:2012-10-07 00:58:16
【问题描述】:

(我的意思是蒙蒂霍尔问题,这个网站不允许我提交标题中带有“问题”的内容)

我正在尝试在 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

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

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

    也许你想要这样的东西?

    random.shuffle(items)
    random.shuffle(doors)
    door1 = [doors[0], items[0]]
    door2 = [doors[1], items[1]]
    door3 = [doors[2], items[2]]
    

    【讨论】:

      【解决方案2】:

      random.shuffle 随机播放它不会返回任何内容......我想你想要random.choice

      【讨论】:

        【解决方案3】:

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

        改用random.choice

        door1 = [random.choice(doors), random.choice(items)]
        

        【讨论】:

          猜你喜欢
          • 2018-02-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-03
          • 1970-01-01
          • 1970-01-01
          • 2013-09-22
          相关资源
          最近更新 更多