About

Swaroop C H is 27 years of age. He graduated in B.E. (Computer Science) from PESIT, Bangalore, India. He has previously worked at Yahoo! and Adobe.

More about

Page
Personal tools
COLLECTION
Collection

Python fr:Contrôle De Flux

From Notes

Jump to: navigation, search

Contents

[edit] Introduction

Dans les programmes vus jusqu'ici, il y a toujours eu une série d'instructions, Python les exécute dans l'ordre. Mais comment faire pour changer la manière dont le flux fonctionne ? Par exemple, vous voulez que le programme prenne des décisions et fasse différentes choses en fonction de différentes situations, comment afficher 'Good Morning' ou 'Good Evening' en fonction de l'heure de la journée ?

Comme vous l'avez deviné, cela est obenu en utilisant des instrucions de contrôle de flux. Il y a trois instructions de contrôle de flux dans Python if, for et while.

[edit] L'instruction if

L'instruction if est utilisée pour vérifier une condition et si (if) la condition est vraie, nous exécutons un block d'instructions (appelé le if-block), sinon (else) nous exécutons un autre block d'instructions (appelé le else-block). La clause else est optionnelle.

Exemple:

#!/usr/bin/python
# Nom de fichier : if.py
 
number = 23
guess = int(input('Entrez un nombre : '))
 
if guess == number:
    print('Félicitations, vous l\'avez deviné.') # Le nouveau block démarre ici
    print('(Mais vous ne gagnez pas de prix !)') # Le nouveau bloc se termine ici
 
elif guess < number:
    print('Non, c\'est plus grand que cela') # Un autre block
    # Vous faites ce que vous voulez dans un block ...
else:
    print('Non, c\'est plus petit que cela')
    # Vous avez deviné > le nombre à trouver ici
 
print ('Terminé')
# Cette dernière instruction est toujours exécutée, après l'exécution de l'instruction if

Sortie :

   $ python if.py
   Entrez un nombre : 50
   Non, c'est plus petit que cela
   Terminé
   
   $ python if.py
   Entrez un nombre : 22
   Non, c'est plus grand que cela
   Terminé
   
   $ python if.py
   Entrez un nombre  : 23
   Félicitations, vous l'avez deviné.
   (Mais vous ne gagnez pas de prix !)
   Terminé

Comment cela fonctionne:

Dans ce programme, nous regardons les essais de l'utilisateur et vérifions si c'est le nombre saisi. Nous donnons la valeur que nous voulons à la variable number par exemple 23. Puis nous saisissons la valeur entrée par l'utilisateur avec la fonction input(). Les fonctions sont juste des parties re-utilisables de programmes. Nous verrons cela plus en détail dans le chapitre suivant.

Nous fournissons une chaîne de caractères à la fonction intégrée input qui l'affiche à l'écran et attend une saisie de l'utilisateur. Après avoir saisi une valeur et tapé sur la touche enter, la fonction input() renvoie ce que nous avons entré, en tant que chaîne de caractères. Nous convertissons ensuite cette chaîne de caractères en un entier en utilisant int et nous le rangeons dans la variable guess. En fait, le int est une classe mais tout ce que vous devez savoir pour l'instant est que vous l'utilisez pour convertir une chaîne de caractères en un entier (en supposant que la chaîne de caractères contient un entier valide dans le texte).

Ensuite, nous comparons la valeur saisie par l'utilisateur avec le nombre que nous avons choisi. S'ils sont identiques, nous affichons un message de succès. Notez que nous utilisons les niveaux d'indentation pour indiquer à Python quelles instructions appartiennent à quel bloc. C'est pour cette raison que l'indentation est si importante dans Python. j'espère que vous suivez la règle "d'indentation constante". n'est-ce pas ?

Notez comme l'instruction if contient un caractère deux-points à la fin - nous indiquons à Python qu'un bloc d'instructions suit.

Ensuite, nous vérifions si la valeur saisie est inférieure au nombre voulu, et dans ce cas, nous indiquons à l'utilisateur d'essayer une valeur supérieure. Nous avons utilisé ici la clause elif qui combine deux instructions if else-if else reliées en une instruction combinée if-elif-else. Cela rend le programme plus simple et réduit les indentations nécessaires.

Les instructions elif et else doivent avoir un caractère deux-points à la fin de la ligne logique, suivi par leur block d'instructions correspondant (avec l'indentation adéquate, bien sûr)

Vous pouvez avoir une autre instruction if à l'intérieur du if-block d'une instruction if et ainsi de suite - cela est appelé une instruction if imbriquée.

Souvenez-vous que les parties elif et else sont optionnelles. Une instruction minimale if valide est :

if True:
    print('Yes, it is true')

