自頂向下
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("模擬比賽的場次: "))
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.random() < proba:
scorea += 1
else:
serving = "b"
else:
if random.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()
輸出:
這個程式模擬量個選手a和b的某種競技比賽
程式執行需要a和b的能力值(以0到1之間的小數表示)
請輸入選手a的能力值(0-1): 0.45
請輸入選手b的能力值(0-1): 0.50
模擬比賽的場次: 1000
競技分析開始, 共模擬1000場比賽
選手a獲勝370場比賽, 佔比37.0%
選手b獲勝630場比賽, 佔比63.0%
Python 體育競技分析
目錄 問題分析 自頂向下和自底向上 體育競技分析總體框架及步驟 舉一反三 體育競技分析 模擬n場比賽 比賽規則 自頂向下 自底向上 體育競技分析 import random def printinfo print 這個程式模擬兩個選手a和b的某種競技比賽 print 程式執行需要a和b的能力值 以0...
Python 體育競技分析
引入隨機庫 提示使用者程式的功能和要求 defprintintro print 這個程式模擬兩個選手a和b的某種競技比賽 print 程式執行需要a和b的能力值 以0到1之間的小數表示 獲得資料 defgetinput a eval input 請輸入選手a的能力值 0 1 b eval input...
體育競技分析
體育競技 2from random import random 3def printinfo 4print 這個程式模擬兩個選手a和b的羽毛球競技比賽 5print 程式需要兩個選手的能力值0 1 6print 規則 三局兩勝 21分制 7print 89defgetinput 10 a eval ...