Intro Python Groupe B
Thème du site
Thème du code
Avancement

Chapitre 2 - Conditions et boucles

🎯 Objectifs du Chapitre

  • Apprendre à écrire des programmes dynamiques en utilisant des conditions (if, else) et des boucles (for, while).
  • Comprendre l’importance des structures de contrôle pour gérer le flux d'exécution d'un programme.

📖 1. Les conditions (Structures de décision)

1.1 Principe des conditions

Les structures conditionnelles permettent de prendre des décisions dans un programme. En fonction de certaines conditions, différentes parties du code peuvent être exécutées.

  • if : vérifie une condition et exécute le bloc de code associé si elle est vraie.
  • elif : vérifie une autre condition lorsque la première est fausse et exécute le bloc de code associé si cette nouvelle condition est vraie.
  • else : exécute un bloc de code si toutes les conditions précédentes sont fausses

Exemple :

if condition:
    # Bloc de code exécuté si la condition est vraie
elif autre_condition:
    # Bloc exécuté si la première condition est fausse et l’autre condition est vraie
else:
    # Bloc exécuté si toutes les conditions précédentes sont fausses

Contrairement à d'autres langages tels que C/C++ ou même Java, Python utilise l’indentation (l'espace en début de ligne) pour délimiter les blocs de code. Cette indentation est réalisée avec la touche Tab du clavier. Le raccourci Shift + Tab permet de retirer une indentation.

1.2 Opérateurs de comparaison

Les opérateurs de comparaison permettent de comparer deux valeurs. Ils sont utilisés dans les conditions pour vérifier si une condition est vraie ou fausse :

  • == : égal à
  • != : différent de
  • < : inférieur à
  • > : supérieur à
  • <= : inférieur ou égal à
  • >= : supérieur ou égal à

Exemple :

age = 18

if age >= 18:
    print("Vous êtes majeur.")
else:
    print("Vous êtes mineur.")
>> Vous êtes majeur.

1.3 Opérateurs logiques

On peut combiner plusieurs conditions grâce aux opérateurs logiques :

  • and : toutes les conditions doivent être vraies.
  • or : au moins une des conditions doit être vraie.
  • not : inverse la condition.

Exemple :

x = 12
y = 3

if x > 5 and y < 10:
    print("Les deux conditions sont vraies.")

>> Les deux conditions sont vraies.

✏️ Exercice 3 : Un dressing intelligent

Un exemple d'organisation de vos dossiers/fichiers vous a été donné dans le chapitre précédent, vous pouvez vous en inspirer pour continuer à travailler de manière organisée tout au long de ce cours.

Rappel : Toujours ouvrir un dossier à l'ouverture de VSCode pour travailler à l'intérieur de celui-ci.

Objectif : Écrire un programme qui aide l’utilisateur à choisir une tenue en fonction de la température qu'il donne.

Consigne : Le programme demande à l’utilisateur la température extérieure et affiche une tenue de votre choix adaptée à la température en fonction des 4 cas suivants :

  • Si la température est inférieure à 0°C
  • Si la température est entre 0°C et 10°C
  • Si la température est entre 10°C et 20°C
  • Si la température est supérieure à 20°C

Vous savez maintenant écrire des conditions simples.

✏️ Exercice 4 : Les tables de vérité

Voici un tableau représentant les résultats des opérations logiques and et or :

ABA and BA or B
FalseFalseFalseFalse
FalseTrue??
TrueTrue??
TrueFalse??

Ce tableau s'appelle une table de vérité. Elle permet de déterminer le résultat d'une opération logique en fonction des valeurs de vérité des variables A et B.

Écrire un programme qui demande à l'utilisateur les valeurs de vérité de A et B et affiche les résultats des opérations logiques and et or afin de compléter les tableaux ci-dessus.

La fonction bool() ne permet pas de convertir les chaînes de caractères "True" ou "False" en booléens. Pour cela, on utilise la fonction eval().

Quelle est la différence entre le fonctionnement de la fonction bool() et de la fonction eval() ?

Faire de même pour la table de vérité de l'opération not(A and B) :

ABnot(A and B)
FalseFalse?
FalseTrue?
TrueTrue?
TrueFalse?

Sans utiliser l'ordinateur, remplissez à la main la table de vérité de l'opération not A or not B suivante :

ABnot Anot Bnot A or not B
FalseFalse???
FalseTrue???
TrueTrue???
TrueFalse???

