Infoforall

Python 01 : AFFICHER SUR LA CONSOLE

1 - Les logiciels de base

Inutile de télécharger et d'installer les logiciels si vous êtes en salle informatique. Tout est déjà installé.

Pour programmer en Python, il vous faut télécharger et installer la dernière version : Lien vers Python

Notepad++ va également être très utile, mais pas indispensable.

Si vous n'avez pas encore vu le tutoriel Installation et le tutoriel Utilisation, c'est le moment.

2 - La console

Nous commencerons par savoir gérer les affichages vers la console. C’est basique en terme d’affichage mais cela ne nécessite aucune gestion des fenêtres. Pour débuter, c’est donc pratique. Et ça permet au passage de savoir que la console existe.

01° Ouvrir une console en utilisant les indications ci-dessous :

Sous Windows 10, ça reste compliqué d’y accéder :

Sous Windows 7 ou moins, c’était simple :

L’intérêt de la console vient de ses choix limités d’interaction qui ne nécessitent donc aucune déclaration et aucun réglage préalable : pas de choix de couleur, pas de gestion de souris, pas de taille d’affichage … On lit les informations claviers et on affiche le texte brut. Linux l’utilise beaucoup plus que Windows qui tente de cacher tout l’aspect technique de l’informatique puisqu’il est destiné au grand public.

3 - Premier contact avec Python : Calcul de base

L’utilisation de Python s’effectue à travers une sorte de console qu’on ouvre en activant le logiciel.

02° Ouvrir la console Python (pas la console "normale") et taper le code suivant :

>>> 9*9+2

>>> 12-2*0.8888

Bref, on remarquera qu’on lance des calculs en temps réel. Puisqu’on l’utilise notamment pour faire des calculs, on dispose de nombreuses fonctions :

03° Taper les codes suivants qui illustrent trois fonctions différentes :

>>> 14/3

donne 4.666666667.

Approximatif mais le nombre de chiffres significatifs devraient permettre une résolution correcte des problèmes physiques.

>>> 14//3

renvoie 4, la partie entière de la division de 14 par 3 qui vaut 4,6666666667.

>>> 14%3

renvoie 2, le reste de la division : 14 = 4x3 + 2. On parle également de modulo, comme pour les angles qui sont connus modulo 360° ou 2Π rad.

>>> 3**2

renvoie 9, soit 32.

4 - Afficher des caractères sur la console

04° A votre avis, que fait cette instruction ? Quelle est la différence entre les deux versions ?

>>> "Hello World !"

>>> print("Hello World !")

...CORRECTION...

On affiche deux fois Hello World !.

La première fois entouré de ' et ' pour indiquer qu'il s'agit d'une chaîne de caractères.

La seconde fois, on utilise la fonction print qui permet d'afficher le résultat. La différence ? Uniquement l'absence des guillements simples pour l'instant. Nous verrons néanmoins que lorsque nous réaliserons un programme en mode non interactif, il faudra utiliser print de façon à afficher le résultat. Pour l'instant les deux méthodes fonctionnent mais le print est ici inutile : en mode interactif, la console affiche directement les contenus qu'on lui demande.

05° Et là ?

>>> print( "Hello W" + "orld !" )

>>> "Hello W" + "orld !"

...CORRECTION...

Dans les deux cas, on voit s'afficher Hello World ! dans la console.


Python sait donc additionner deux strings. On nomme cela la concaténation.

Ce qui apparaît en bleu se nomme un STRING en python : une chaîne de caractères en français.

Un string commence avec des guillements doubles et finit par des guillemet doubles :

"Hello World !"

Mais on peut également utiliser des guillemets simples :

'Hello World !'

Par contre, on doit fermer un string avec le même type de guillemets en ouverture et en fermeture. Le code suivant ne permet pas de créer un string :

'Hello World !"

Si on utilise un guillemet double en ouverture, on ne peut donc plus l'afficher : Python va croire qu'on ferme le string ! En réalité, on peut afficher un " et c’est simple : on utilise l’antislash  \  avant le signe lui même.

06° A votre avis, que fait ce code ?

>>> "Comme on dit souvent : \"Hello World !\""

Premier constat : puisqu’on a une instruction par ligne, pas besoin de mettre de code de fin d’instruction. Pas de ; ou de : ou de . tout court. Du moins pour l’instant.

Remarque :

\ se nomme antislash ou backslash.

/ se nomme slash.

