Python 體育競技分析

2021-09-28 15:44:18 字數 2112 閱讀 5129

目錄

問題分析

自頂向下和自底向上

體育競技分析總體框架及步驟

舉一反三

體育競技分析

模擬n場比賽

比賽規則

自頂向下

自底向上

#體育競技分析

import random

def printinfo():

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 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 simonegame(proba, probb):

scorea, scoreb = 0, 0;

serving = "a"; #a先發球

while not gameover(scorea, scoreb): #not false 等於 true

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;

#返回bool值

def gameover(a, b):

return a == 15 or b == 15;

def main():

printinfo();

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獲勝376場比賽,佔比37.6%

選手b獲勝624場比賽,佔比62.4%

理解自頂向下和自底向上應用問題的擴充套件本文僅為學習python記錄,資料**於中國大學mooc《python語言設計》—嵩天

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 體育競技分析

引入隨機庫 提示使用者程式的功能和要求 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 ...