Chapitre 9 : Quelques notions de Python


 Mise en Projet 

Le but est de d'apprendre les premiers éléments de la syntaxe du langage Python de façon à pouvoir réaliser vos premiers programmes.

 Objectif 

À l'issue de ce chapitre, l'apprenant.e aura acquis les bases minimales de la syntaxe Python afin de réaliser ses premiers programmes.

 La syntaxe en Python 

La mise en page des programmes ou scripts Python demande une grande rigueur, un grand soin et un sens aigu de l'observation.

Les indentations (retrait du texte par rapport à la marge) observées dans les robots virtuels et le pseudo-code vont avoir une importance capitale dans le fonctionnement des programmes. Portez une grande attention à la mise en place de ces indentations au caractère près. En voici les raisons par rapport au pseudo-code.

Le Icône ALORS et le Icône FIN SI n'existent pas en Python

1 instruction_1
2 if verification :
3    instruction_2
4    instruction_3
5    instruction_4
6 end if
7 instruction_5

Le if (SI en français) de la ligne 2 suivi des : (qui remplacent le alors) va porter sur les instructions 2,3 et 4. Le end if de la ligne 6 n'existera pas. C'est le retour d'indentation (le retour à la marge) de la ligne 7 qui signifiera l'arrêt des instructions sur lesquelles porte le if. L'instruction_5 de la ligne 7 ne fait donc pas partie du if.

Le Icône Répète jusqu'à ce que n'existe pas en Python

C'est pour cette raison que le théorème de de Morgan est si important. Le cerveau humain a plus facilement l'habitude de penser "à l'endroit". La structure Répète est donc plus naturelle que le Tant que.

La bonne idée, pour se faciliter les choses, est de penser la boucle comme un Répète et de créer la condition d'arrêt du Jusqu'à ce que comme il faut. Il suffira alors d'utiliser le théorème de de Morgan pour inverser cette condition et la placer dans le Tant que.

Le Icône FAIS et le Icône FIN TANT QUE n'existent pas en Python

1 instruction_1
2 while verification :
3    instruction_2
4    instruction_3
5    instruction_4
6 end while
7 instruction_5

Le while (TANT QUE en français) de la ligne 2 suivi des : (qui remplacent le fais) va porter sur les instructions 2,3 et 4. Le end while de la ligne 6 n'existera pas. C'est le retour d'indentation (le retour à la marge) de la ligne 7 qui signifiera l'arrêt des instructions sur lesquelles porte le while. L'instruction_5 de la ligne 7 ne fait donc pas partie du while.

 Les types de données 

Différence entre un nombre et du texte : il est essentiel de pouvoir différencier les deux. 123 est un nombre, "123" ou '123' sont les suites des caractères un, deux et trois. Un nombre représente une valeur avec laquelle on pourra calculer. Il sera impossible de réaliser des calculs avec du texte. En revanche, avec du texte, on pourra isoler certaines parties d'une chaîne de caractères, ou un caractère particulier afin de l'analyser,... À chaque type (nombre ou caractères) seront associés des traitements spécifiques qui ne sont pas interchangeables.

Les nombres

La particularité des nombres est de commencer par un chiffre, un point (pour un nombre décimal) ou un tiret (pour un nombre négatif). Tout chiffre entouré de guillemets ou d'apostrophes est un caractère et non un nombre. C'est le point qui détermine la partie décimale (par exemple 123.45 ou .067). Aucune virgule ne peut figurer dans un nombre.

Il y a trois types de nombres : les entiers (integer), les décimaux (float) et les complexes (rarement utilisés).

Le texte

Guillemets ou apostrophes ? Un texte est entouré de guillemets ou d'apostrophes, mais que choisir? En français, l'utilisation d'apostrophes est fréquente. Par exemple : "Aujourd'hui, c'est lundi". Dans ce cas, l'utilisation de guillemets est la bienvenue. En revanche, dans la phrase : 'Le mot "parmi" ne prend pas de "s" à la fin.', les apostrophes sont nécessaires.

Qu'en est-il pour la phrase suivante mélangeant guillemets et apostrophes : Le mot "parmi" s'écrit sans "s" ? On peut utiliser les apostrophes à condition "d'échapper" l'apostrophe dans le texte, c'est-à-dire signaler à l'ordinateur que l'apostrophe rencontrée n'est pas la fin de la chaîne. On utilise pour cela la barre oblique inverse (antislash), qui se trouve en bas à gauche du clavier, en combinaison avec la touche "Alt Gr".

Nous pourrons donc avoir soit 'Le mot "parmi" s\'écrit sans "s" ', soit "Le mot \"parmi\" s'écrit sans \"s\"".

Les booléens

Nous savons déjà que les booléens sont au nombre de deux : Vrai et Faux. Leur écriture en Python sera : True et False avec majuscules et sans guillemets ni apostrophes.

 Les variables 

