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
- for...else : Le bloc
elses'exécute uniquement si la boucle se termine SANSbreak. Parfait pour les recherches ! - enumerate() : Pour obtenir l'index en même temps que la valeur.
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
break: Sort immédiatement de la boucle.continue: Saute à l'itération suivante.pass: Un "placeholder" qui ne fait rien (utile pour les signatures vides).