14. 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’entieri
qui représenter le caractèrec
.
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 : Affichez encore 2-3 lignes de texte en plus avec la fonction print()
.
Délimiter un texte¶
Tout caractère imprimable peut être utilisé pour créer un texte :
lettres (
a...z
etA...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 : Ajoutez des lignes supplémentaires au texte qui est délimité par """
.
Répéter un texte¶
L’opérateur *
permet de répéter un texte composé d’un ou de plusieurs caractères.
Exercice : Répétez une chaîne plus longue.
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.
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 : 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 : Entourez votre texte d’un autre symbole.
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
.
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 :
Exercice : Le site asciiart.eu contient beaucoup d’exemples d’art ASCII. Trouvez-en un et copiez-le dans un programme Python.
É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.
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.
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 : Ajoutez une nouvelle ligne de code qui contient des \n
.
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.
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 : Affichez les 10 emojis qui suivent 😀.
Avertissement
Utiliser des émojis dans Thonny ne fonctionne pas. Ceci fait planter Thonny !
Le module graphique utilisé actuellement (Tk 8.6.8) ne supporte pas des émojis.
Ce bug sera corrigé avec Thonny 4.0 qui utilisera la version Tk 8.6.12.
Vous pouvez utiliser les émojis sans problème avec l’éditeur IDLE qui lui utilise Tk 8.6.11.
Vous pouvez utiliser dans Thonny sans problème les anciens pictogrammes en noir et blanc. Voici les codes Unicode de symboles divers.
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 : Affichez les 10 kanjis qui suivent 語 (langage).
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 : Enlever le # devant print('au revoir')
pour l’exécuter.
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 : Testez avec des textes différents.
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.
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.
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.