"source": "#### Ctrl+enter pour continuer ..........."
},
},
{
{
"cell_type": "markdown",
"cell_type": "markdown",
...
@@ -200,10 +204,19 @@
...
@@ -200,10 +204,19 @@
"outputs": [],
"outputs": [],
"source": "\n\n\n"
"source": "\n\n\n"
},
},
{
"cell_type": "markdown",
"metadata": {
"tags": [
"breakpoint"
]
},
"source": "#### Ctrl+enter pour continuer ..........."
},
{
{
"cell_type": "markdown",
"cell_type": "markdown",
"metadata": {},
"metadata": {},
"source": "## Les opérateurs `and`, `or` et `not`\n\nEn plus des comparateurs, les opérateurs `and`, `or` et `not` permettent de manipuler plusieurs conditions : \n* `X and Y` Les deux conditions doivent être vraies pour que l'expression soit vraie.\n* `X or Y` Une des deux conditions doit être vraies pour que l'expression soit vraie.\n* `not X` La condition X doit être fausse pour que l'expression soit vraie.\n\nTestez le code suivant : \n\n"
"source": "## III) Les opérateurs `and`, `or` et `not`\n\nEn plus des comparateurs, les opérateurs `and`, `or` et `not` permettent de manipuler plusieurs conditions : \n* `X and Y` Les deux conditions doivent être vraies pour que l'expression soit vraie.\n* `X or Y` Une des deux conditions doit être vraies pour que l'expression soit vraie.\n* `not X` La condition X doit être fausse pour que l'expression soit vraie.\n\nTestez le code suivant : \n\n"
},
},
{
{
"cell_type": "code",
"cell_type": "code",
...
@@ -252,6 +265,15 @@
...
@@ -252,6 +265,15 @@
"outputs": [],
"outputs": [],
"source": ""
"source": ""
},
},
{
"cell_type": "markdown",
"metadata": {
"tags": [
"breakpoint"
]
},
"source": "#### Ctrl+enter pour continuer ..........."
<p> Ce fichier est fait pour être lu sur le site <ahref="https://notebook.basthon.fr/"><imgsrc='https://notebook.basthon.fr/assets/efede5218c9087496f16.png'style="border: 0; display:inline; margin: 0 5px; height:30px"alt="Basthon"/></a>. <br>
<p> Ce fichier est fait pour être lu sur le site <ahref="https://notebook.basthon.fr/"><imgsrc='https://notebook.basthon.fr/assets/efede5218c9087496f16.png'style="border: 0; display:inline; margin: 0 5px; height:30px"alt="Basthon"/></a>. <br>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Si vous l'avez ouvert avec un autre programme, comme Jupyter notebook, vous riquez de rencontrer quelques bugs. <br>
Veuillez cliquez sur <ahref="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" <iclass="fa fa-folder"aria-hidden="true"></i>
Veuillez cliquez sur <ahref="https://notebook.basthon.fr/">ce lien</a> et y charger ce fichier à l'aide du bouton "Ouvrir" <iclass="fa fa-folder"aria-hidden="true"></i>
</p></div>
</p></div>
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
# 6 - Les Conditions
# 6 - Les Conditions
Dans ce chapitre, nous allons voir comment un programme peut faire des choix, et comment il peut exécuter du code de façon sélective.
Dans ce chapitre, nous allons voir comment un programme peut faire des choix, et comment il peut exécuter du code de façon sélective.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## I) Comparaisons
## I) Comparaisons
Un programme doit parfois comparer deux valeurs.
Un programme doit parfois comparer deux valeurs.
Python connait six types de comparaisons :
Python connait six types de comparaisons :
- plus petit (`<`),
- plus petit (`<`),
- plus petit ou égal (`<=`),
- plus petit ou égal (`<=`),
- égal (`==`),
- égal (`==`),
- différent (`!=`),
- différent (`!=`),
- plus grand (`>`),
- plus grand (`>`),
- plus grand ou égal (`>=`).
- plus grand ou égal (`>=`).
Dans des formules mathématiques nous utilisons les symboles ≤, ≥ et ≠. En Python vous devez utiliser deux symboles: `<=`, `>=` et `!=` à la place.
Dans des formules mathématiques nous utilisons les symboles ≤, ≥ et ≠. En Python vous devez utiliser deux symboles: `<=`, `>=` et `!=` à la place.
Le résultat d'une comparaison est une valeur **booléenne**, soit `True` soit `False`.
Le résultat d'une comparaison est une valeur **booléenne**, soit `True` soit `False`.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 1 </h3>Testez les lignes ci-dessous et ajoutez des exemples avec les autres 5 comparateurs.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 1 </h3>Testez les lignes ci-dessous et ajoutez des exemples avec les autres 5 comparateurs.
Il ne faut pas confondre l'opérateur d'affectation (`x = 2`) avec l'opérateur de comparaison (`x == 2`)
Il ne faut pas confondre l'opérateur d'affectation (`x = 2`) avec l'opérateur de comparaison (`x == 2`)
!!!
!!!
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 2 </h3>Que se passe-t-il si vous échangez les deux éléments dans `x == 2` ?
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 2 </h3>Que se passe-t-il si vous échangez les deux éléments dans `x == 2` ?
Et si vous échangez les deux éléments dans `x = 2` ?
Et si vous échangez les deux éléments dans `x = 2` ?
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
x=2# affectation
x=2# affectation
x==2# comparaison
x==2# comparaison
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:breakpoint
#### Ctrl+enter pour continuer
#### Ctrl+enter pour continuer ...........
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
## II) Conditions (`if`)
## II) Conditions (`if`)
Afin d'exécuter du code de façon sélective, on utilise le mot-clé `if`.
Afin d'exécuter du code de façon sélective, on utilise le mot-clé `if`.
Nous allons voir que :
Nous allons voir que :
- le mot-clé `if` permet une exécution conditionnelle,
- le mot-clé `if` permet une exécution conditionnelle,
- le mot-clé `if-else` permet de choisir entre deux alternatives,
- le mot-clé `if-else` permet de choisir entre deux alternatives,
- le mot-clé `elif` (else if) permet d'ajouter différentes conditions.
- le mot-clé `elif` (else if) permet d'ajouter différentes conditions.
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Exécution conditionnelle `if`
### Exécution conditionnelle `if`
La structure `if` ci-dessous permet d'exécuter une action seulement si `condition` est `True`.
La structure `if` ci-dessous permet d'exécuter une action seulement si `condition` est `True`.
``` python
``` python
ifcondition:
ifcondition:
action
action
```
```
Dans notre exemple nous affichons "Bravo!" si la valeur entrée est positive.
Dans notre exemple nous affichons "Bravo!" si la valeur entrée est positive.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
n=int(input('Entrez un nombre positif: '))
n=int(input('Entrez un nombre positif: '))
ifn>0:
ifn>0:
print('Bravo !')
print('Bravo !')
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Choix binaire `if - else`
### Choix binaire `if - else`
La structure `if - else` ci-dessous permet d'exécuter une **action_1** seulement si une **condition** est vraie et une **action_2** sinon :
La structure `if - else` ci-dessous permet d'exécuter une **action_1** seulement si une **condition** est vraie et une **action_2** sinon :
``` python
``` python
ifcondition:
ifcondition:
action_1
action_1
else:
else:
action_2
action_2
```
```
Dans l'exemple ci-dessous, on affiche si un nombre entré est positif ou négatif :
Dans l'exemple ci-dessous, on affiche si un nombre entré est positif ou négatif :
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
n=int(input('Entrez un nombre: '))
n=int(input('Entrez un nombre: '))
ifn>0:
ifn>0:
print('positif')
print('positif')
else:
else:
print('négatif')
print('négatif')
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
### Choix multiple (`if - elif - else`)
### Choix multiple (`if - elif - else`)
Le mot-clé `elif` est une contraction de **else if** et permet de continuer à tester d'autres conditions :
Le mot-clé `elif` est une contraction de **else if** et permet de continuer à tester d'autres conditions :
``` python
``` python
ifcondition1:
ifcondition1:
action_1
action_1
elifcondition2:
elifcondition2:
action_2
action_2
else:
else:
action_3
action_3
```
```
Dans l'exemple ci-dessous, on affiche si un nombre entré est positif, négatif ou nul :
Dans l'exemple ci-dessous, on affiche si un nombre entré est positif, négatif ou nul :
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
n=int(input('Entrez un nombre: '))
n=int(input('Entrez un nombre: '))
ifn>0:
ifn>0:
print('positif')
print('positif')
elifn<0:
elifn<0:
print('négatif')
print('négatif')
else:
else:
print('zéro')
print('zéro')
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
Sans le mot-clé `elif` nous devrions mettre le bloc `if` à l'intérieur du bloc `else` en indentation.
Sans le mot-clé `elif` nous devrions mettre le bloc `if` à l'intérieur du bloc `else` en indentation.
Avec multiples conditions, les blocs se décalent de plus en plus et rendent le programme illisible, comme ci-dessous.
Avec multiples conditions, les blocs se décalent de plus en plus et rendent le programme illisible, comme ci-dessous.
<divstyle="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">B) d'une condition (Et ensuite de D), un deux-points)
<divstyle="border-left:3px solid #3c763d; border-radius:2pt; color:#3c763d; padding:6px; background-color: #eff0e8">B) d'une condition (Et ensuite de D), un deux-points)
</div>
</div>
</details>
</details>
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 3 </h3>Écrivez un petit programme qui demande son âge à l'utilisatrice et affiche si elle est mineure ou majeure.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 3 </h3>Écrivez un petit programme qui demande son âge à l'utilisatrice et affiche si elle est mineure ou majeure.
Rappel : la fonction `int` transforme la réponse textuelle du `input` en nombre entier.
Rappel : la fonction `int` transforme la réponse textuelle du `input` en nombre entier.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
age=int(input("Bonjour, quel est votre âge ?"))
age=int(input("Bonjour, quel est votre âge ?"))
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 4 </h3>Écrivez un petit programme qui demande à l'utilisateur·ice s'il faut dessiner un triangle, un cercle ou un carré, puis qui fait le bon dessin.
<h3style="color:teal;background-color:azure;"><iclass="fa fa-pencil"aria-hidden="true"></i> Exercice 4 </h3>Écrivez un petit programme qui demande à l'utilisateur·ice s'il faut dessiner un triangle, un cercle ou un carré, puis qui fait le bon dessin.
Écrire un code qui traduit chacune des situations ci-après. Chaque programme commence par créer une variable pour chaque âge.
Écrire un code qui traduit chacune des situations ci-après. Chaque programme commence par créer une variable pour chaque âge.
**Situation 1 :** Si Camille est plus âgée qu’Antoinette ou que Bernard et si Antoinette est plus jeune que Bernard, on affiche l’âge d’Antoinette, mais si Antoinette a le même âge ou est plus âgée que Bernard, on affiche l’âge de Bernard.
**Situation 1 :** Si Camille est plus âgée qu’Antoinette ou que Bernard et si Antoinette est plus jeune que Bernard, on affiche l’âge d’Antoinette, mais si Antoinette a le même âge ou est plus âgée que Bernard, on affiche l’âge de Bernard.
Sinon on affiche l’âge de Camille.
Sinon on affiche l’âge de Camille.
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
**Situation 2:** Si Bernard et Camille ont le même âge, on affiche l’âge de la plus jeune des trois personnes.
**Situation 2:** Si Bernard et Camille ont le même âge, on affiche l’âge de la plus jeune des trois personnes.
<b style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-warning" aria-hidden="true"> </i> Rappel : L'opérateur modulo (%) calcule le reste de la division entière. En conséquence, x % y vaut 0 quand x est divisible par y. <i class="fa fa-warning" aria-hidden="true"> </i> </b>
<b style="color:chocolate;background-color:papayawhip;" > <i class="fa fa-warning" aria-hidden="true"> </i> Rappel : L'opérateur modulo (%) calcule le reste de la division entière. En conséquence, x % y vaut 0 quand x est divisible par y. <i class="fa fa-warning" aria-hidden="true"> </i> </b>
Écrivez un petit programme qui demande à l'utilisateur·ice un nombre et indique s'il est pair (divisible par 2) ou pas.
Écrivez un petit programme qui demande à l'utilisateur·ice un nombre et indique s'il est pair (divisible par 2) ou pas.
Créez un quiz avec des questions à choix multiple sur un sujet de culture générale, dans le style des quiz sur le site Kahoot.
Créez un quiz avec des questions à choix multiple sur un sujet de culture générale, dans le style des quiz sur le site Kahoot.
- Complétez pour avoir 4 questions
- Complétez pour avoir 4 questions
- Ajoutez le calcul du score
- Ajoutez le calcul du score
%% Cell type:code id: tags:
%% Cell type:code id: tags:
``` python
``` python
print('Quiz sur le thème : ....')
print('Quiz sur le thème : ....')
score = 0
score = 0
# Question 1
# Question 1
print()
print()
question = "Quel est le nom du cowboy dans Toy Story ?"
question = "Quel est le nom du cowboy dans Toy Story ?"
solution = 'Woody'
solution = 'Woody'
reponse = input(question)
reponse = input(question)
if reponse == solution:
if reponse == solution:
...
...
else:
else:
...
...
# Question 2
# Question 2
print()
print()
...
...
print('Votre score est', ...)
print('Votre score est', ...)
```
```
%% Cell type:markdown id: tags:
%% Cell type:markdown id: tags:
---
---
#### Remarque générale
#### Remarque générale
Ce document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)
Ce document est une adaptation d'un ressource pédagogique tiré du catalogue modulo https://modulo-info.ch/. Il est sous license Creative Commons [BY-NC-SA](https://creativecommons.org/licenses/?lang=fr)