Courscours et tutoriel pythonInformatique

cours python INSTRUCTIONS CONDITIONNELLES : si, sinon, elif

C’est le cours python numéro 7 de la série des cours d’initiation à python.

LE CONTRÔLE DE FLUX


Dans les leçons précédentes, nous avons dit qu’un programme est une série de lignes de code exécutées les unes après les autres. De nombreuses actions de notre quotidien (et de nombreux problèmes que nous confions à l’ordinateur) nécessitent cependant de prendre des décisions entre plusieurs alternatives. Pensons par exemple à un jeu vidéo qui simule un combat : l’intelligence artificielle qui pilote l’ordinateur peut décider d’attaquer (si elle pense pouvoir nous battre) ou de battre en retraite (si elle pense que nous sommes supérieurs). En cas d’attaque, il devra décider quel type d’armes utiliser, etc.

Du point de vue du programmeur, cela signifie que vous devez écrire du code pour toutes les alternatives possibles (à la fois pour l’attaque et la retraite), mais ensuite que le programme n’exécute que les “bonnes” lignes, ce qui n’est pas possible avec une exécution purement séquentielle ( comme nous l’avons fait jusqu’à présent).

Les premiers langages de programmation permettaient de sauter librement, sous certaines conditions, d’une ligne du programme à une autre, mais cela générait des programmes chaotiques et difficiles à lire. Des langages plus modernes (comme Python) adoptent la programmation structurée : un programme est divisé en blocs de code qui peuvent être exécutés, ignorés ou répétés plusieurs fois. L’exécution des blocs est contrôlée par des instructions spéciales du langage, qui sont appelées instructions de contrôle de flux (en anglais : flow control).

L’instruction SI

NOUVEAU PROGRAMME : prova_if.py

Ouvrons l’éditeur et écrivons ces lignes de code. On remarque que la ligne 3 commence 4 espaces à droite des autres : cette disposition s’appelle l’indentation et est très utilisée dans tous les langages de programmation : l’éditeur est déjà paramétré et pour l’obtenir il suffit d’appuyer sur la touche Tab avant d’écrire la ligne correspondante . Attention également à ne pas oublier les deux-points à la fin de la ligne 2.

a = int(input("Ecrire un nombre> 10 "))
if a > 10:
    print("Bravo!")
print("Ciao")

Essayons de lancer le programme : la première ligne de code nous demande d’insérer un nombre supérieur à 10. Si nous insérons par exemple 12 le programme répondra par “Bravo !” puis avec “Bonjour”. Essayons maintenant de l’exécuter à nouveau, mais cette fois nous écrivons 8 : le programme n’écrira que “Hello”.

L’instruction if permet d’exécuter ou non un bloc de lignes en fonction du résultat d’une expression booléenne : si c’est vrai, les lignes sont exécutées, sinon elles sont sautées.

Python reconnaît le bloc d’instructions à exécuter ou à ignorer grâce à l’indentation : l’instruction si a > 10 : a donc la signification suivante : Python évalue l’expression booléenne à > 10 ; si c’est vrai, il continue à exécuter la ligne suivante, sinon il saute toutes les lignes indentées jusqu’à ce qu’il trouve une ligne au même niveau d’indentation que le if, et continue à partir de celle-ci (dans notre exemple, la ligne print (“Hello”)) .

Quelques précisions sur l’indentation :

En réalité, Python n’exige pas que l’indentation soit exactement de 4 espaces, cependant cette valeur est maintenant pratiquement adoptée par tout le monde et devrait être suivie
C’est précisément pour cette raison qu’il n’est pas conseillé d’écrire les espaces un par un, mais d’utiliser la touche Tab qui est déjà préparée. De plus, l’éditeur dispose de deux éléments de menu Format-> Indent Region et Format-> Dedent Region qui nous permettent d’indenter / désindenter plusieurs lignes à la fois : il suffit de sélectionner un bloc de lignes avec la souris et de cliquer sur le menu
Toutes les lignes appartenant au même bloc doivent avoir le même niveau d’indentation, donc aucun espace n’est autorisé à gauche des lignes sauf lorsqu’elles sont nécessaires pour l’indentation (Python le remarque et nous donne une erreur)
Cependant, il est possible d’avoir plusieurs niveaux d’indentations imbriquées (c’est à dire les unes dans les autres) : dans ce cas elles seront de 4, 8, 12… espaces (nous verrons leur utilisation plus tard)
Voyons quelques exemples :

L’instruction else

Revenons à notre programme test_if et modifions-le comme ceci :

a = int(input("Ecrire un nombre> 10 "))
if a > 10:
    print("Bravo!")
else:
    print("Tu avais tord!")
print("Bonjour; salut")

Essayons de l’exécuter à nouveau et voyons ce qui se passe : cette fois, le programme répond même si nous écrivons un nombre inférieur à 10.

