from random import random
from pandas import DataFrame
from time import time
class SportCompetitionAnalyze:
def PrintInfo(self):
'''
function: 打印程序的介绍信息
'''
print("{:*^70}".format("产品简介"))
print("产品名称: 乒乓球竞技模拟分析器(采取单打淘汰赛制)")
print("产品概述: 通过输入多个队伍的能力值(0到1之间的小数表示),能够模拟多次多个队伍的乒乓球竞技比赛,从而得出各自的胜率!")
print("产品作者: 步平凡 - 04")
print("{:*^70}".format("模拟开始"))
def GetInputs_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)
def GetInputs_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(',')))
for i in range(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)
def PrintResult(self):
'''
function: 输出模拟比赛的结果
data: 存储每支的比赛信息
'''
print("{:*^70}".format("模拟结束"))
print("竞技分析结束,每组共模拟{}场比赛。".format(self.n))
data = []
for i in range(self.probNum):
tmplist = []
tmplist.append(self.probAbilityList_Original[i]) # 存储能力值
tmplist.append(self.probwinsList[i]) # 存储获胜的场数
tmplist.append(self.probwinsList[i]/self.n)