我剛開始學習Python和我想的樂趣,看看我是否可以使蒙提霍爾問題的Python版本。當我使用1或2次迭代時,似乎一切都在小規模工作,但過去沒有任何工作。 for循環沒有完成我想要的迭代量。的Python沒有完成for循環
import random
def problem(tests):
wins = 0
losses = 0
doors = ["goat", "car", "goat"]
for test in range(tests):
#we shuffle the doors
random.shuffle(doors)
#the player picks a door
choice = random.choice(doors)
#monty chooses a door
montychoice = random.choice(doors)
while montychoice != 'car' or montychoice == choice:
montychoice = random.choice(doors)
#if the player's door is a car, he losses
if choice == 'car':
losses += 1
print 'goat'
elif choice == 'goat':
wins += 1
print 'car'
print "Switching wins: %d" % wins
print "Switching loses: %d" % losses
problem(100)
嘗試增加打印語句在while循環。它是我看到的唯一的代碼塊。所以如果出於任何原因你的退出條件沒有得到滿足,它將永遠留在while循環中。 – reticentroot
你不想爲此使用random.choice()。對於這個問題,知道選擇了哪些門非常重要,而不僅僅是門後面是什麼,所以使用random.randint(0,2)或random.randrange(len(門))來獲得實際的門指數。 – Cuagau