一.體育競技分析的ipo模式:
輸入i(input):兩個球員的能力值,模擬比賽的次數(其中,運動員的能力值,可以通過發球方贏得本回合的概率來表示,
乙個能力值為0.8的球員,在他發球時,有80%的可能性贏得1分)
處理p(process):模擬比賽過程
輸出o(output):兩個球員獲勝的概率
自頂向下的設計是一種解決複雜問題的行之有效的方法。其步驟如下:
自頂向下設計的基本思想,如下圖:
二.模擬桌球的比賽
比賽規則:再一局比賽中,先得11分的
一方為勝方;10平後,先多得兩分的一方為勝方
單打賽程式如下:
函式名稱
函式說明
printinfo()
列印程式的介紹資訊
getinputs()
獲得使用者輸入的引數
simngames(n, proba, probb)
模擬n場比賽
simonegame(proba, probb)
模擬一場比賽
gameover(a,b)
定義一局比賽的結束條件
printsummary( winsa, winsb)
輸出模擬比賽的結果
# -*- coding: utf-8 -*-1000局的結果如下:"""created on mon may 13
11:13:38
2019
@author: lzz
"""#e15.1matchanalysis.py
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("
請輸入選手b的能力值(0-1): "))
n = eval(input("
模擬比賽的場次: "))
return
a, b, 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
print(
"第{}場勝利的為a
".format(int(i/3
)))
else
: winsb += 1
print(
"第{}場勝利的為b
".format(int(i/3
)))
return
winsa, winsb
def gameover(a,b):
if a<10 or b<10
:
return a==11 or b==11
if a>=10 or b>=10
:
if abs(a-b)==2
:
return
true
else
:
return
false
def simonegame(proba, probb):
scorea, scoreb = 0, 0
serving = "a"
while
not gameover(scorea, scoreb):
if serving == "a"
:
if random()
scorea += 1
else
: serving="b"
else
:
if random()
scoreb += 1
else
: serving="a"
return
scorea, scoreb
def printsummary(winsa, winsb):
n = winsa +winsb
print(
"競技分析開始,共模擬{}場比賽
".format(n))
print(
"選手a獲勝{}場比賽,佔比
".format(winsa, winsa/n))
print(
"選手b獲勝{}場比賽,佔比
".format(winsb, winsb/n))
def main():
printintro()
proba, probb, n =getinputs()
winsa, winsb =simngames(n, proba, probb)
printsummary(winsa, winsb)
main()
三.運用 pyinstaller 打包該程式為可執行檔案:
安裝pyinstaller庫
輸入**檔案路徑
打包成功
執行結果
模擬體育競技
encoding utf 8 模擬羽毛球競技 比賽規則 2.前四局採用21分制,每個隊只有在贏得至少21分,且同時超過對方2分時才勝一局 from random import random from time import time def printinfo function 列印程式的介紹資訊 ...
模擬體育競技分析
coding utf 8 created on tue jun 9 11 18 48 2020 author 13549 from random import random 第一階段 defprintintro print 模擬兩個選手a和b的羽毛球比賽 print 程式執行需要a和b的能力值 以0...
模擬體育競技分析
比賽規則 1.採用5局3勝制 2.前四局採用25分制,每個隊只有在贏得至少25分,且同時超過對方2分時才勝一局 3.決勝局 第五局 採用15分制,先獲得15分,且同時超過對方2分為勝 from random import random defgetinputs 獲得使用者輸入的引數 a eval i...