1. 程式人生 > 實用技巧 >模擬乒乓球比賽

模擬乒乓球比賽

fromrandomimportrandom
frompandasimportDataFrame
fromtimeimporttime
classSportCompetitionAnalyze:
defPrintInfo(self):
'''
function: 列印程式的介紹資訊
'''
print("{:*^70}".format("產品簡介"))
print("產品名稱: 乒乓球競技模擬分析器(採取單打淘汰賽制)")
print("產品概述: 通過輸入多個隊伍的能力值(0到1之間的小數表示),能夠模擬多次多個隊伍的乒乓球競技比賽,從而得出各自的勝率!")
print("產品作者: 步平凡 - 04
") print("{:*^70}".format("模擬開始")) defGetInputs_for_Singal(self): ''' function: 獲得使用者輸入的引數 獲得單打各隊員的能力值 ''' self.n=eval(input("請輸入需要模擬比賽的場數:")) self.probAbilityList_Original=list(map(eval,input("(注:通過輸入的次序進行兩兩配對, 即前兩個分別為隊員A和B;以此類推。)\n\ 請輸入各隊員的能力值(0~1), 請用英文逗號隔開(輸入個數為2的倍數): ").split(','))) self.probAbilityList
=self.probAbilityList_Original self.probNum=len(self.probAbilityList) defGetInputs_for_Double(self): ''' function: 獲得使用者輸入的引數 獲得雙打各隊伍各隊員的能力值 probAbilityList: 使用各隊伍中兩隊員的平均能力值作為該隊伍的能力值 --- 雙打 probAbilityList_Original: 儲存原生的各隊員能力值, 後續可用 ''' self.probAbilityList,self.probAbilityList_Original=[], [] self.n
=eval(input("請輸入需要模擬比賽的場數:")) Original=list(map(eval,input("(注:通過輸入的次序進行四四配對, 即前四個為隊伍A和B;以此類推。)\n\ 請輸入各隊員的能力值(0~1), 請用英文逗號隔開(輸入個數為4的倍數): ").split(','))) foriinrange(0,len(Original),2): self.probAbilityList.append((Original[i]+Original[i+1])/2) self.probAbilityList_Original.append(list([Original[i], Original[i+1]])) self.probNum=len(self.probAbilityList) defPrintResult(self): ''' function: 輸出模擬比賽的結果 data: 儲存每支的比賽資訊 ''' print("{:*^70}".format("模擬結束")) print("競技分析結束,每組共模擬{}場比賽。".format(self.n)) data=[] foriinrange(self.probNum): tmplist=[] tmplist.append(self.probAbilityList_Original[i])# 儲存能力值 tmplist.append(self.probwinsList[i])# 儲存獲勝的場數 tmplist.append(self.probwinsList[i]/self.n)