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 
             break
        except: 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 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值