18. Ecrire - str

Dans ce chapitre, nous allons nous intéresser au texte. Le texte est une catégorie d’information qui est essentielle dans beaucoup de programmes, tels qu’une application de messagerie ou un programme de traitement de texte.

Techniquement un texte est appelé une chaîne de caractères, ou string en anglais (str). Nous allons voir que :

  • un texte est délimité par une apostrophe 'text' ou un guillemet double "text",

  • l’opérateur * répète un texte,

  • la fonction ord(c) retourne l’entier i qui représenter le caractère c.

Question

Un string informatique est




18.1. Dire bonjour

Nous commençons par le grand classique des livres d’introduction à la programmation : afficher la fameuse phrase hello world. La fonction print() permet d’écrire du texte vers la console. Ici, la console est la zone rectangulaire qui s’affiche sous le code du programme.

Exercice 1

Affichez encore 2-3 lignes de texte en plus avec la fonction print().

18.2. Délimiter un texte

Tout caractère imprimable peut être utilisé pour créer un texte :

  • lettres (a...z et A...Z)

  • chiffres (0...9)

  • ponctuations (.,;:?!)

  • parenthèses ([]{}<>)

  • symboles ($*#...)

Pour marquer une partie du code comme texte, cette partie doit être délimité par l’un des symboles spéciaux qui sont :

  • apostrophe (')

  • guillemets doubles (")

  • trois guillemets doubles (""")

Exercice 2

Ajoutez des lignes supplémentaires au texte qui est délimité par """.

18.3. Répéter un texte

L’opérateur * permet de répéter un texte composé d’un ou de plusieurs caractères.

Exercice 3

Répétez une chaîne plus longue.

18.4. Concaténer un texte

Le mot concaténer veut dire enchaîner ou coller ensemble.

L’opérateur + permet de concaténer deux chaînes de texte. Mais juxtaposer deux chaînes de texte et les séparer par zéro ou plusieurs espaces va aussi concaténer la chaîne.

18.5. La longueur d’une chaîne

La fonction len() retourne la longueur d’une chaîne. La chaîne vide ("") a une longueur de 0.

Exercice 4

Ajoutez quelques caractères et re-exécutez le code.

Pour savoir combien de fois il faut répéter un symbole dans le but d’obtenir la même longueur qu’un texte donné, nous pouvons utiliser la fonction len() et ainsi créer des lignes qui ont la même longueur qu’un texte.

Exercice 5

Entourez votre texte d’un autre symbole.

18.6. Le code ASCII

Le code ASCII (American Standard Code for Information Interchange) était un des premiers standards utilisés pour représenter des symboles dans un ordinateur. Avec initialement 7 et plus tard 8 bits, il désigne un ensemble de lettres, chiffres, symboles et ponctuations.

Aujourd’hui le standard Unicode permet d’encoder la totalité des symboles utilisés dans les différents langages du monde.

La fonction ord(c) retourne le code ASCII (Unicode) qui est associé au caractère c.

Nous constatons que :

  • le code ASCII pour la lettre A est 65,

  • les codes suivent l’ordre de l’alphabet,

  • les codes des minuscules ont un écart de 32 par rapport au code des majuscules.

La fonction chr(i) retourne le caractère qui correspond au code i.

18.7. L’art ASCII

L’art ASCII consiste à réaliser des images uniquement à l’aide des lettres et caractères spéciaux contenus dans le code ASCII.

Précéder la chaîne de caractères avec r permet de ne pas tenir compte des symboles d’échappement (barre oblique en arrière \).

Voici un exemple :

rabbit

Exercice 6

Le site asciiart.eu contient beaucoup d’exemples d’art ASCII. Trouvez-en un et copiez-le dans un programme Python.

18.8. Échapper un caractère

Les symboles ' et " sont utilisés pour délimiter du texte. Si nous voulons utiliser ces caractères à l’intérieur de la chaîne, nous devons les échapper avec une barre oblique en arrière \.

Si nous voulons imprimer le symbole d’échappement, nous devons l’échapper également.

18.9. Une chaîne brute

Les chaînes de texte peuvent être préfixées par la lettre r; de telles chaînes sont appelées chaines brutes (raw strings en anglais) et traitent la barre oblique inversée comme un caractère normal.

18.10. Retour à la ligne

Chaque commande print() se termine avec un retour à la ligne. Pour insérer un retour à la ligne à l’intérieur d’une chaîne de caractères nous utilisons la séquence d’échappement \n (newline).

Exercice 7

Ajoutez une nouvelle ligne de code qui contient des \n.

18.11. Aligner en colonnes

La séquence \t (tabulateur) permet d’aligner des éléments de texte en colonne. Les colonnes sont espacées de 8 caractères.

18.12. Les émojis

Un émoji (絵文字) est un terme issu du japonais pour désigner les pictogrammes utilisés dans les messages électroniques et les pages web japonaises, qui se sont répandus dans le monde entier.

Le mot émoji signifie littéralement « image » (e) + « lettre » (moji) ; la ressemblance avec « émotion » est un jeu de mots interculturel.

Un émoji peut être utilisé comme un caractère à l’intérieur d’un texte. Nous pouvons le répéter avec l’opérateur * et obtenir son code Unicode avec la fonction ord(c).

Avec la fonction chr(i) nous pouvons afficher les 10 caractères qui suivent l’émoji de pomme.

Exercice 8

Affichez les 10 emojis qui suivent 😀.

18.13. Les kanji

Le japonais est écrit avec des pictogrammes qui s’appellent des kanjis. Avec la fonction ord(c) nous pouvons obtenir leur Unicode.

Avec la fonction chr(i) nous pouvons afficher les 10 kanjis qui suivent le kanji 日 qui signifie soleil. Si vous regardez bien, vous remarquez qu’ils contiennent tous le radical pour soleil.

Exercice 9

Affichez les 10 kanjis qui suivent 語 (langage).

18.14. Les commentaires

En Python, un commentaire est un bout de code qui est ignoré par Python. Un commentaire commence par le symbole hashtag (#).

Les commentaires sont utilisés pour ajouter à un programme des informations supplémentaires :

  • explications,

  • nom de l’auteur,

  • révision.

Parfois un commentaire est utilisé pour désactiver une ligne de code. La plupart des éditeurs marquent les commentaires en couleur grisée.

Exercice 10

Enlevez le # devant print('au revoir') pour l’exécuter.

18.15. Parcourir une chaîne

La ligne de code for c in mot: signifie que la variable c va prendre à chaque répétition un caractère différent de la chaîne mot.

Quand la variable d’itération est un caractère on l’appelle souvent c.

Exercice 11

Testez avec des textes différents.

18.16. Narration

Voici un exemple qui reproduit une conversation entre deux personnes, affichée au ralenti, lettre par lettre, pour simuler une sorte de communication chat en ligne.

La méthode split('\n') découpe la chaine histoire en lignes séparées, et retourne une liste.

18.17. Le pendu

Le jeu du pendu consiste à trouver un mot en devinant les lettres qui le composent. Le jeu se joue traditionnellement à deux, avec un papier et un crayon, avec le dessin d’une potence, dans lequel pour chaque erreur un trait d’un bonhomme allumette est ajouté.

Dévoiler un mot

Dans le jeu du pendu, un mot est affiché avec des traits au début _ _ _ _ _

Nous pouvons écrire ce code plus compact en utilisant l’expression valeur1 if condition else valeur2

Jouer en boucle

Dessin du pendu

Une première approche pour dessiner la potence avec le pendu pourrait être d’enchaîner les instructions de dessin sans aucune structure.

Structurer le code

Nous découpons le programme en sous-programme que nous nommons avec des noms descriptifs. Ensuite nous appelons toutes les fonctions pour dessiner la potence avec le pendu.

Jeu final

Pour pouvoir exécuter les fonctions du pendu au bon moment, nous plaçons les fonctions dans un tuple. Nous allons accéder la fonction avec un indice.

18.18. Exercices

Le jeu du pendu

Créez le jeu du pendu avec un répertoire de 50 mots dans un tuple. Votre programme choisit un de ces mots aléatoirement avec la fonction choice() du module random, comme montré ci-dessous.