Skip to content

Commit

Permalink
cours 2 postmortem
Browse files Browse the repository at this point in the history
  • Loading branch information
LoicGrobol committed Jan 23, 2024
1 parent 35345f5 commit b7d4322
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 21 deletions.
6 changes: 4 additions & 2 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,15 +91,17 @@ courant si vous n'avez pas le choix et je ferai de mon mieux pour vous permettre

### Cours et tutoriels

- [Le tutoriel officiel](https://docs.python.org/fr/3/tutorial/) en français !
- [Le cours de France IOI](https://www.france-ioi.org/algo/chapters.php)
- [Le cours d'OpenClassroom](https://openclassrooms.com/fr/courses/7168871-apprenez-les-bases-du-langage-python)
- [Un MOOC](https://www.fun-mooc.fr/fr/cours/apprendre-a-coder-avec-python/) sur FUN
- [Google's Python Class](https://developers.google.com/edu/python/). Guido a travaillé chez eux.
Pas [ce
Guido](http://vignette2.wikia.nocookie.net/pixar/images/1/10/Guido.png/revision/latest?cb=20140314012724),
[celui-là]
- [Code Academy](https://www.codecademy.com/fr/learn/python)

Plus avancés :

- [Le tutoriel officiel](https://docs.python.org/fr/3/tutorial/) en français !
- [Practical Python](https://dabeaz-course.github.io/practical-python/Notes/Contents.html)
- [Python Mastery](https://github.com/dabeaz-course/python-mastery)

Expand Down
82 changes: 63 additions & 19 deletions slides/02-conditions/conditions.py.md
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ Le code ci-dessus est un peu redondant : il y a plus d'instruction que ce qui
nécessaire, mais il devrait vous montrer clairement comment faire dépendre l'exécution du code d'une
entrée.

### 🐁 Exo 🐁
### 🐁 Entraînement 🐁

Pouvez-vous simplifier le code précédent de telle sorte qu'il soit équivalent (c'est-à-dire qu'il
donne les mêmes sorties si on lui donne les mêmes entrées), mais en utilisant moins d'instructions ?
Expand Down Expand Up @@ -204,28 +204,40 @@ print("Ravie de te connaître en tout cas.")
On a dit qu'on pouvait inclure plusieurs instructions dans le bloc de code qui suit `if`. Voici ce
que ça donne :

```python
# Avant d'exécuter cette cellule, essayer de deviner les résultats en fonction des entrées

answer = input("Tu aimes bavarder ?")

if answer == "oui":
print("Top ! On discute, alors ?")
print("Moi j'aime le chocolat")
print("Et le calcul ! Tu savais que 2713 est un nombre premier ?")

print("Ciao !")
```

Et même des `if`s imbriqués

```python tags=["skip-execution"]
# Avant d'exécuter cette cellule, essayer de deviner les résultats en fonction des entrées

answer = input("Tu aimes bavarder ?")

if answer == "Oui":
if answer == "oui":
print("Top ! On discute, alors ?")
print("Tu aimes le chocolat ? Oui/Non")
print("Tu aimes le chocolat ? oui/non")
answer2 = input()
if answer2 == "Non":
if answer2 == "non":
print("Monstre !")
print("Adieu !")
print("Ciao !")
```

Vous pouvez aussi voir qu'on peut non seulement mettre plusieurs instructions dans un bloc `if`,
mais qu'on peut aussi les imbriquer.

Comment Python sait-il à quel bloc appartient chaque instruction ? Avec la longueur des alinéas !
L'**indentation** joue un rôle très important en Python (on y reviendra. Plusieurs fois.).

### 🔎 Tests 🔎
### 🔎 Entraînement 🔎

Essayez d'exécuter le programme précédent avec différentes combinaisons d'entrée. Assurez-vous de
bien comprendre à quelles conditions chacune des instructions est exécutée.
Expand All @@ -248,14 +260,14 @@ d'autres instructions si c'est « oui » ?.
Voici une solution :

```python tags=["skip-execution"]
print("Tu aimes le chocolat ? Oui/Non")
print("Tu aimes le chocolat ? oui/non")
answer = input()
if answer == "Non":
print("Monstre !")
print("Adieu !")
if answer == "Oui":
if answer == "oui":
print("On va bien s'entendre, alors !")
print("Mon préféré c'est le chocolat aux noisettes.")
if answer == "non":
print("Monstre !")
print("Adieu !")
```

Mais c'est un peu redondant : puisque la réponse est soit `"Oui"` soit `"Non"`, si l'utilisateurice
Expand All @@ -274,14 +286,14 @@ else:
Et en Python

```python tags=["skip-execution"]
print("Tu aimes le chocolat ? Oui/Non")
print("Tu aimes le chocolat ? oui/non")
answer = input()
if answer == "Non":
print("Monstre !")
print("Adieu !")
else:
if answer == "non":
print("On va bien s'entendre, alors !")
print("Mon préféré c'est le chocolat aux noisettes.")
else:
print("Monstre !")
print("Adieu !")
```

`else` est liée au `if` qui le précède et ne permet pas d'ajouter une condition. On peut donc avoir
Expand All @@ -305,11 +317,12 @@ if "rouge" in sentence:

if "vert" in sentence:
print("Vert !")

else:
print("Aucune couleur n'a été trouvée")
```

On peut avoir des `else` dans un bloc conditionnel :

```python tags=["skip-execution"]
answer = input("Tu aimes bavarder ?")

Expand All @@ -322,9 +335,12 @@ if answer == "Oui":
print("Adieu !")
else:
print("Bravo")

print("Ciao !")
```

Ici le `else` est au même niveau d'indentation que le premier `if`, c'est donc à ce dernier qu'il est lié :

```python tags=["skip-execution"]
answer = input("Tu aimes bavarder ?")

Expand Down Expand Up @@ -520,6 +536,34 @@ Outre les booléens `True` et `False`, la plupart des objets en Python ont une v
(*truthiness*). La plupart sont vrais, ceux qui sont faux étant en général d'une façon ou d'une
autre vides, nuls… Nous verrons d'autres exemples.

```python
print(bool("abc"))
```

Je vous recommande plutôt de faire les tests explicitement :

```python
s = "spam"

if len(s) > 0: # len() renvoie la longueur de la chaîne
print("machin")
else:
print("bidule")
```

```python
print(len("spam"))
```

```python
i = 2

if i != 0:
print("Vrai!")
else:
print("Faux")
```

## Exercices

Répondre à ces exercices directement dans le notebook, le sauvegarder sous un nom de la forme
Expand Down

0 comments on commit b7d4322

Please sign in to comment.