IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Python, de zéro


précédentsommairesuivant

V. Les débuts de la programmation

Bien entendu, on peut utiliser Python pour des tâches plus compliquées que de remplir et d’afficher des variables. Il possède des instructions de contrôle de flux classiques que l’on trouve dans d’autres langages, mais toujours avec ses propres tournures.

V-1. L’instruction « if »

L’instruction if est sans doute la plus universelle de tous les langages. Elle permet d’effectuer une action (ou un ensemble d’actions) sur une condition vraie et offre la possibilité de rajouter une action (ou un ensemble d’actions) à effectuer dans le cas contraire.

Par exemple :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
>>> x=int(input("Entrez un nombre: "))
Entrez un nombre: 42
>>> if x < 0:
...    x=0
...    print("Negatif changé en 0")
... elif x == 0:
...    print("Zero")
... elif x == 1:
...    print("Single")
... else:
...    print("Autre nombre")
...
Autre nombre

Les parties elif, qui peuvent être multiples, et la partie else, qui, elle, doit être unique, sont facultatives. Le mot clef elif est un raccourci pour else if, mais permet de gagner un niveau d’indentation. Une séquence ifelifelifelse est par ailleurs équivalente aux instructions switch+case disponibles dans d’autres langages et qui n’existent pas en Python.

N’oubliez pas l’indentation pour que Python puisse associer les actions à exécuter à l'évaluation de la condition.

V-2. L’instruction « while »

L’instruction while est la seconde étape dans la programmation Python (ainsi que dans les autres langages structurés). Elle permet d’effectuer une action (ou un ensemble d’actions) répétée tant que la condition exprimée est vraie. Par exemple, ce calcul de la suite de Fibonacci :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
>>> (a, b)=(0, 1)
>>> while b < 1000:
...    print(b, end='')
...    (a, b)=(b, a+b)
...
1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987>>>

La boucle while s’exécute tant que la condition (ici b < 1000) reste vraie. La condition peut être n’importe quelle expression représentant un booléen.

Notez aussi l’utilisation de tuples pour regrouper des affectations sur plusieurs variables en une fois.

V-3. L’instruction « for »

L’instruction for que propose Python est un peu différente de celle que l’on peut trouver dans d'autres langages qui la possèdent. Au lieu de toujours itérer sur une suite arithmétique de nombres comme en Pascal ou de demander à spécifier un début, une condition de continuation et un incrément comme en C ; l’instruction for en Python itère sur les éléments d’une séquence (qui peut être une liste, une chaîne de caractères ou autre itérable…), dans l’ordre dans lequel ils apparaissent dans la séquence. Par exemple :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
>>> words=("chat", "fenetre", "maison")
>>> for w in words:
...    print(w, len(w))
...
chat 4
fenetre 7
maison 6

Alors ça peut paraître assez limitatif comme possibilité, mais comme nous le verrons par la suite, il existe dans Python une telle gamme d’outils et de technologies diverses qui permettent de générer facilement nombreuses séquences et autres itérables qu’en réalité la boucle for est l’une des plus utilisées par les programmeurs.

V-4. Les instructions « break » et « continue », et les clauses « else » au sein des boucles

Les instructions break et continue sont toujours associées aux boucles. La première interrompt la boucle avant sa fin naturelle tandis que la seconde repart sur l’itération suivante en négligeant toutes les instructions du corps de boucle placées après elle.

Les boucles peuvent également disposer d’une instruction else assez nouvelle par rapport aux autres langages. Celle-ci est exécutée uniquement lorsque la boucle se termine naturellement parce que la condition est devenue fausse (dans le cas d’un while) ou que tous ses éléments ont été traités (dans le cas d’un for) ; mais pas lorsque la boucle est interrompue avant sa fin naturelle par une instruction break.

L’exemple suivant, qui effectue une recherche de nombres premiers, en est une démonstration :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
>>> n=2
>>> while n < 10:
...    x=2
...    while x < n:
...        if (n%x) == 0:
...            print(n, 'égal à ', x, '*', n//x)
...            break
...        x+=1
...    else:
...        print(n, 'est un nombre premier')
...    n+=1
...
2 est un nombre premier
3 est un nombre premier
4 égal à 2 * 2
5 est un nombre premier
6 égal à 3 * 2
7 est un nombre premier
8 égal à 4 * 2
9 égal à 3 * 3

V-5. L’instruction « pass »

L’instruction pass ne fait rien. Son rôle est juste de fournir une instruction lorsque celle‑ci est nécessaire pour fournir une syntaxe correcte, mais qu’aucune action n’est utile. Par exemple :

 
Sélectionnez
1.
2.
while True:
    pass                                # Juste pour attendre le ctrl-c

Un autre cas d’utilisation du pass est de réserver un espace en phase de développement pour une fonction ou un traitement conditionnel, permettant ainsi au développeur de construire son code à un niveau plus abstrait. L’instruction pass est alors ignorée silencieusement :

 
Sélectionnez
1.
2.
3.
4.
if expression:
    pass                                # Sera implémenté plus tard
else:
    autre action

V-6. Les instructions « do…while » et « switch…case »

L’instruction do…while utilisée dans d'autres langages n'existe pas en Python, car sa syntaxe souple et ses outils intégrés permettent de programmer facilement son équivalent.

Équivalent d'un do…while (action et répéter tant que la condition est vraie)…

En C
Sélectionnez
1.
2.
3.
do {
    action();
} while (condition);
En Python
Sélectionnez
1.
2.
3.
while True:
    action()
    if not condition: break

L’instruction switchcase elle aussi très souvent utilisée dans d'autres langages n'existait pas jusqu’à Python version 3.10. Jusque là on pouvait programmer plus ou moins facilement son équivalent.

Équivalent d'un switchcase (différentes actions en fonction d'une valeur)…

