24-NSIJ1ME1-3

  1. chien40 = Chien(40, 'Duke', 'wheel dog', 10)

  2. def changer_role(self, nouveau_role):
        self.role = nouveau_role
    
  3. chien40.changer_role('leader')

  4. def retirer_chien(self, numero):
        for i in range(len(self.liste_chiens)):
            if liste_chiens[i].id_chien == numero:
                self.liste_chiens.pop(i)
                return
    
  5. e11.retirer_chien(46)

  6. L'expression convert('4h36') renvoie 4 + 36 / 60 = 4.6.

  7. def temps_course(equipe):
        total = 0
        for temps in equipe.liste_temps:
            total = total + convert(temps)
        return total
    
  8. Le parcours infixe permet d'obtenir la liste des équipes classées de la plus rapide à la plus lente. En effet, le parcours infixe permet de considérer les noeuds dans un Arbre Binaire de Recherche (ABR) par ordre croissant.

  9. La fonction inserer est récursive car elle s'appelle elle-même (ligne 8 et 13).

  10. def inserer(arb, eq):
        if convert(eq.temps_etape) < convert(arb.racine.temps_etape):
            if arb.gauche is None:
                arb.gauche = Noeud(eq)
            else:
                inserer(arb.gauche, eq)
        else:
            if arb.droit is None:
                arb.droit = Noeud(eq)
            else:
                inserer(arb.droit, eq)
    
  11. def est_gagnante(arbre):
        if arbre.gauche == None:
            return arbre.racine.nom_equipe
        else:
            return est_gagnante(arbre.gauche)
    
  12. def rechercher(arbre, equipe):
        if arbre is None: # cas de base
            return False
        if arbre.racine == equipe: # cas de base
            return True
    
        # on va à gauche ou à droite suivant le temps du noeud courant
        if convert(equipe.temps_etape) < convert(arbre.racine.temps_etape):
            return rechercher(arbre.gauche, equipe)
        else:
            return rechercher(arbre.droit, equipe)