Sur la plupart des systèmes d'exploitation, les adresses sur des périphériques de données s'écrivent avec la barre oblique. Pour Microsoft Windows, c'est la barre oblique inversée (exemple : C:\Mes Documents\Mes Images) alors que dans les systèmes UNIX, ainsi que pour les adresses réseau et internet (URL), les adresses de fichier s'écrivent avec la barre oblique normale (exemple dans votre barre d'adresse).

Pour finir, pour formater un affichage via des tabulations, on peut utiliser \t, avec t comme tabulations.

Du coup, l’antislash est un caractère spécial puisqu’il sert à coder des fonctions particulières comme la tabulation. Comment afficher un antislash alors ? C’est simple … on en met deux à la suite.

07° Qu’affiche le code ci-dessous ?

>>> print("Nom\tPrenom\tAge")

>>> print("Voilà un antislash \\")

...CORRECTION...

Vous devriez voir que \t permet de créer une tabulation.

Vous devriez voir que \\ permet d'afficher l'anti-slash.

Mais pourquoi mettre des print ici ?

La réponse est simple : sans ça ne fonctionne pas !

>>> "Nom\tPrenom\tAge"

'Nom\tPrenom\tAge'

Sans le print, l'interpréteur ne cherche pas justement à interpréter votre chaîne de caractère, il affiche juste la chaîne.

Pour afficher un nombre (120 par exemple), vous pouvez utiliser deux façons de faire :

>>> print("120")

120

>>> print(120)

120

Pour un humain, c'est pareil mais pas pour l'ordinateur : Pour lui, "120" est du même type qu'une chaîne comme "ABC".

08° Tenter de deviner ce que vont afficher les codes suivants. Tapez et exécutez le code une fois que vous pensez avoir la réponse.

>>> 120*2

>>> "120"*2

>>> "120"+2

09° A votre avis, pourquoi le dernier cas ne donne-t-il rien d’interprétable ?

...CORRECTION...

Si on veut deux fois le nombre 120, on obtient 240.

Si on veut deux fois la chaîne "120", on obtient "120120".

Par contre, Python ne sait absolument pas additionner une chaîne de caractères et un nombre ... En même temps, que feriez-vous si on vous demandait de faire la somme de "ABC" et du nombre 2.

Une question se pose : pourquoi taper print dans le code suivant ?

>>> print(120*2)

120

En effet, le code suivant affiche déjà 240 :

>>> 120*2

120

C’est simple, pour l’instant, on tape le code ligne par ligne et le code s’exécute instantanément.

Nous allons maintenant voir comment programmer et enregistrer plutôt que de tout taper ligne par ligne.

10° Ouvrir Notepad++ et sélectionner le bon langage de programmation (Python pour ceux qui ne suivent pas...) . Sélectionner l’encodage UTF-8 également. Nous verrons plus tard ce que cela signifie.

Taper ensuite le code suivant :

print("Comme on dit souvent : \"Hello World !\"")

print("Nous allons faire le calcul suivant : 45*2 = ")

print(45*2)

Remarque : Le copier-coller Explorateur vers Interpréteur est un peu problématique : cela crée un espace entre chaque ligne ! Plutôt que de les enlever une à une, vous pouvez aller dans le menu EDITION - Lignes - Enlever les lignes vides. Ca ira plus vite.

11° Enregistrer le fichier qui doit être un .py. Double-cliquer sur le fichier pour le faire démarrer : la console s’ouvre mais se referme très vite. Et oui, dès que le programme est fini, Python ferme automatiquement la console. Dommage.

Pour permettre au programme d’attendre avant de fermer la console, il faut lui dire. C’est un ordinateur ne l’oublions pas. Pour cela, il va falloir insérer deux lignes : une première pour importer une bibliothèque de fonctions (qui se nomme os pour la fonction qui nous intéresse) puis une ligne pour utiliser l’une des fonctions intégrées à la bibliothèque. Nous allons ici utiliser la fonction system contenue dans la bibliothèque de fonctions os. Cette fonction permet d’utiliser les commandes DOS comme si nous les tapions dans la console. Cela permettra d’utiliser la commande pause du DOS.

import os

print("Comme on dit souvent : \"Hello World !\"")

print("Nous allons faire le calcul suivant : 45*2 = ")

print(45*2)

os.system("pause")

Pour Linux : ceci ne fonctionne pas. Tapez simplement ceci à la fin : input("Tapez ENTREE"). Cela fonctionne également sur Windows.

12° Lancer ce code et vérifiez que cela marche.

Attention, l'interpréteur Python exécute l'ensemble une ligne à la fois. Sa lecture du code donne donc ceci :

CLIQUEZ ICI POUR VOIR LE DEROULEMENT :

Vous pouvez également ouvrir (et créer) votre programme dans l'environnement de développement fourni avec l'autre programme Python avec l'icône blanche : IDLE Python (il suffit de créer un nouveau fichier ou d’ouvrir le fichier précédent). Aller ensuite dans le menu RUN – Run Python (F5) et vous aller ouvrir une fenêtre où vous pourrez voir votre programme s’exécuter.

La fonction « pause » du DOS va par contre ouvrir la console pour montrer qu’on a fait une pause …

13° Lancer votre programme via l’IDLE.

Il nous reste à voir le passage à la ligne. Si vous voulez afficher "Bon" sur une ligne et "jour" sur la ligne suivante, il suffit d'utilser un caractère spécial à la fin de "Bon". Lequel ? \n : on obtient alors la chaîne de caractères "Bon\njour".

14° Afficher, avec un print, la chaîne "Bon\njour" pour voir comment Python interprète votre chaîne.

On obtient donc :

>>> print("Bon\njour")

Bon

jour

Pour finir la partie « affichage », il nous restera à gérer les caractères particuliers comme les accents et la capacité de ne pas partir à la ligne. Nous verrons ça sur une autre partie.

5 - Commentaires et mise en forme

L’un des points fondamentaux de la programmation est la clarté : votre code sera certainement un jour utilisé ou modifié par quelqu’un d’autre. Ou par vous même quelques mois ou années plus tard.

Lorsqu’un programme est simple, pas besoin d’explication. Mais lorsque le code commence à gonfler, on regrette souvent de ne plus savoir pourquoi on a codé ceci ou cela quelques semaines avant… Les commentaires servent à donner des explications sur ce que fait le code ou sur ce que doit contenir telle ou telle variable. Autre cas courant : la personne qui lit le code n’est pas celui que l’a codé. Sans commentaire, pas facile de comprendre le but de chaque ligne de code.

Pour rajouter un commentaire, on utilise simplement # de façon adaptée :

#Toute cette ligne est un commentaire.

print("Bonjour le monde") #Ceci est également un commentaire

print("Cette ligne ne contient pas de #commentaire")

6 - Encodage

On peut rajouter un commentaire particulier sur la première ligne du programme : ce commentaire est particulier car le système va le lire : on y indique que le programme est un programme Python et on lui donne un chemin d'accès vers l'interpréteur. Ce chemin est valable dans l'exemple uniquement sur Linux. Linux n'utilise pas vraiment les extensions (les .txt et .py par exemple). On peut donc préciser dans le code l'interpréteur à utiliser pour executer votre fichier.

#!/usr/bin/env python

Ne pas la mettre n'empêche pas le programme de tourner mais cela permet de donner des renseignements au système.

Deuxième information importante à transmettre : l'encodage. A partir du moment où vous mettez des accents dans votre programme, vous devrez préciser l'encodage que vous avez utilisé pour l'enregistrer.

Décrit très trè brièvement, l'encodage est une table contenant une série de nombres symbolisant les différents caractères (dont ceux avec des accents). Il existe deux encodages très utilisés : l'encodage Latin-1 sur Windows anciennement et l'encodage Utf-8 que l'on retrouve maintenant partout. Il faudra préciser à Python avec quel encodage vous avez enregistré votre programme. Aujourd’hui, la plupart du temps, ce sera Utf-8.

# -*-coding:encodage -*

Remplacez encodage par l'encodage que vous utilisez en fonction de votre système.

Sur Linux ou Mac, ce sera plus vraisemblablement : # -*-coding:Utf-8 -*

Sur Windows, on trouvait souvent # -*-coding:Latin-1 -* mais maintenant, l'UTF-8 est bien implanté : # -*-coding:Utf-8 -*

#!/usr/bin/env python

# -*- coding: utf-8 -*-

N'oubliez pas de les mettre en tête de chacun de vos fichiers. Point important : elles doivent impérativement se situer sur les deux premières lignes de votre fichier.

Nous reviendrons plus tard sur cette histoire d'encodage. C'est en réalité très important mais malheureusement un peu compliqué à expliquer pour un premier contact avec la programmation.

7 - Variable et boucle FOR

Nous allons voir comment parvenir à afficher plusieurs fois le même message sans pour autant avoir à taper plusieurs fois ce message.

Imaginons qu'on désire afficher 5 fois le message ATTENTION (pour indiquer que c'est vraiment très important) :

