from random import random
def printintro(): #列印程式介紹資訊
print("20信計2班 甘發亮 50號 桌球比賽規則程式設計如下")
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): # 進行n場比賽
winsa, winsb = 0, 0
for i in range(n):
for j in range(7): #進行7局4勝的比賽
scorea, scoreb = simonegame(proba, probb)
if scorea > scoreb:
winsa += 1
else:
winsb += 1
return winsa, winsb
def gameover(a,b): #正常比賽結束
return a==11 or b==11
def gameover2(a,b): #進行搶12比賽結束
if abs((a-b))>=2:
return a,b
def simonegame(proba, probb): #進行一場比賽
scorea, scoreb = 0, 0 #初始化ab的得分
serving = "a"
while not gameover(scorea, scoreb): #用while迴圈來執行比賽
if scorea==10 and scoreb==10:
return(simtwogame2(proba,probb))
if serving == "a":
if random() < proba: ##用隨機數生成勝負
scorea += 1
else:
serving="b"
else:
if random() < probb:
scoreb += 1
else:
serving="a"
return scorea, scoreb
def simtwogame2(proba,probb):
scorea,scoreb=10,10
serving = "a"
while not gameover2(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 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)
n=input("輸入任何數")
兵乓球比賽
from random import random from pandas import dataframe from time import time class sportcompetitionanalyze def printinfo self function 列印程式的介紹資訊 print...
python簡單羽毛球比賽模擬
體育競技 from random import random def printinfo print 這個程式模擬兩個選手a和b的羽毛球競技比賽 print 程式需要兩個選手的能力值0 1 print 規則 三局兩勝 21分制 print 學號09 def getinput a eval input...
羽毛球比賽模擬
encoding utf 8 模擬羽毛球競技 比賽規則 2.前四局採用21分制,每個隊只有在贏得至少21分,且同時超過對方2分時才勝一局 from random import random from time import time def printinfo function 列印程式的介紹資訊 ...