from random import random
def printintro():
print("這個程式模擬兩個選手a和b的某種競技比賽")
print("程式執行需要a和b的能力值(以0到1之間的小數表示)")
def getinputs():
a = eval(input("請輸入選手a的能力值(0-1):"))
b = eval(input("請輸入選手a的能力值(0-1):"))
n = eval(input("模擬比賽的場次"))
return a, b, n
def printsummary(winsa, winsb):
n = winsa + winsb
print("競技分析開始,共模擬{}場比賽".format(n))
print("選手a獲勝{}場比賽,佔比".format(winsa, winsa/n))
print("選手b獲勝{}場比賽,佔比".format(winsb, winsb/n))
def gameover(a, b):
return a==15 or b==15
def simonegame(proba, probb):
scorea, scoreb = 0, 0
serving = "a"
while not gameover(scorea, scoreb):
if serving =="a":
if random() < proba:
scorea += 1
else:
serving = "b"
else:
if random() < probb:
scoreb +=1
else:
serving = "a"
return scorea, scoreb
def simngames(n, proba, probb):
winsa , winsb = 0,0
for i in range(n):
scorea, scoreb = simonegame(proba, probb)
if scorea > scoreb:
winsa += 1
else:
winsb +=1
return winsa, winsb
def main():
printintro()
proba, probb, n = getinputs()
winsa, winsb = simngames(n, proba, probb)
printsummary(winsa, winsb)
main()
執行輸入輸出即可 體育競技分析
體育競技 2from random import random 3def printinfo 4print 這個程式模擬兩個選手a和b的羽毛球競技比賽 5print 程式需要兩個選手的能力值0 1 6print 規則 三局兩勝 21分制 7print 89defgetinput 10 a eval ...
Python 體育競技分析
自頂向下 print 這個程式模擬量個選手a和b的某種競技比賽 print 程式執行需要a和b的能力值 以0到1之間的小數表示 def getinputs a eval input 請輸入選手a的能力值 0 1 b eval input 請輸入選手b的能力值 0 1 n eval input 模擬比...
Python 體育競技分析
目錄 問題分析 自頂向下和自底向上 體育競技分析總體框架及步驟 舉一反三 體育競技分析 模擬n場比賽 比賽規則 自頂向下 自底向上 體育競技分析 import random def printinfo print 這個程式模擬兩個選手a和b的某種競技比賽 print 程式執行需要a和b的能力值 以0...