Structures conditionnelles

Structures conditionnelles - if

Au cours de son déroulement, un programme a besoin de prendre des décisions en fonction des données qu’il rencontre.

Comment cela se traduit ?

  • La condition est très souvent une opération de comparaison.
  • Attention au : qui est primordial.
  • C’est l’indentation (le décalage par rapport à la marge gauche) qui délimite le bloc d’instructions.
  • La partie else est facultative.

Exemple simple

Prenons l’exemple de cet ordinogramme :

# Nous demandons à l'utilisateur de saisir un âge
age = int(input("Saisir votre âge :"))

# Nous testons l'âge à partir de la valeur saisie par l'utilisateur
# Nous pouvons noter dans cet exemple la "condition" qui permet de définir, grâce à l'âge, si la personne est majeure ou mineure.
if age >= 18:
    print("Vous êtes majeur(e).")
else:
    print("Vous êtes mineur(e).")
Attention

L’indentation est fondamentale dans la syntaxe Python. Elle indique quels blocs de code appartiennent à quelles conditions.

Une mauvaise indentation dans le meilleur des cas génère une erreur et stop l’exécution, dans le pire des cas, le code s’exécute au complet, mais le résultat fourni n’est pas celui attendu.

Voici un exemple montrant une erreur logique découlant d’une mauvaise indentation:

nombre = 5
if nombre == 5:
	print("Le test est vrai")
	print("car la variable nombre vaut", nombre)
Le test est vrai
car la variable nombre vaut 5
nombre = 6
if nombre == 5:
    print("Le test est vrai")
print("car la variable nombre vaut", nombre)
car la variable nombre vaut 6

Structures conditionnelles - Succession de if avec elif

Prenons l’exemple de cet ordinogramme :

Il est naturel de se retrouver à devoir prendre un décision en fonction de multiples choix. Comment cela fonctionne avec Python ?

# Cet algorithme a pour but de permettre à un utilisateur de choisir son sport préféré
print("1. basket")
print("2. football")
print("3. hockey")
print("4. danse")
print("5. baseball")

# L'utilisateur saisir un code en fonction du sport choisi
sport = int(input("Saisir un nombre entre 1 et 5 pour choisir votre sport préféré : "))

# Le code saisi dans la variable position est testé pour afficher la position du joueur
if sport == 1:
    print("Votre sport préféré est le basket.")
elif sport == 2:
    print("Votre sport préféré est le football.")
elif sport == 3:
    print("Votre sport préféré est le hockey.")
elif sport == 4:
    print("Votre sport préféré est la danse.")
else:
    print("Votre sport préféré est le baseball.")
  • elif n’est déclenché que si la (les) condition(s) précédente(s) a (ont) échoué.
  • ce qui fait qu’il est préférable d’enchaîner les if dans le cas où plusieurs conditions peuvent être remplies.
  • elif est situé au même niveau que if et else.
  • La quantité de elif peut-être infinie.

Imbrication des conditions

Après un if, on peut écrire toute sorte d’instructions, y compris d’autres conditions. Voici par exemple une implémentation partielle d’un algorithme qui vérifie si une personne peut voter :

# Exemple : vérifier l'âge et la citoyenneté pour voter

age = int(input("Entrez votre âge : "))
citoyennete = str(input("Êtes-vous citoyen(ne) ? (oui/non) : "))

# Si la personne a plus de 18 ans alors elle est en âge de voter
if age >= 18:
    # Si la personne est citoyenne, elle peut définitivement voter
    if citoyennete == "oui":
        print("Vous êtes éligible pour voter.")
    # Sinon ce n'est pas possible
    else:
        print("Vous devez être citoyen(ne) pour voter.")
# Ce "else" fait parti du premier if qui vérifie l'âge de la personne
else:
    print("Vous devez avoir au moins 18 ans pour voter.")

Remarquez l’imbrication des if et des else.

Evaluation des conditions

La condition évaluée est toujours un booléen. On génère un booléen avec des opérations de compraison et on peut les combiner avec les opérations logiques.

Les opérateurs de comparaison

Les opérateurs de comparaison permettent de comparer des valeurs et de déterminer si une condition est vraie ou fausse.

Soient a = 10 et b = 3

Opération (opérateur) Exemple
Égalité (==) a == b donne faux (False)
Inégalité (!=) a != b donne vrai (True)
Supérieur â (>) a > b donne vrai (True)
Inférieur à (<) a < b donne faux (False)
Supérieur ou égal â (>=) a >= b donne vrai (True)
Inférieur ou égal à (<=) a <= b donne faux (False)

Les opérateurs logique

Les opérateurs logiques permettent de combiner des expressions booléennes.

Soient a = True et b = False

Opération (opérateur) Explication Exemple
Et (and) Renvoie True si les deux expressions sont vraies. a and b donne False
Ou (or) Renvoie True si au moins l’une des expressions est vraie. a or b donne True
Non (not) Inverse la valeur d’une expression (si c’était True, devient False, et vice versa). not a donne False

Il est possible de mettre plusieurs conditions dans un if. Exemple:

# Nous demandons à l'utilisateur de saisir un âge
age = int(input("Saisir votre âge :"))

# Ici nous ajoutons un contrôle de saisie pour que l'utilisateur ne mette pas un âge inférieur à 0 et supérieur à 130
if age < 0 or age >= 130:
    print("Vous devez saisir un âge compris entre 1 et 129 ans")
else:
    if age >= 18:
        print("Vous êtes majeur(e).")
    else:
        print("Vous êtes mineur(e).")

Comparer les nombres flottant

La comparaison de nombre flottant est un peu plus subtile que la comparaison de valeur entière ou de chaînes de caratères. Plus de détails sont donné ici : Tester les nombres flottant

1er Atelier

Créer un Notebook Jupyter vide, suivre la procédure à partir du 6. Cliquez ici

Prise en main des structures conditionnelles

2ème Atelier

Conditions imbriquées

3ème Atelier

Mise en situation sur les structures conditionnelles