Python程式設計思維練習 體育競技分析

2021-09-20 05:39:54 字數 2433 閱讀 3595

思維方式:自頂向下即將乙個複雜問題分解成幾個問題,再細分成乙個個具體的小問題,從而來解決複雜問題。自底向上為自頂向下的逆過程,即解決複雜問題的方法,逐步解決乙個個小問題,來達成目的。

1.將體育競技分析分解為以下幾個小步驟

1.1列印程式的介紹性資訊式

1.2獲得程式執行引數:proba(a的能力值),probb(b的能力值),n(比賽場次)

1.3利用球員ab的能力值,模擬n場比賽

1.4輸出球員ab獲勝的場次及概率

2.將各個步驟定義成函式來實現

分解

定義函式

3.完整**

from random 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 simonegame(proba, probb): # 進行一場比賽

scorea, scoreb = 0, 0 # 初始化ab的得分

serving = 'a' # 首先由a發球

while not gameover(scorea, scoreb): #用while迴圈來執行比賽

if serving == 'a':

if random() < proba: # random() 方法返回隨機生成的乙個實數,它在[0,1)範圍內。

scorea += 1 # 用隨機數來和能力值比較從而分出勝負

else:

serving = 'b'

else:

if random() < probb:

scoreb += 1

else:

serving = 'a'

return scorea, scoreb

def simngames(n, proba, probb): #進行n場比賽

winsa, winsb = 0, 0 # 初始化ab的勝場數

for i in range(n):

scorea, scoreb = simonegame(proba, probb)

if scorea > scoreb:

winsa += 1

else:

winsb += 1

return winsa, winsb

def gameover(c, d): #比賽結束

return c==15 or d==15

def printsummary(n ,wina, winb): #列印比賽結果

print('競技分析開始,共模擬{}場比賽'.format(n))

print('選手a獲勝{}場比賽,佔比%'.format(wina, wina/n*100))

print('選手b獲勝{}場比賽,佔比%'.format(winb, winb / n * 100))

def main():

printinfo()

proba, probb, n =getinputs()

winsa, winsb = simngames(n, proba, probb)

printsummary(n, winsa, winsb)

main()

4.執行結果分析

菜鳥互啄

中階對抗

皇城pk

分析以上資料得知:對於兩位能力相差相同的選手(都為0.05),能力越大的選手競技時,勝負概率越接近。

本練習來自中國大學mooc

python思維練習 體育競技分

高手過招,勝負只在毫釐之間 用科學的方法分析體育競技比賽 輸入 球員水平 輸出 可 的比賽成績 比賽規則 這個程式模擬兩個選手a和b的某種競技比賽 print 程式執行需要a和b的能力值 以0 1之間的小數表示 def getinputs a eval input 請輸入選手a的能力值 b eval...

python自頂向下的設計方法進行體育競技分析

本文嘗試採用自頂向下的設計方法進行體育競技分析。基本規則 兩個球員,交替用球拍擊球。一方首先具有發球權,雙方連續擊打,球落地則該回合結束。如果輸掉這一回合的是發球方,雙方均不加分,但發球權要交給另一方。如果發球方贏得了這一回合,則發球方贏得1 分,並繼續擁有發球權。首先到達15 分的一方贏得本局比賽...

python自頂向下的設計方法進行體育競技分析

1自頂向下的設計方法 以乙個總問題開始,試圖把它表達為很多小問題組成的解決方案。再用同樣的技術依次攻破每個小問題,最終問題變得非常小,以至於可以很容易解決。然後只需把所有的碎片組合起來,就可以得到乙個程式。頂層設計 自頂向下設計中最重要的是頂層設計。以體育競技分析為例,可以從問題的ipo描述開始。大...