#!/usr/bin/env python

# -*- coding: utf-8 -*-

print("Attention")

print("Attention")

print("Attention")

print("Attention")

print("Attention")

input("Tapez ENTREE")

15° Tester pour vérifier que le programme fonctionne.

Néanmoins, c'est un peu répétitif : on doit noter 5 fois le même mot. Nous allons faire mieux : vous pouvez mettre le terme voulu en mémoire et demander ensuite à Python d'aller lire le contenu que vous avez mis en mémoire.

Pour placer quelque chose en mémoire, on donne le nom de la variable (ici mis en valeur en gras et en bleu), on place un signe égal et on place le contenu voulu de l'autre côté :

monTexte = "Attention"

Pour afficher le contenu de la variable, il suffit de taper le nom de celle-ci :

print(monTexte)

16° Lire le programme ci-dessous sans le lancer. Que va-t-il afficher sur la console ?

#!/usr/bin/env python

# -*- coding: utf-8 -*-

monTexte = "Nouveauté"

print(monTexte)

print(monTexte)

input("Tapez ENTREE")

Voici le contenu de la variable en fonction de l'enchainement des instructions :

CLIQUEZ ICI POUR VOIR LE CONTENU DE LA VARIABLE :

monTexte :

17° Modifier le programme pour qu'il affiche 5 fois "Attention" en utilisant une variable.