Quand Python a fini d'exécuter toute l'instruction if avec les clauses associées elif et else, il passe à l'instruction suivante dans le bloc contenant l'instruction if. Dans ce cas, l'exécution du programme commence dans le bloc principal et l'instruction suivante est le print('Done') . Après cela, Python voit la fin du programme et se termine.

Bien que ce programme soit très simple, j'ai mis en évidence beaucoup de choses que vous devriez remarquer même dans un programme simple. Tout cela est vraiment simple, (et étonnamment simple pour les personnes venant de C/C++) et demande que vous en soyez conscients au début, mais ensuite, vous serez à l'aise avec et cela vous semblera 'naturel'.

Note pour les programmeurs C/C++
Il n'y a pas d'instruction switch en Python. Vous pouvez utiliser une instruction if..elif..else pour faire la même chose (et dans certains cas, utiliser un dictionnaire pour le faire rapidement)

[edit] L'instruction while

L'instruction while vous permet de continuer à exécuter un bloc d'instructions tant qu'une condition est vraie. Une instruction while est un exemple d'une instruction qui boucle . Une instruction while peut avoir une clause optionnelle else .

Exemple:

#!/usr/bin/python
# Nom de fichier : while.py
 
number = 23
running = True
 
while running:
    guess = int(input('Entrez un nombre : '))
 
    if guess == number:
        print('Félicitations, vous l\'avez deviné.')
        running = False # Cela arrête la boucle while
    elif guess < number:
        print('Non, c\'est un peu plus grand que cela.')
    else:
        print('Non, c\'est un peu plus petit que cela.')
else:
    print('La boucle while est terminée.')
    # Faites ici ce que vous voulez
 
print('Fini')

Résutat:

   $ python while.py
   Entrez un nombre : 50
   Non, c'est un peu plus petit que cela.
   Entrez un nombre : 22
   Non, c'est un peu plus grand que cela.
   Entrez un nombre : 23
   Félicitations, vous l'avez deviné.
   La boucle while est terminée.
   Fini

Comment cela fonctionne:

Dans ce programme, nous continuons à essayer de deviner une valeur, mais l'utilisateur peut essayer jusqu'à ce qu'il trouve - il n'y a pas besoin de relancer le programme à chaque essai, comme dans la section précédente. Cela met en évidence l'utilisation de l'instruction while.

Nous déplaçons les instructions input et if à l'intérieur de la boucle while et positionnons la variable running à True avant la boucle while. Ensuite, nous vérifions si la variable running vaut True et ensuite nous exécutons le while-block correspondant. Après l'exécution de ce block, la condition est à nouveau testée avec la variable running. Si la condition est vraie, nous exécutons à nouveau le while-block, ensuite nous continuons à exécuter le else-block optionnel et nous passons à l'instruction suivante.

Le bloc else est exécuté quand la condition de la boucle while devient False - cela peut même être le cas lors de la première fois où cette condition est testée. S'il existe une clause else dans une boucle while, elle est toujours exécutée à moins de sortir de la boucle avec une instruction break .

Les variables True et False sont de type booléen et vous pouvez les considérer comme équivalentes aux valeurs 1 et 0 respectivement.

Note pour les programmeurs C/C++
Souvenez-vous que vous pouvez avoir une clause else dans une boucle for while .

[edit] La boucle for

L'instruction for..in est une instruction de boucle qui itère sur une séquence d'objets en traitant chaque item de la séquence. Nous verrons plus de choses sur les séquences dans les chapitres suivants. Ce que vous devez savoir pour l'instant est qu'une séquence est juste une collection ordonnée d'items.

Exemple:

#!/usr/bin/python
# Nom de fichier : for.py
 
for i in range(1, 5):
    print(i)
else:
    print('La boucle for est terminée')

Résultat :

   $ python for.py
   1
   2
   3
   4
   La boucle for est terminée

Comment cela fonctionne :

Dans ce programme, nous affichons une séquence de nombres. Nous générons cette séquence de nombres en utilisant la fonction intégrée range .

Nous fournissons ici deux nombres et range renvoie une séquence de nombres en commençant par le premier nombre indiqué et jusqu'au deuxième nombre indiqué. Par exemple, range(1,5) donne la séquence [1, 2, 3, 4]. Par défaut, range prend un pas de 1. Si nous fournissons un troisème nombre à range, alors cela devient le compteur de pas. Par exemple, range(1,5,2) donnera [1,3]. Souvenez-vous que l'intervalle va jusqu'au second nombre, mais ne l'inclut pas .

Notez que range() génère une séquence de nombres, mais il va générer seulement un nombre à la fois, quand la boucle for demande l'item suivant. Si vous voulez voir la séquence complète des nombres immédiatement, utilisez list(range()). les listes sont expliquées dans le Chapitre des structures de données.