Vous savez maintenant manipuler les opérateurs logiques et avez découvert les tables de vérité.

✏️ Exercice 5 : Un dressing encore plus intelligent

Objectif : Améliorer le programme de l'exercice 3 en ajoutant à la température une condition sur le temps (pluie, soleil, nuageux).

Consigne : Reprenez le code de l'exercice 3. En plus de la température, vous devez offrir un choix de temps à l'utilisateur. Votre programme doit donc fonctionner de la manière suivante :

  1. Demander la température extérieure.
  2. Demander le temps qu'il fait.
  3. Afficher une tenue adaptée à la température et au temps.

Exemple :

>> Quelle est la température extérieure (en °C) ? 
25
>> Quel temps fait-il ? (choisissez une réponse en tapant le numéro correspondant)
>> 1. Pluie
>> 2. Soleil
>> 3. Nuageux
2
>> Vous devriez porter un t-shirt et un short.

📖 2. Les boucles (Structures itératives)

2.1 La boucle for

La boucle for permet de répéter un bloc de code un nombre déterminé de fois. Elle est souvent utilisée pour parcourir des séquences (listes, chaînes de caractères, etc.)

Exemple :

for variable in séquence:
    # Bloc de code exécuté pour chaque élément de la séquence
for i in range(3):
    print(i)
>> 0
>> 1
>> 2

2.2 La boucle while

La boucle while exécute un bloc de code tant qu’une condition est vraie.

Exemple :

while condition:
    # Bloc de code exécuté tant que la condition est vraie
compteur = 0
while compteur < 4:
    print(compteur)
    compteur += 1
>> 0
>> 1
>> 2
>> 3

2.3 Boucle infinie et sortie de boucle

Une boucle infinie se produit quand la condition de sortie n’est jamais atteinte. Cela peut bloquer l’exécution du programme. On peut interrompre une boucle avec l’instruction break.

Exemple :

compteur = 0
while True:
    print(compteur)
    compteur += 1
    if compteur == 4:
        break
>> 0
>> 1
>> 2
>> 3

✏️ Exercice 6 : Le juste prix

Écrire un programme qui tire au sort un nombre entier entre 1 et 20 avec le module random, puis demande à l’utilisateur de le deviner. En fonction de sa réponse, le programme affiche :

  • Si le nombre est trop petit, "Trop petit ! Essayez encore."
  • Si le nombre est trop grand, "Trop grand ! Essayez encore."
  • Si c’est correct, "Bravo, vous avez trouvé !"

Cherchez sur internet et expliquez ce qu'est un module en Python et comment l'utiliser.

Vous savez maintenant importer et utiliser un module simple (random) ainsi que vous servir d'une boucle while.

✅ Récapitulatif de Chapitre

Opérateurs de comparaison

  • == Égal à
  • != Différent de
  • < Inférieur à
  • > Supérieur à
  • <= Inférieur ou égal à
  • >= Supérieur ou égal à

Opérateurs logiques

  • and Vrai si les deux conditions sont vraies
  • or Vrai si au moins une des conditions est vraie
  • not Inverse la condition

Conditions

if age < 18:
    print("mineur")
elif age < 65:
    print("majeur")
else:
    print("senior")

Les deux-points ouvrent le bloc, l'indentation le délimite. elif et else sont facultatifs, et elif peut se répéter.

Boucle while

n = 0
while n < 3:
    n = n + 1

Répétée tant que la condition est vraie.

  • break Sort immédiatement de la boucle
  • continue Passe à l'itération suivante

Boucle for

for i in range(3):
    print(i)

Répétée pour chaque élément. range(3) donne 0, 1 et 2 : la borne de fin est exclue. On peut aussi préciser le début et le pas.

break et continue s'utilisent aussi ici.

Pièges à éviter

  • = affecte une valeur, == compare deux valeurs.
  • Les deux-points et l'indentation délimitent le bloc : les oublier change le sens du programme.
  • input() renvoie une chaîne. Sans conversion, "10" < "9" est vrai : ce sont des textes qui sont comparés, pas des nombres.
  • Une boucle while dont la condition ne change jamais ne s'arrête pas.

Tables de vérité

ABnot Anot BA and BA or Bnot(A and B)not A or not B
FalseFalseTrueTrueFalseFalseTrueTrue
FalseTrueTrueFalseFalseTrueTrueTrue
TrueTrueFalseFalseTrueTrueFalseFalse
TrueFalseFalseTrueFalseTrueTrueTrue