Skip to main content
 首页 » 编程设计

python之'"NoneType' 对象不可订阅”。试图创建蒙提霍尔理论

2025年05月04日21dyllove98

(我指的是 Monty Hall 问题,这个网站不允许我提交标题中带有“问题”的内容)

我试图在 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 

请您参考如下方法:

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

也许你想要这样的东西?

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