python 冒泡排序

 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)
   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值