模擬蒙蒂霍爾悖論遊戲

2021-10-11 15:28:26 字數 3249 閱讀 7530

題目:

假設你正在參加乙個有獎遊戲節目,有3扇門可選,其中一扇門的後面是汽車,另外兩扇門後面是山羊。你選擇了一扇門(比如1號門)後,主持人會開啟後面是山羊的另外一扇門(比如3號門)問你「想改選2號門嗎?」。然後根據你的選擇確定最終要開啟的門,並確定你獲得山羊(輸)還是汽車(贏)。

編寫程式,模擬上面的遊戲,要求使用函式儲存三扇門後面的具體東西資訊。

這次博主自己建立了乙個有趣的情景對話來模擬實驗,有興趣的同學可以玩玩哦

要用到的知識點:

字典斷言assert,運用異常處理結構,防止使用者非法輸入

for迴圈遍歷序列元素

函式的定義與呼叫

import random,time

defdoor()

:list=[

"羊",

"羊",

"汽車"

]dict

= random.shuffle(

list

)dict

["door1"]=

list[0

]dict

["door2"]=

list[1

]dict

["door3"]=

list[2

]return

dict

dict

=door(

)print

("主持人:歡迎收看有獎遊戲節目!..."

)time.sleep(1)

print()

time.sleep(1)

name=

input()

time.sleep(1)

print

("主持人:"

+name+

",你好!歡迎參加我們這個有獎競猜節目!\n"

)time.sleep(1)

print

("主持人:現在讓我們開始競猜........\n"

)time.sleep(2)

print

("主持人:這裡有三扇門,請問你想選擇哪扇門呢?\n"

)time.sleep(2)

choose=

int(

input

("1號門、2號門、3號門:"))

assert choose in[1

,2,3

],"請輸入正確的數字!!!!!!"

for i in

range(1

,4):

if i==choose:

continue

ifdict

["door"

+str

(i)]

=="羊"

: sheep_door=i

time.sleep(2)

print

("主持人:好的,我們的嘉賓選擇了"

+str

(choose)

+"號門。\n"

)time.sleep(2)

print

("主持人:現在我來開啟另一扇門\n"

)time.sleep(1)

print

("(...主持人正在選擇一扇門開啟...)\n"

)time.sleep(2)

print

("(...主持人開啟了"

+str

(sheep_door)

+"號門,這扇門後面是乙隻羊...)\n"

)time.sleep(2)

for i in

range(1

,4):

if i != sheep_door and i != choose:

rest=i

print

("主持人:"

+name+

",請問您想改選"

+str

(rest)

+"號門嗎?\n"

)time.sleep(1)

change=

input

("改選(y),否則(n):"

)assert change in

["y"

,"n"],

"請回答y or n!!!!!"

time.sleep(2)

if(change==

"y")

:print

("主持人:好的,我們的嘉賓又選擇了"

+str

(rest)

+"號門\n"

) final=rest

else

:print

("主持人:我們的嘉賓非常堅信自己的選擇呀,他選擇的依然是"

+str

(choose)

+"號門\n"

) final=choose

time.sleep(1)

print

("主持人:那麼,"

+name+

"這次究竟能否贏得汽車大獎呢?\n"

)time.sleep(1)

print

("主持人:廣告之後為您揭曉答案....\n"

)print

("(廣告中......)\n"

)time.sleep(8)

print

("(廣告結束...)\n"

)time.sleep(2)

print

("\n主持人:歡迎回到有獎競猜節目,現在就是揭曉答案的時刻了!\n"

)time.sleep(1)

print

("\n(...主持人開啟"

+str

(final)

+"號門...)"

)time.sleep(3)

print

("(裡面出現的是----"

+dict

["door"

+str

(final)]+

"!)\n"

)time.sleep(2)

if(dict

["door"

+str

(final)]==

"羊")

:print

("主持人:非常遺憾啊!小徐沒有競猜成功。"

)else

:print

("主持人:恭喜"

+name+

"!競猜成功,獲得一輛贊助商為本節目贊助的賓士一台!"

)

蒙蒂霍爾悖論小程式

import tkinter as tk import random import tkinter as tk import random def start print l2 0 print l1 global win global win1 win.destroy win1.destroy fo...

蒙提霍爾遊戲 python 模擬

本文使用蒙特卡羅方法驗證蒙提霍爾遊戲的結論。以下 本人原創!import random 蒙提霍爾遊戲 defplay game strategy nonchange 門牌編號 doors 0,1,2 門後的獎品 gifts goat goat car random.shuffle gifts 觀眾挑...

蒙提霍爾遊戲 python 模擬

本文使用蒙特卡羅方法驗證蒙提霍爾遊戲的結論。以下 本人原創!import random 蒙提霍爾遊戲 def play game strategy nonchange 門牌編號 doors 0,1,2 門後的獎品 gifts goat goat car random.shuffle gifts 觀眾...