Skip to content

Commit e95c3e6

Browse files
committed
tweaks in exo-class-sort-hash
1 parent 2f97da3 commit e95c3e6

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

notebooks/exos/basic/EXO-class-sort-hash-nb.md

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,31 +27,42 @@ nbhosting:
2727

2828
## hashable
2929

30-
lorsqu'on a vu les types prédéfinis, on a dit qu'on ne pouvait utiliser comme clés de dictionnaire que des éléments **non mutables**
30+
lorsqu'on a vu les types prédéfinis, on a dit qu'on ne pouvait utiliser comme
31+
clés de dictionnaire que des éléments **non mutables**
3132

32-
en réalité, les éléments qui peuvent servir de clé dans un dictionnaire (ou être mis dans un ensemble, c'est le même critère) sont appelés des objets ***hashables***
33-
34-
et, comme pour tous les autres traits du langage, on peut assez facilement rendre une classe *hashable**
33+
cela est vrai pour les types prédéfinis du langage, mais pour nos types à nous
34+
(les classes, donc), c'est **plus subtil**:
35+
de manière générale, les éléments qui peuvent servir de clé dans un dictionnaire (ou être
36+
mis dans un ensemble, c'est le même critère) sont appelés des objets
37+
***hashables***
38+
et, comme pour tous les autres traits du langage, on peut assez facilement **rendre une classe *hashable***
3539

3640
## sortable
3741

42+
dans une veine similaire:
3843
pour trier une liste d'objets, on peut customiser l'ordre du tri en passant une fonction
3944

4045
`sorted(L, key=)`
4146

4247
**mais aussi**, il y a une autre façon
43-
si on veut trier des éléments homogènes - tous de la même classe - il suffit de définir un ordre sur les éléments de la classe
48+
si on veut trier des éléments homogènes - tous de la même classe - on peut assez
49+
facilement **définir un ordre** sur les éléments de la classe
4450

4551
## notre prétexte
4652

47-
pour s'entrainer, nous allons simplement créer une classe
53+
pour s'entrainer, nous allons simplement créer une classe `Student`:
4854

4955
- qui modélise un élève avec un nom, un prénom, et pour faire simple une note
5056
- cette note peut évoluer au cours du temps (par ex. une moyenne générale qui change au cours du trimestre)
5157
- on suppose qu'il n'y a pas deux élèves avec le même nom **et** le même prénom
52-
- on veut pouvoir, pour écrire la classe `Classe`, créer un ensemble d'élèves
53-
- et trier cet ensemble d'élèves par moyenne générale
54-
- et pouvoir créer un dictionnaire qui a les élèves comme clés
58+
59+
on veut pouvoir ensuite écrire une classe `Classe`:
60+
61+
- qui contient un **ensemble** (au sens `set` Python) d'élèves
62+
- et/ou un **dictionnaire** (au sens `dict` Python) qui a les élèves comme clés
63+
- et qui sache enfin trier cet ensemble d'élèves par moyenne générale
64+
65+
quelque chose dans le genre de (à compléter évidemment):
5566

5667
```{code-cell} ipython3
5768
class Student:

0 commit comments

Comments
 (0)