2.1 Algorithmique et Flux de Décision

Traiter un inventaire demande une logique de contrôle fine. Explorons les outils avancés de décision en Python.

1. Décisions rapides : L'Opérateur Ternaire

Contrairement au PHP (? :), Python utilise une syntaxe plus proche du langage naturel.
Ce n'est pas si "naturel" que ça quand on est habitué au php

# Syntaxe : valeur_si_vrai if condition else valeur_si_faux
prenom = "Neo"
status = "Élu" if prenom == "Neo" else "Humain"
print(status)  # 'Élu'

prenom = "Smith"
status = "Élu" if prenom == "Neo" else "Humain"
print(status)  # 'Humain'
À vous :
score = 85
resultat = "Reçu" if score >= 60 else "Recalé"
print(resultat)

score = 42
resultat = "Reçu" if score >= 60 else "Recalé"
print(resultat)
print(resultat)  # 'Reçu'   — 85 >= 60
print(resultat)  # 'Recalé' — 42 < 60

2. Choix Multiples : Match / Case

Le switch de Python 3.10+ est bien plus puissant qu'un simple test d'égalité.

match commande:
    case "START": print("Lancement du scan...")
    case "STOP" | "ABORT": print("Arrêt immédiat.")
    case _: print("Commande inconnue.")

_: le choix par "default".

3. Boucles : Maîtriser l'Itération

agents = ["Smith", "Brown", "Jones"]

for i, agent in enumerate(agents, 1): # <= 1 est le point de départ de l'index
    if agent == "Neo":
        print(f"L'Élu trouvé à la position {i} !")
        break
else:
    print("Aucun Élu dans cette liste d'agents.")
# → 'Aucun Élu dans cette liste d'agents.'  (pas de break)
À vous — que s'affiche-t-il cette fois ?
agents = ["Smith", "Neo", "Jones"]

for i, agent in enumerate(agents, 1):
    if agent == "Neo":
        print(f"L'Élu trouvé à la position {i} !")
        break
else:
    print("Aucun Élu.")
# "L'Élu trouvé à la position 2 !"
# Le break s'exécute → le bloc else est ignoré.

4. La boucle while

La boucle for itère sur une collection connue. La boucle while tourne tant qu'une condition est vraie — utile quand on ne sait pas combien de tours seront nécessaires.

# Retry : on retente la lecture jusqu'à 3 fois
tentatives = 0
MAX = 3

while tentatives < MAX:
    contenu = load_scan_file("scanner.txt")
    if contenu:
        break              # Succès : on sort de la boucle
    tentatives += 1
else:
    # Le bloc else s'exécute si le while s'est terminé SANS break
    print("Échec après 3 tentatives.")
while True crée une boucle infinie — toujours interrompue par un break explicite. C'est l'équivalent Python du do...while absent du langage.
while True:
    commande = input("Commande (q=quitter) : ")
    if commande == "q":
        break
    print(f"Exécution de : {commande}")

5. Les mots-clés de flux

Chapitre précédent Chapitre suivant : Les Collections