Syntaxe

En Python, vous pouvez créer vos propres noms de variables et vous avez intérêt à choisir des noms de variables "qui veulent dire quelque chose" et qui sont en rapport avec leurs contenus. Cela facilitera la lecture et la maintenance de vos programmes.

Toutefois, vous ne pouvez pas utiliser comme nom de variable un mot réservé tel que "while", "range",... qui font partie du langage. Ceci mis à part, tout est possible moyennant le respect des règles suivantes :

  1. Le nom d'une variable peut contenir des lettres, des chiffres et des barres de soulignement ( _ ) mais ne peut pas commencer par un chiffre;
  2. Les noms des variables sont sensibles à la casse, compteur est différent de Compteur;
  3. Évitez les caractères accentués et spéciaux (cédilles,...);
  4. Le nom d'une variable ne peut, naturellement, être encadré de guillemets ou d'apostrophes, sinon il devient une chaîne de caractère et perd son statut de variable;
  5. Idéalement, en Python, on n'utilisera que des lettres minuscules en séparant éventuellement les noms composés par un trait de soulignement. Par exemple mon_compteur.

Déclaration, création

Pour déclarer ou créer une variable, il suffit de l'affecter (la remplir) avec sa première valeur (l'initialiser). La première utilisation d'une variable peut se faire à n'importe quel endroit d'un programme sauf dans la condition d'une boucle while (tant que) puisque, à cet endroit, la variable est en lecture. La variable devra donc être affectée au moins une fois avant cette boucle.

Affectation

En pseudo-code, nous avons utilisé le sigle Sigle d'affectation en pseudo-code pour affecter (remplir) les variables. Bien entendu, ce sigle n'existe pas en Python. On utilisera le signe égal ( = ) pour réaliser cette affectation : le contenu à droite du = sera affecté à la variable dont le nom figure à gauche du signe =. Exemple : compteur = 0 affectera la variable compteur avec la valeur 0. En conséquence, l'opérateur pour vérifier l'égalité dans les tests sera == pour le distinguer de l'affectation.

Le type des variables

En Python, le typage des variables est dynamique. La variable prendra automatiquement le type de la valeur que vous lui affectez.

 Afficher à l'écran et lire au clavier 

print

"print" va permettre l'affichage de son contenu à l'écran. print ("Bonjour") affichera Bonjour à l'écran. Il est possible d'afficher différentes choses à la suite en les séparant par des virgules entre les parenthèses. Exemple : print ("Le mot", mot_lu, "était en position", compteur, "dans la liste."). Remarque : Python insérera un espace entre chaque élément affiché.

Il est possible d'introduire un saut de ligne (un passage à la ligne suivante à l'écran) dans un affichage grâce au code \n. Exemple : "Aujourd'hui,...\nDemain,...".

Deux "print" d'affilée introduiront entre eux un passage à la ligne à l'écran. Il est possible d'éviter cela en ajoutant à la fin du premier print end = " ". Par exemple : print ("Votre résultat est", end = " "). Le contenu du print suivant s'affichera sur la même ligne à la suite de l'affichage "Votre résultat est ".

input

"input" va permettre de lire une donnée au clavier. Par exemple : mot_lu = input ("Donne-moi un mot : "). L'ordinateur va afficher à l'écran "Donne-moi un mot : ". La donnée lue ensuite au clavier sera affectée à la variable mot_lu

Attention : toute lecture au clavier se fait spontanément sous forme de caractères. Si vous voulez lire une variable entière par exemple, vous devez ajouter la fonction int(...) qui va transformer instantanément la lecture en entier. Exemple : entier_lu = int (input ("Donne-moi un nombre entier : ")). N'oubliez pas les deux parenthèses de fermeture. Utilisez float pour convertir en nombre décimal.

 Les opérateurs en Python 

Il existe trois types d'opérateurs en Python :

Les opérateurs arithmétiques

+ (addition), - (soustraction), * (multiplication), / (division), ** (exposant), % (modulo, reste de la division entière) et // (division entière).

Les opérateurs de comparaison

== (égal à), != (différent de), (inférieur à), (supérieur à), ‹= (inférieur ou égal à) et ›= (supérieur ou égal à).

Les opérateurs booléens

or (ou), and (et) et not (pas).

 Les structures de contrôle en Python 

Il existe trois structures de contrôle essentielles en Python, la conditionnelle if-else (si-sinon), la boucle while (tant que) et la boucle for (pour).

La conditionnelle if-else (le else est facultatif)

(1) instruction indépendante
(2) if condition:
(3)     instruction du si
(4)     instruction du si
(5) else:
(6)     instruction du sinon
(7)     instruction du sinon
(8) instruction indépendante

Le ALORS et le FIN SI du pseudo-code n'existent pas en Python, tout est basé sur le mise en page grâce à l'indentation (le retrait des instructions par rapport à la marge).

