栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python实验蒙蒂霍尔悖论游戏

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/991025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号