for i in range(len(self.teamList), 0, -1): for j in range(0, i - 1): if self.teamList[j].getScore() < self.teamList[j + 1].getScore(): temp = self.teamList[j];'''移动最小到最后一位''' self.teamList[j] = self.teamList[j + 1]; self.teamList[j + 1] = temp; 异常捕获 class teamInfoNotFindError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value) try: raise teamInfoNotFindError("TeamInfo Not Find") except teamInfoNotFindError as e: print(e.value) 类定义 class teamInfo: teamId = "" winNum = 0 failNum = 0 midNum = 0 __sorce = -1 ranking = -1 __log="" def __init__(self, teamId): self.teamId = teamId def addWin(self,teamid): self.winNum = self.winNum + 1 self.__log=self.__log+(teamid+":3--") def addFail(self,teamid): self.failNum = self.failNum + 1 self.__log=self.__log+(teamid+":0--") def addMid(self,teamid): self.midNum = self.midNum + 1 self.__log=self.__log+(teamid+":1--") def addScore(self, score,teamid): if self.isInput(teamid)==-1: if score == 3: self.addWin(teamid) elif score == 1: self.addMid(teamid) elif score == 0: self.addFail(teamid) else: print("输入错误!!!") def getScore(self): __sorce = self.winNum * 3 + self.midNum * 1 return __sorce def addSetRandking(self, ranking): self.ranking = ranking def isInput(self,teamid): currentlog_a=self.__log.split("--") for i in range(0,len(currentlog_a)): '''存在返回0''' if teamid==currentlog_a[i].split(":")[0]: print(self.teamId+"与"+currentlog_a[i].split(":")[0]+"比赛结果已录入") return 0 return -1 class allTeamInfo: teamList = [] def addTeam(self, teamInfo): if len(self.teamList)<=1000: self.teamList.append(teamInfo) else: print("比赛队伍总数<=1000") '''排序''' def reSetRandking(self): for i in range(len(self.teamList), 0, -1): for j in range(0, i - 1): if self.teamList[j].getScore() < self.teamList[j + 1].getScore(): temp = self.teamList[j];'''移动最小到最后一位''' self.teamList[j] = self.teamList[j + 1]; self.teamList[j + 1] = temp; '''此时设置ranking''' self.teamList[i - 1].ranking = i def selectTeamInfo(self, teamid): for i in range(0, len(self.teamList)): if teamid == self.teamList[i].teamId: return i return - 1 #类调用, def AddGameResult(Team1Id, Team1Score, Team2Id, Team2Score): ''' 输入参数: Team1Id 队伍1ID Team1Score 队伍1得分 Team2Id 队伍2ID Team2Score 队伍2得分 输出参数: 无 返回值: 无 方法说明: 输入队伍1对队伍2的比赛结果 ''' '''ID相同''' iT1=int(Team1Id) iT2=int(Team2Id) if iT1>=0 and iT1<=65535 and iT2>=0 and iT2<=65535: if Team1Id!=Team2Id: t1 = g_allteaminfo.selectTeamInfo(Team1Id) t2 = g_allteaminfo.selectTeamInfo(Team2Id) if t1 == -1: tem = teamInfo(Team1Id) tem.addScore(Team1Score,Team2Id) g_allteaminfo.addTeam(tem) else: g_allteaminfo.teamList[t1].addScore(Team1Score,Team2Id) if t2 == -1: tem = teamInfo(Team2Id) tem.addScore(Team2Score,Team1Id) g_allteaminfo.addTeam(tem) else: g_allteaminfo.teamList[t2].addScore(Team2Score,Team1Id) else: print("不能和自己比赛") else: print("team1或team2的ID超过限制") def GetTeamResult(TeamId, TeamResultList): ''' 输入参数: TeamId 队伍ID 输出参数: TeamResultList 返回队伍的最新赛况,返回一个list,内容如下: [队伍ID, 胜的场数, 平的场数, 负的场数, 积分, 名次] 提醒:调用者不负责清空这个list,必须在此函数内先处理清空 返回值: 成功返回0,失败返回-1。若没有输入过该队伍的比赛,返回失败 方法说明: 获取队伍的最新赛况 ''' g_allteaminfo.reSetRandking() teamindex = g_allteaminfo.selectTeamInfo(TeamId) if teamindex == -1: raise teamInfoNotFindError("TeamInfo Not Find") else: try: teaminfo = g_allteaminfo.teamList[teamindex] reslut = [teaminfo.teamId,teaminfo.winNum,teaminfo.midNum,teaminfo.failNum,teaminfo.getScore(),teaminfo.ranking] TeamResultList[0]=reslut return 0 except Exception: return -1 def Clear(): ''' 输入参数: 无 输出参数: 无 返回值: 无 方法说明: 清空所有队伍以及其赛况信息 ''' pass g_allteaminfo = allTeamInfo() TeamResultList = ["","","","","",""] AddGameResult("0001", 1, "0002", 1) AddGameResult("0001", 0, "0003", 3) AddGameResult("0001", 3, "0004", 0) AddGameResult("0001", 1, "0005", 1) AddGameResult("0001", 0, "0006", 3) AddGameResult("0002", 0, "0003", 3) AddGameResult("0002", 3, "0004", 0) AddGameResult("0002", 1, "0005", 1) AddGameResult("0002", 0, "0006", 3) AddGameResult("0003", 3, "0004", 0) AddGameResult("0003", 1, "0005", 1) AddGameResult("0003", 0, "0006", 3) AddGameResult("0004", 1, "0005", 1) AddGameResult("0004", 0, "0006", 3) AddGameResult("0005", 0, "0006", 3) AddGameResult("0006", 0, "0005", 3) try: GetTeamResult("0001",TeamResultList) print(TeamResultList[0]) GetTeamResult("0002",TeamResultList) print(TeamResultList[0]) GetTeamResult("0003",TeamResultList) print(TeamResultList[0]) GetTeamResult("0004",TeamResultList) print(TeamResultList[0]) GetTeamResult("0005",TeamResultList) print(TeamResultList[0]) GetTeamResult("0006",TeamResultList) print(TeamResultList[0]) except teamInfoNotFindError as e: print(e.value)