En C
Sélectionnez
1.
2.
3.
4.
5.
6.
switch (valeur) {
    case 1: action1(); break;
    case 2: action2(); break;
    case 3: action3(); break;
    default: action_autre();
}
En Python
Sélectionnez
1.
2.
3.
4.
5.
{
    1: action1,
    2: action2,
    3: action3,
}.get(valeur, action_autre)()

Comme on va le voir, Python a un peu évolué à ce propos.

V-7. L’instruction « match »

L’instruction match, nouvellement arrivée dans Python version 3.10, a pour but de reprendre l’équivalent de l’instruction switchcase disponible dans beaucoup d’autres langages et qui manquait alors à beaucoup ayant des habitudes avec cette instruction.

Équivalent d'un switchcase sous Python version 3.10 (et supérieurs) …

En C
Sélectionnez
1.
2.
3.
4.
5.
6.
switch (valeur) {
    case 1: action1(); break;
    case 2: action2(); break;
    case 3: action3(); break;
    default: action_autre();
}
En Python
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
match valeur:
    case 1:
        action1()
    case 2:
        action2()
    case 3:
        action3()
    case _:
        action_autre()

V-8. La notion d’expression

Durant tout ce tutoriel a été évoquée à plusieurs reprises la notion d’expression. Il est temps de clarifier un peu ce point.

Une expression en Python est simplement une suite d’opérations représentant une valeur.

Si cette expression est tapée dans l’interpréteur Python sans être récupérée d’une façon ou d’une autre (une variable, une fonction) alors elle est réaffichée immédiatement sur la ligne suivante.

Si cette expression est dans un script là aussi sans être récupérée, alors elle est exécutée silencieusement et disparait.

Une expression peut prendre plusieurs formats :

  • la constante simple
 
Sélectionnez
1.
2.
3.
4.
>>> 123
123
>>> "Hello"
'Hello'
  • une opération faisant intervenir des constantes ou d’autres opérations
 
Sélectionnez
1.
2.
3.
4.
>>> 2*2
4
>>> "Hello" * 4
'HelloHelloHelloHello'
  • une évaluation faisant intervenir des constantes, des opérations ou d’autres évaluations
 
Sélectionnez
1.
2.
3.
>>> nbr=5
>>> nbr, "impair" if (nbr % 2) != 0 else "pair"
(5, 'impair')                # Hé oui, la virgule de la ligne précédente crée un tuple !!!

V-9. Quelques outils

Quelques outils natifs de Python permettant de générer et manipuler des constantes (ou variables ayant pour valeur ces constantes).

  • La fonction abs(x) renvoie la valeur absolue de x qui doit être un nombre entier ou à virgule flottante.

  • La fonction chr(x) renvoie le caractère correspondant à la valeur unicode (ou ASCII dans Python 2) x.

  • La fonction bin(x) renvoie la représentation binaire de l’entier x.

  • La fonction cmp(x, y) (Python 2 uniquement) compare les valeurs relatives de x et y et renvoie ‑1, 0 ou 1 selon que x est respectivement plus petit, égal ou plus grand que y.

  • La fonction divmod(x, y) renvoie un tuple contenant la division entière et le reste de x par y (concrètement x//y et x%y).

  • La fonction eval(s) analyse et évalue l’expression s puis l’exécute en tant qu’instruction Python.

  • La fonction exec(s) analyse et évalue l’expression s puis l’exécute en tant que programme Python.

  • La fonction hex(x) renvoie la représentation hexadécimale de l’entier x.

  • La fonction oct(x) renvoie la représentation octale de l’entier x.

  • La fonction ord(x) renvoie la valeur unicode (ou ASCII dans Python 2) du caractère x.

  • La fonction round(x, y) renvoie la valeur du flottant x arrondie à y décimales.


précédentsommairesuivant

Copyright © 2022 Svear (svear@free.fr) Permission est accordée de copier, distribuer ou modifier ce document selon les termes de la « Licence de Documentation Libre GNU » (GNU Free Documentation License), version 1.1 ou toute version ultérieure publiée par la Free Software Foundation.