L3 MIASHS, Algorithme et Programmation 3, année 2023

N’oubliez pas de rendre le TP sur Moodle pour la seconde chance.

Voici quelques classes qui modélisent des relations humaines

Voici une classe qui modélise une personne:

class Person:
    def __init__(self, nom):
        self._nom = nom
        self._relations = []

    @property
    def nom(self):
        return self._nom

    def __repr__(self):
        return f"Je suis: {self.nom} (id={id(self)})"
    
    def __eq__(self, other):
        return self.nom == other.nom

    @property
    def relations(self):
        return self._relations
  1. En lisant la documentation, indiquée a quoi sert la méthode __repr__ et la methode __eq__.

  2. Expliquez le résultat de ce script:

P  = Person("Charles Paperman")
P2 = Person("Charles Paperman")
P3 = Person("Claude Shannon")
print(f"P == P ({P=})",  P == P)
print(f"P == P2 ({P=}, {P2=})", P == P2)
print(f"P == P3 ({P=}, {P3=})",  P == P3)
P == P (P=Je suis: Charles Paperman (id=140431488438672)) True
P == P2 (P=Je suis: Charles Paperman (id=140431488438672), P2=Je suis: Charles Paperman (id=140431520883536)) True
P == P3 (P=Je suis: Charles Paperman (id=140431488438672), P3=Je suis: Claude Shannon (id=140431488438928)) False
  1. Proposez un code jolie qui prends une liste de personne et élimine les duplicats. Indiquez sa complexité.

  2. On ajoute quelques nouvelles classes avec un peu d’héritage


class Relation:
    def __init__(self):
        self.persons = list()

    def ajout_personne(self, person):
        if person not in self.persons:
            self.persons.append(person)
            person._relations.append(self)

    def __repr__(self):
        return f'{type(self).__name__}({",".join(map(str, self.persons))})'

class Amis(Relation):
    pass

class Famille(Relation):
    pass
  1. Expliquez le résultat de ce script:
A = Amis()
A.ajout_personne(P)
A.ajout_personne(P)
A.ajout_personne(P2)
print(A)
Amis(Je suis: Charles Paperman (id=140431488438672))
  1. Proposez un script qui:

Crée les personnes:

Fait en sorte que:

  1. Écire une fonction en_relation qui prends deux personnes et vérifie qu’elles ont une relation commune.

Deux personnes \(P_1\), \(P_2\) sont connectées s’il existe une suite de \((K_i)\) de taille \(n\in \mathbb{N}\) tel que:

  1. Écrire une fonction connecté qui prends deux personnes et vérifie qu’elles sont connectées.

Des objets pour les Polynômes

Écrire une classe polynomes qui permet de représenter un polynôme abstrait de \(\mathbb{R}[X]\). Faites en sorte que vos polynômes puissent être additionnés, soustraits et multipliés.

Il faudra aussi:

Correction de l’exercice sur les polynome



Compiled the: mar. 19 mars 2024 16:13:24 CET