2012-10-07 25 views
1

(我的意思是蒙蒂霍爾問題,本網站不會讓我提交的問題'標題中的'問題')'「NoneType'對象不可以訂閱」。試圖創建蒙蒂霍爾理論

我試圖在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

random.shuffle不返回的結果。它只是修改你作爲參數傳遞的列表。

也許你想要這樣的東西?

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

random.shuffle洗牌到位它不返回任何東西......我想你想random.choice

1

random.shuffle洗牌列表就地,但不返回任何內容。

使用random.choice代替:

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