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
En lisant la documentation, indiquée a quoi sert la méthode
__repr__
et la methode__eq__
.Expliquez le résultat de ce script:
= Person("Charles Paperman")
P = Person("Charles Paperman")
P2 = Person("Claude Shannon")
P3 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=140262109827728)) True
P == P2 (P=Je suis: Charles Paperman (id=140262109827728), P2=Je suis: Charles Paperman (id=140262109827984)) True
P == P3 (P=Je suis: Charles Paperman (id=140262109827728), P3=Je suis: Claude Shannon (id=140262109828048)) False
Proposez un code jolie qui prends une liste de personne et élimine les duplicats. Indiquez sa complexité.
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)
self)
person._relations.append(
def __repr__(self):
return f'{type(self).__name__}({",".join(map(str, self.persons))})'
class Amis(Relation):
pass
class Famille(Relation):
pass
- Expliquez le résultat de ce script:
= Amis()
A
A.ajout_personne(P)
A.ajout_personne(P)
A.ajout_personne(P2)print(A)
Amis(Je suis: Charles Paperman (id=140262109827728))
- Proposez un script qui:
Crée les personnes:
- Derrick Howell
- Tammy Garrett
- Eric Edwards
- Lisa Kim
- David Parker
- Nicole Wood
- April Joseph
- Brian Medina
- Christian Holmes
- Gregory Molina
Fait en sorte que:
- Derrick et Tammy soit de la même famille,
- Tammy est amie avec Eric et Lisa et David,
- Nicole est amie avec Derrick et April
- April, Brial et CHristian sont de la même Famille
- Christian et Gregory sont amis
- É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:
- \(P_1=K_1\)
- \(P_2=K_n\)
- \(P_i\) et \(P_{i+1}\) sont en relations
- É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:
- Une propriété qui donne le degré
- Une méthode qui évalue le polynôme en un point
- Un jolie
__repr__
- Une méthode qui dérive le polynôme.
- Une méthode qui calcul une racine approchée via la méthode de Newton
Correction de l’exercice sur les polynome
Compiled the: mar. 17 déc. 2024 14:03:32 CET