La boucle for itère dans cet intervalle - for i in range(1,5) est équivalent à for i in [1, 2, 3, 4] ce qui est comme assigner chaque nombre (ou objet) dans la séquence à i, un à la fois, et ensuite exécuter le bloc d'instructions pour chaque valeur de i. Dans ce cas, nous affichons juste la valeur dans le bloc d'instructions.

Souvenez-vous que la partie else est optionnelle. Quand elle existe, elle est toujours exécutée une fois après la fin de la boucle for à moins qu'une instruction break ne soit présente.

Souvenez-vous que la boucle for..in fonctionne avec n'importe quelle séquence. Ici, nous avons une liste de nombres générée par la fonction intégrée range , mais en général nous pouvons utiliser n'importe quel type de séquence sur n'importe quel type d'objet ! Nous explorerons cette idée en détail dans les prochains chapitres.

Note pour les programmeurs C/C++/Java/C#
La boucle for en Python est complètement différente de la boucle for en C/C++ . les programmeurs C# noteront que la boucle for en Python est similaire à la boucle foreach en C#. Les programmeurs Java noteront que cela est similaire à for (int i : IntArray) en Java 1.5 .
En C/C++, quand vous écrivez for (int i = 0; i < 5; i++), alors en Python vous écrivez juste for i in range(0,5). Comme vous le voyez, la boucle for est plus simple, plus expressive et moins sujette à l'erreur en Python.

[edit] L'instruction break

L'instruction break est utilisée pour break d'une instruction de boucle, par exemple arrêter l'exécution d'une instruction qui boucle, même si la condition de la boucle n'est pas devenue False ou si la séquence d'items n'est pas complètement itérée. Une chose importante à noter : dans le cas d'un break en dehors d'une boucle for ou while, n'importe quel bloc else associé n'est pas exécuté.

Exemple:

#!/usr/bin/python
# Nom de fichier : break.py
while True:
    s = input('Entrez quelque chose :')
    if s == 'quit':
        break
    print ('La longueur de la chaîne est',len(s))
print('Terminé')

Résultat:

   $ python break.py
   Entrez quelque chose : Programming is fun
   La longueur de la chaîne est 18
   Entrez quelque chose : When the work is done
   La longueur de la chaîne est 21
   Entrez quelque chose : if you wanna make your work also fun:
   La longueur de la chaîne est 37
   Entrez quelque chose :  use Python!
   La longueur de la chaîne est 12
   Entrez quelque chose : quit
   Terminé

Comment cela fonctionne :

Dans ce programme, nous récupérons la saisie de l'utilisateur de manière répétitive et affichons la longueur saisie à chaque fois. Nous fournissons une condition spéciale pour arrêter le programme en testant si l'utilisateur a saisi quit. Nous arrêtons le programme en breaking en dehors de la boucle et en atteignant la fin du programme.

La longueur de la chaîne de caractères saisie peut être trouvée en utilisant la fonction intégrée len.

Souvenez-vous que l'instruction break peut également être utilisée avec une boucle for .

[edit] Le Python Poétique de Swaroop

J'ai écrit un petit poème que j'ai appelé Swaroop's Poetic Python:

   Programming is fun
   When the work is done
   if you wanna make your work also fun:
       use Python!

[edit] L'instruction continue

L'instruction continue est utilisée pour indiquer à Python de sauter le reste des instructions dans la boucle courante du bloc et de continuer jusqu'à la prochaine itération de la boucle.

Exemple:

#!/usr/bin/python
# Nom de fichier : continue.py
 
while True:
    s = input('Entrez quelque chose : ')
    if s == 'quit':
        break
    if len(s) < 3:
        print('Trop petit ')
        continue
    print('Longueur suffisante ')
    # Faites d'autres choses ici...

Résultat :

   $ python test.py
   Entrez quelque chose : a
   Trop petit 
   Entrez quelque chose : 12
   Trop petit 
   Entrez quelque chose : abc
   Longueur suffisante 
   Entrez quelque chose : quit

Comment cela fonctionne :

Dans ce programme, l'utilisateur saisit une valeur, mais nous l'acceptons seulement si sa longueur est au moins de 3 caractères. Donc, nous utilisons la fonction intégrée len pour récupérer la longueur et si elle est inférieure à 3, nous sautons le reste des instructions du bloc en utilisant l'instruction continue. Sinon, le reste des instructions de la boucle est exécuté et nous pouvons faire tous les traitements que nous voulons ici.

Notez que l'instruction continue fonctionne aussi avec for .

[edit] Récapitulatif

Nous avons vu comment utiliser les trois instructions de contôle de flux - if, while et for avec les instructions associées break et continue. Ces instructions sont parmi les plus utilisées dans Python et donc, être à l'aise avec ces instructions est fondamental.

Ensuite, nous verrons comment créer et utiliser des fonctions.



Please add your comments by clicking on the 'Discussion' link in the left sidebar.