霍尔悖论游戏"/>
python实验蒙蒂霍尔悖论游戏
**实验内容:**假设你正参加一个有奖游戏节目,并且有 3 道门可选:其中一个后面是汽车,另外两个 后面是山羊。你选择一个门,比如说 1 号门,主持人当然知道每个门后面是什么并且打开了 另一个门,比如说 3 号门,后面是一只山羊。这时,主持人会问你"你想改选 2 号门吗?", 然后根据你的选择确定最终要打开的门,并确定你获得山羊(输)或者汽车(赢)。 编写程序,模拟上面的游戏
下面展示一些 内联代码片
。
from random import randrange
'''返回一个字典,键为 3 个门号,值为门后面的物品'''
def init():result = {i: 'goat' for i in range(3)} r = randrange(3) result[r] = 'car' return result
def startGame(): # 获取本次游戏中每个门的情况 doors = init() # 获取玩家选择的门号 while True: try:firstDoorNum = int(input('Choose a door to open:')) assert 0<= firstDoorNum <=2 breakexcept: print('Door number must be between {} and {}'.format(0, 2))# 主持人查看另外两个门后的物品情况for door in doors.keys()-{firstDoorNum}: # 打开其中一个后面为山羊的门if doors[door] == 'goat':print('"goat" behind the door', door) # 获取第三个门号,让玩家纠结 thirdDoor = (doors.keys()-{door, firstDoorNum}).pop() change = input('Switch to {}?(y/n)'.format(thirdDoor)) finalDoorNum = thirdDoor if change=='y' else firstDoorNum if doors[finalDoorNum] == 'goat': return 'I Win!' else:return 'You Win.' while True: print('='*30) print(startGame()) r = input('Do you want to try once more?(y/n)')if r == 'n': break
更多推荐
python实验蒙蒂霍尔悖论游戏
发布评论