Autres expressions

Identification

Infoforall

2 - Types des expressions


Nous allons continuer à afficher des choses via le Shell Python. Nous allons ainsi voir qu'on peut faire bien d'autres choses que d'évaluer et d'afficher des expressions numériques.

Pour cela, il va falloir se rendre compte que Python classe ce qu'il doit évaluer dans plusieurs catégories.

Logiciel nécessaire pour l'activité : Python 3

Evaluation ✎ : questions 01-04

Résumé : Version HTML ou fond blanc ou ou PDF (couleur ou gris)

1 - Types d'expressions

Lorsqu'on fournit des expressions à l'interpréteur Python, celui-ci va les évaluer.

Lorsqu'on utilise la console interactive de Python, celle-ci affiche alors la valeur finale que l'interpréteur évalue.

Pour l'instant, ces expressions étaient des expressions mathématiques qui répondaient donc en fournissant un nombre.

Nous avons vu deux types de nombres. Pour connaitre le type d'une réponse, il suffit d'utiliser la fonction type.

✎ 01° Utiliser les lignes de commande ci-dessous pour voir que Python gère les nombres en les classant dans deux catégories : les integers (les entiers) et les floats (les nombres à virgule flottante). Lors d'un calcul comprenant un integer et un flottant, quel est le type final de la réponse évaluée ?

>>> 5*5 25 >>> type(5*5) <class 'int'> >>> 5.0*5.0 25.0 >>> type(5.0*5.0) <class 'float'> >>> 5*5.0 25.0 >>> type(5*5.0) <class 'float'>

Mais il existe d'autres types de réponses possibles.

On peut ainsi demander à l'interpréteur de gérer des chaînes de caractères (strings en anglais).

On doit fournir les strings entourées de guillemets simples ' ' ou doubles " ".

L'interpréteur utilise lui toujours des guillemets simples lorsqu'il présente un string.

>>> "Hello World !" 'Hello World !' >>> 'Hello World !' 'Hello World !' >>> type("Hello World !") <class 'str'>

Sans guillemet, l'interpréteur ne peut pas comprendre que vous voulez lui fournir un string :

>>> Hello World ! File "<stdin>", line 1 Hello World ! ^ SyntaxError: invalid syntax

Il existe également une réponse correspondant aux tests logiques : les réponses booléennes, qui ne peuvent valoir que deux états :

  • True en Python : état HAUT, 1, VRAI ...
  • False en Python : état BAS, 0, FAUX...
>>> 5 > 10 False >>> type(5 > 10) <class 'bool'> >>> 5 < 10 True

Pour finir cette activité, nous allons regarder un peu plus en détails la gestion des strings.

2 - Afficher des caractères sur la console

Pour l'instant, toutes les expressions contenant des opérations étaient à base de nombres. Regardons comment Python gère les opérations sur les strings.

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

>>> "Hello World !" 'Hello World' >>> print("Hello World !") Hello World

...CORRECTION...

On affiche deux fois  Hello World ! , mais pas de façon identique.

La première fois, l'expression est juste évaluée : la console affiche donc le résultat entouré de guillemets simples (' 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 contenu passé entre parenthèses. La différence ? Uniquement l'absence des guillements simples pour l'instant. Nous verrons néanmoins que lorsque nous réaliserons un programme, 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.

03° 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 évaluer l'addition deux strings. On nomme cela la concaténation. On obtient un string qui est la juxtaposition des deux strings initiaux.

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

Mais, comment Python parvient-il à savoir qu'il veut afficher un string et qu'il ne s'agit pas d'instructions ?

Strings

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

# Commence et finit par une guillemet double " " "Hello World !"

Mais on peut également utiliser des guillemets simples  '  :

# Commence et finit par une guillemet simple ' ' '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 : on ouvre avec un guillement simple mais on tente de fermer avec un guillement double ! Et l'interpréteur Python ne s'y retrouve plus...

# Commence par une guillemet simple mais finit par une guillemet double donc erreur : ' " 'Hello World !"

Si on utilise un guillemet double en ouverture, on ne peut donc plus l'afficher dans le string : Python va croire qu'on ferme le string !

"On tente souvent d'écrire "Hello World !" pour tester un nouveau langage."

En réalité, on peut afficher un " et c’est simple : on utilise l’antislash  \  avant le signe lui même.

✎ 04° Expliquer pourquoi on obtient l'affichage visualisé et pas un autre :

>>> "Comme on dit souvent : \"Hello World !\"" 'Comme on dit souvent : "Hello World !"'
Slash ou Antislash ? Comment retenir ?

Le slash 'normal', celui qui monte,  / , se nomme slash ou barre oblique.

L'autre, celui qui descend,  \ , se nomme antislash ou backslash ou barre oblique inversée.

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.

05° Lancer les lignes suivantes et observer le résultat.

>>> print("Nom\tPrenom\tAge") >>> print("Nom\nPrenom\nAge") >>> print("Voilà un antislash \\")

...CORRECTION...

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

Vous devriez voir que \n permet de passer à la ligne.

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\nPrenom\nAge" 'Nom\nPrenom\nAge' >>> print("Nom\nPrenom\nAge") Nom Prenom Age

Sans le print, l'interpréteur évalue la chaîne mais il donne simplement le contenu. Pour activer l'évaluation des caractères à l'intérieur de la chaîne, le print est obligatoire.

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

>>> type('120') <class 'str'>
>>> print("120") 120
>>> type(120) <class 'int'> >>> 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".

06° 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

07° 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) 240

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

>>> 120*2 240

C’est simple, pour l’instant, on tape le code ligne par ligne dans la console. Celle-ci affiche immédiatement un résultat qu'elle évalue. Cela ne va pas être le cas avec les scripts que nous allons voir dans l'activité 3.

L'activité suivante va maintenant se concentrer sur la notion de variables.

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 … »

08 Logique ou pas ?

...CORRECTION...

Pour comprendre cela, il faut bien entendu suivre ces instructions à la lettre :

  • Si il n'y a d'oeuf, prendre 1 bouteille de lait.
  • Si il y a des oeufs, prendre 6 bouteilles de lait

L'air de rien comprendre cela permet de comprendre qu'un ordinateur ne fait que suivre séquentiellement les instructions qu'on lui impose. Il ne tente jamais d'y mettre du sens et de tenter de comprendre ce que vous voulez réellement. Il exécute. Point.


Activité publiée le 28 08 2019
Dernière modification : 16 09 2020
Auteur : ows. h.