2

(つまり、モンティホール問題です。このサイトでは、タイトルに「問題」が含まれているものを送信できません)

Pythonでモンティホール問題を作成しようとしています。良い計画があると思いましたが、「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 に答える