Les ":" des lignes 2 et 5 introduisent les contenus du if et du else qui seront identifiés par leurs indentations. 3 et 4 seront exécutées si la condition est vraie, 6 et 7 seront exécutées dans le cas contraire. 1 et 8 seront exécutées dans tous les cas. Remarque : les numéros des lignes sont là pour aider à la compréhension, ils ne doivent pas être tapés avec votre programme.

Nous avons signalé que les cascades de SI étaient fréquentes et importantes à maîtriser. Voici comment elles se présentent en Python grâce au mot réservé elif, contraction des mots else-if :

instruction indépendante
if condition:
     instruction du si
elif condition:
     instruction du sinon-si
else:
     instruction du sinon-sinon
instruction indépendante

La boucle while

Cette boucle est semblable au TANT QUE du pseudo-code mais le FAIS et le FIN TANT QUE n'existeront pas. Tout comme dans le "if", ce sera la mise en page qui informera l'ordinateur des instructions comprises dans la boucle. La boucle while se présente de la façon suivante :

(1) instruction indépendante
(2) while condition:
(3)     instruction du tant que
(4)     instruction du tant que
(5) instruction indépendante

Les instructions 3 et 4 se répéteront tant que la condition sera vraie. Dès que la condition sera fausse, l'exécution passera à la ligne 5.

Tout comme la boucle suivante, la boucle while peut être arrêtée par une instruction break quand une condition est remplie.

La boucle for

La boucle for (pour) peut être considérée comme une boucle while avec compteur intégré. La boucle suivante va tourner 9 fois, affichant la valeur de i qui passera successivement de la valeur 0 à la valeur 8.

(1) instruction indépendante
(2) for i in range(9):
(3)     instruction du for
(4)     print(i)
(5) instruction indépendante

La valeur 9 de range pourrait être remplacée par le nom d'une variable entière. On peut aussi choisir les limites dans lesquelles le compteur va fonctionner, comme par exemple :

for j in range(5, 15):
     print(j)

La boucle va afficher la valeur 5 au premier tour pour s'arrêter avant le 15, la dernière valeur affichée sera donc 14. Il faut s'habituer à ce genre de choses.

On peut aussi demander de parcourir une chaîne de caractère avec l'instruction suivante :

for x in "journal":
     print(x)

Le programme va afficher en colonne toutes les lettres du mot "journal" car le "j" est en position 0, le "o" en position 1, etc. Ce principe de toujours commencer à 0 doit être bien intégré en codage.

 Un outil essentiel : les listes 

Une bonne maîtrise des listes va grandement faciliter le travail de codage en Python car c'est un outil exceptionnel assorti d'un grand nombre de fonctions de traitement.

Délaration, création

sans_rien = [ ] déclare la liste sans_rien vide, ne contenant aucun élément.

dizaines = [10, 20, 30, 40, 50, 60, 70, 80, 90] déclare la liste dizaines contenant les nombres entiers de 10 à 90.

copains = ["Louis", "John", "Salif"] déclare la liste copains contenant 3 prénoms.

Méthodes

Aux listes sont associées une série de méthodes permettant de réaliser des traitements très facilement. La syntaxe est nom_de_la_liste.méthode(...). Voici quelques méthodes et leur utilité :

  • - append(...) ajoute l'élément ... en fin de liste.
  • - clear( ) vide la liste de tout son contenu.
  • - copy() fait une copie de la liste.
  • - count(...) compte le nombre de fois où l'élément ... apparaît dans la liste.
  • - remove(...) supprime l'élément ... de la liste.
  • - reverse( ) inverse l'ordre des éléments de la liste.
  • - sort( ) trie la liste par ordre croissant.

D'autres méthodes existent et méritent d'être examinées.

 Les commentaires 

Les commentaires ne sont pas exécutés par l'ordinateur, il permettent juste d'indiquer certains éléments dans les textes de code. Il est essentiel de bien documenter ces programmes ou scripts afin de pouvoir les relire et comprendre comment ils fonctionnent. Voici deux exemples de commentaires :

  • - # Cette instruction... : le # permet d'introduire des commentaires "unilignes" dans les scripts;
  • - """ ou ''' (3 guillemets ou 3 apostrophes) permettent d'introduire des commentaires multilignes dans les scripts. Le commentaire devra se terminer par la même suite de caractères.
 Et plus si affinité... 

Si vous devenez accro à Python, il existe une foule de fonctions et de bibliothèques dans tous les domaines qui serait impossible de détailler ici sous peine d'en faire un site à part entière.

Quand vous serez autonome, usez abondamment de l'Internet ou des livres conseillés afin d'approfondir votre connaissance du langage et trouver des fonctions qui vous faciliteront la tâche.

Bonne exploration de Python, nous vous souhaitons de riches réalisations avec ce langage.

Bon courage et bonne réussite.

Retour