Nous en verrons plus sur les variables dans l'activité suivante. Passons maintenant à un autre problème : et si nous voulions afficher le message 200 fois. Il faudrait taper 200 lignes ? C'est un peu gros.

Et justement, il existe une instruction qui permet de faire cela : la boucle FOR (POUR en français). Cette instruction va permettre de faire les mêmes instructions plusieurs fois.

#!/usr/bin/env python

# -*- coding: utf-8 -*-

monTexte = "Nouveauté"

for x in range(5) :

    print(x)

    print(monTexte)

input("Tapez sur ENTREE")

CLIQUEZ ICI POUR VOIR LE CONTENU DE LA VARIABLE :

monTexte :

x :

Pour décaler le texte, on peut utiliser la tabulation (touche TAB à gauche de A) ou utiliser 4 espaces. Par contre, utiliser une des méthodes et garder la pour tout votre code. Ne mélanger pas les deux façons de faire.

Avec Notepad++, il suffit d'aller dans le menu AFFICHAGE - Symboles spéciaux - Afficher les blancs et les tabulations pour voir ce que vous avez utilisé.

18° Utiliser le programme. Combien de fois effectue-t-on la boucle ? Enumérer les valeurs prises par la variable x de la boucle FOR. Combien de valeurs y a-t-il ?

Vous devriez obtenir ceci :

0

Nouveauté

1

Nouveauté

2

Nouveauté

3

Nouveauté

4

Nouveauté

Tapez sur ENTREE

...CORRECTION...

Les instructions print(x) et print(monTexte) sont réalisées 5 fois. La boucle est donc réalisée 5 fois.

La variable x prend les valeurs 0, 1, 2, 3 et 4.

La variable x prend donc bien 5 valeurs mais comme on commence à 0, on ne va que jusqu'à 4.

Comme nous pouvons le voir, le programme réalise en boucle uniquement les instructions qui sont tabulées par rapport à la ligne du for. Pour tabuler, il faut utiliser soit la touche TAB de votre clavier (souvent à gauche de la touche A), soit placer 4 espaces à la suite.

Si on analyse le code ci-dessous et qu'on le décompose en bloc, on voit que cela ressemble à ceci :

#!/usr/bin/env python

# -*- coding: utf-8 -*-

monTexte = "Nouveauté"

for x in range(5) :

    print(x)

    print(monTexte)

input("Tapez sur ENTREE")

Par contre, on voit bien que l'instruction affichant "Tapez sur ENTREE" ne s'effectue qu'une fois : elle ne fait pas partie de la boucle puisqu'elle n'est pas tabulée.

Vous pouvez tenter de la tabuler : vous verrez qu'on doit taper sur ENTREE à chaque fois avant de recommencer la boucle.

Nous irons beaucoup plus loin dans l'activité sur les boucles FOR. Il ne s'agit ici que d'une introduction ou un rappel à des notions que vous avez certainement déjà rencontré.

19° Créer un programme utilisant une variable contenant un texte et une boucle FOR pour afficher 500 fois le message Hello World !

8 - This is the end...

La blague du jour : Le problème de la logique des informaticiens :

Ma mère : « Mon chéri, peux-tu aller au supermarché et me ramener une bouteille de lait. Si ils ont des œufs, prends en 6 ».

Je suis revenu avec 6 bouteilles de lait.

Ma mère a dit : « Pourquoi as-tu pris 6 bouteilles de lait ? »

J’ai répondu : « Car ils avaient des œuf … »

20° Logique ou pas ?

...CORRECTION...

Pour comprendre cela, il faut bien entendu prendre l'instruction à la lettre :

  • Prends une bouteille de lait
  • Si il y a des oeufs, prends 6 bouteilles de lait

Nous verrons dans l'activité suivante comment parvenir à stocker des informations rentrées au clavier par l'utilisateur et comment répondre différemment en fonction de sa réponse. Il s'agit des conditions exprimées avec un IF (SI en français).