L’instruction if … else permet d’exécuter alternativement deux blocs de code, en fonction du résultat d’une expression booléenne : le bloc if est exécuté si l’expression est vraie, le else si elle est fausse.

correspondant if et else doivent être au même niveau d’indentation.

L’instruction elif

Enfin, nous avons l’instruction elif (abréviation de else if) qui vous permet de choisir entre plus de deux alternatives. Ajoutez ces lignes de code au programme :

a = int(input("Ecrire un nombre > 10 "))
if a > 10:
    print("Bravo!")
else:
    print("Vous vous êtes trompé")

b = int(input("Maintenant, écris un autre numéro "))
if b > 0:
    print("Le nombre est positif")
elif b == 0:
    print("Vous avez écrit zéro")
else:
    print("Le nombre est négatif")
print("Bonjour; salut")

Lorsque nous devons choisir entre plusieurs alternatives, nous devons commencer par un si (plus une expression booléenne). Si l’expression est vraie, Python exécutera le bloc de lignes relatif, sinon il sautera au prochain elif avec une autre expression : si c’est vrai, il exécutera le bloc elif, sinon il sautera au prochain elif, et ainsi de suite.

Il est important de comprendre que de l’ensemble du bloc if … elif … elif … une seule alternative est effectuée ; la dernière instruction peut être un elif ou un else : dans ce dernier cas il fonctionnera comme un “collector” qui inclut tout ce qui n’est pas inclus dans les cas précédents.

NOUVEAU PROGRAMME VOTES_PY

average = float (input ("Quelle est la moyenne de vos notes ?"))
si moyenne <5 :
     imprimer ("AhiAhiAhi!")
elif moyen <6 :
     print ("Vous allez vous endetter !")
elif moyen <7 :
     print ("Vous êtes sauvé !")
elif moyen <8 :
     impression ("Tu es fort!")
autre:
     imprimer ("Tu es un DIEU !")

SI imbriqué


Les if peuvent être imbriqués (l’un dans l’autre) : dans ce cas il faut indenter deux fois. Voici un exemple:

NOUVEAU PROGRAMME if_annidati.py

num = int (input ("Ecrire un nombre entre 0 et 20"))
si nombre <10 :
     if num% 2 == 0: # le nombre donne le reste 0 si divisé par 2, donc c'est pair
         print ("Vous avez écrit un nombre pair inférieur à 10")
sinon : # le nombre est impair
print ("Vous avez écrit un nombre impair inférieur à 10")
autre:
     si num% 2 == 0 :
         print ("Vous avez écrit un nombre pair supérieur à 10")
autre:
print ("Vous avez écrit un nombre impair supérieur à 10")

Notez qu’il existe plusieurs paires de if … else “l’un dans l’autre” (les paires correspondantes sont reconnues car elles ont le même niveau d’indentation); une telle chose peut dérouter un débutant : essayons donc de reconstituer le déroulement du programme.

Supposons qu’à l’entrée de la ligne 1 l’utilisateur écrive 9 : le programme continue avec le si de la ligne 2 qui est vrai. Il entrera alors dans le bloc indenté (ligne 3) où il rencontrera un second si : cette fois il est faux, puis il sautera le premier bloc et exécutera le bloc else correspondant à la ligne 6. À ce stade, il sautera tous les suivants lignes (la ligne else 7 correspond au if de 2) et se terminera. Essayez de reconstituer le déroulement du programme dans les trois autres cas possibles (nombre pair <10, nombre pair ≥ 10, nombre impair ≥ 10), puis essayez l’exercice suivant.

NOUVEAU PROGRAMME equazioni_2g.py

À ce stade, nous sommes prêts pour quelque chose d’un peu plus difficile : un programme qui résout les équations du second degré (si vous ne vous souvenez plus comment le faire, regardez ici). Premièrement, le programme doit demander à l’utilisateur les trois coefficients a, b et c de l’équation ; on serait alors tenté d’utiliser la formule solution bien connue, mais on se heurte à une difficulté : la formule contient la racine carrée du discriminant. S’il s’agit d’un nombre négatif et que nous essayons de calculer sa racine, Python nous donnerait une erreur et le programme planterait. Après avoir calculé le discriminant on a alors les trois alternatives couramment étudiées à l’école : discriminant supérieur à, inférieur ou égal à zéro.

Au début du programme, nous devons insérer cette instruction que nous étudierons plus tard :

from math import *

il est utilisé pour utiliser la racine carrée qui s’écrit sqrt (a) (de l’anglais racine carrée).

Autres articles

Guide : Implémenter get_iemedans des fichiers avec...
La fonction get_iemepermet de récupérer le i-ème élément d'un fichier...
Read more
Guide : Implémenter un Fichier en Tableau...
Les fichiers en tableaux circulaires (ou files d'attente circulaires )...
Read more
Guide : Fichiers en Tableaux Circulaires en...
Les tableaux circulaires (ou buffers circulaires) sont des structures de...
Read more

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *