ParcoursOuvrir l'appli

Le texte et les types

Python, les bases · 50 min

Le texte : les chaînes de caractères

En Python, on écrit un texte entre guillemets, doubles ou simples :

produit = "savon"
ville = 'Douala'

Les guillemets sont indispensables. Sans eux, Python croit que c'est un nom de variable :

produit = savon
NameError: name 'savon' is not defined

Python cherche une variable appelée savon et ne la trouve pas. C'est la troisième cause de NameError.

Si ton texte contient une apostrophe, entoure-le de guillemets doubles : "l'école". S'il contient des guillemets doubles, entoure-le d'apostrophes : 'Il a dit "non"'.

Les opérations sur le texte

Écriture Résultat Explication
"Bonjour " + "Awa" 'Bonjour Awa' + colle deux textes (on dit concaténer)
"ha" * 3 'hahaha' * répète le texte
len("Douala") 6 len (length, longueur) compte les caractères, espaces compris
"" le texte vide : zéro caractère

Attention à l'espace : "Bonjour" + "Awa" donne 'BonjourAwa'. Python n'ajoute jamais d'espace tout seul.

Pratique : Joue avec le texte

Un terminal simulé t'attend dans l'appli, sans rien installer. Pratiquer

Le piège numéro un : `"5"` n'est pas `5`

5 + 5        # 10
"5" + "5"    # '55'

Et si on mélange les deux ?

"5" + 5
TypeError: can only concatenate str (not "int") to str

« Erreur de type : on ne peut coller que du texte (pas un entier) à du texte. » Python refuse de deviner si tu voulais additionner ou coller. C'est une bonne chose : d'autres langages, comme JavaScript, devinent... et donnent souvent des résultats absurdes.

Pratique : Vérifie par toi-même

Prévois chaque résultat avant de taper Entrée.

Un terminal simulé t'attend dans l'appli, sans rien installer. Pratiquer

Les types

Les quatre types de base :

Type Nom complet Exemples Sert à
int entier (integer) 5, -12, 0 compter
float nombre à virgule (floating point, virgule flottante) 3.5, -0.25, 2.0 mesurer, faire des moyennes
str chaîne de caractères (string) "savon", "5", "" le texte
bool booléen True, False vrai ou faux (prochain module)

La fonction type(...) te dit le type d'une valeur :

type(5)       # <class 'int'>
type(5.0)     # <class 'float'>
type("5")     # <class 'str'>

À retenir :

Pratique : Demande son type à Python

Un terminal simulé t'attend dans l'appli, sans rien installer. Pratiquer

Les nombres à virgule sont imprécis

Tape 0.1 + 0.2 dans ta tête. Tu attends 0.3. Python répond :

0.30000000000000004

Ce n'est pas un bug de Python. Tous les langages font pareil. L'ordinateur stocke les nombres en binaire (avec des 0 et des 1), et certains nombres simples pour nous, comme 0,1, n'ont pas d'écriture exacte en binaire. Exactement comme 1/3 n'a pas d'écriture exacte en décimal : 0,3333333... à l'infini. L'ordinateur garde donc une valeur très proche, mais pas exacte.

Changer de type : la conversion

Fonction Fait Exemple Résultat
int(...) convertit en entier int("42") 42
float(...) convertit en nombre à virgule float("3.5") 3.5
str(...) convertit en texte str(42) '42'
round(x) arrondit à l'entier le plus proche round(3.7) 4
round(x, n) arrondit à n chiffres après la virgule round(3.14159, 2) 3.14

Exemple réel : la quantité arrive d'un formulaire, donc sous forme de texte.

quantite = "3"
int(quantite) * 500     # 1500

Et pour coller un nombre dans une phrase :

age = 20
"J'ai " + str(age) + " ans"     # "J'ai 20 ans"

Deux pièges

ValueError: invalid literal for int() with base 10: 'bonjour'

« Erreur de valeur. » Le type str est accepté par int, mais cette valeur-là ne peut pas devenir un entier.

Les méthodes du texte

Le texte possède des dizaines de méthodes. Les plus utiles :

Écriture Résultat Effet
"douala".upper() 'DOUALA' tout en majuscules
"DOUALA".lower() 'douala' tout en minuscules
"awa mballa".title() 'Awa Mballa' majuscule au début de chaque mot
" awa ".strip() 'awa' enlève les espaces au début et à la fin
"1 500".replace(" ", "") '1500' remplace un morceau par un autre
"savon".count("o") 1 compte les apparitions

On peut enchaîner les méthodes, de gauche à droite :

"  awa MBALLA ".strip().title()     # 'Awa Mballa'

Nettoyer du texte comme ça s'appelle le nettoyage de données. En data science, c'est une grosse partie du travail : les gens tapent leur nom avec des espaces en trop, en majuscules, en minuscules...

Les caractères spéciaux

Dans un texte, \n veut dire « retour à la ligne ». Le \ (barre oblique inversée) annonce un caractère spécial.

print("ligne 1\nligne 2")
ligne 1
ligne 2

Essaie les méthodes

Lance, puis modifie le texte de départ et relance.

nom = "  awa MBALLA  "
print(nom.strip())
print(nom.upper())
print(nom.strip().title())
print("1 500 000".replace(" ", ""))
print("Ligne 1\nLigne 2")
print(0.1 + 0.2)
print(round(0.1 + 0.2, 2))

Exercice : Texte et longueur

  1. Crée une variable ville qui contient le texte Douala.
  2. Crée une variable longueur qui contient le nombre de caractères du texte "intelligence artificielle". Utilise len, ne compte pas à la main.
Voir une solution
ville = "Douala"
longueur = len("intelligence artificielle")

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Des données arrivées en texte

Le prix au kilo arrive d'un fichier sous forme de texte. Calcule le coût de poids kilos dans la variable cout.

Essaie d'abord cout = prix_kilo * poids et clique sur Vérifier pour voir ce qui se passe. Puis corrige.

Voir une solution
prix_kilo = "1200"   # donné
poids = 2            # donné

cout = int(prix_kilo) * poids

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Quel type ?

Pour chaque variable, écris le nom du type du résultat, sous forme de texte : "int", "float" ou "str".

Réfléchis d'abord, puis vérifie dans la console avec type(...) si tu hésites.

Voir une solution
type_a = "float"
type_b = "int"
type_c = "str"
type_d = "float"

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Nettoyer un nom

Un client a tapé son nom n'importe comment dans un formulaire. Range dans propre la version nettoyée : sans espaces autour, avec une majuscule au début de chaque mot.

Tu dois obtenir exactement Jean-Paul Essomba. Utilise des méthodes, pas le texte écrit à la main.

Voir une solution
saisie = "   jean-paul ESSOMBA  "   # donné

propre = saisie.strip().title()

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Un prix mal formaté

Le prix d'un téléphone a été saisi avec des espaces : "125 000". Calcule dans total le prix de 3 téléphones, en nombre entier.

Il faut d'abord retirer les espaces, puis convertir, puis multiplier.

Voir une solution
prix_texte = "125 000"   # donné

total = int(prix_texte.replace(" ", "")) * 3

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Construire une phrase

Avec les variables données, construis dans phrase le texte exact :

Awa a 20 ans

Utilise + pour coller les morceaux, et str(...) pour convertir l'âge. Puis affiche phrase.

Voir une solution
prenom = "Awa"   # donné
age = 20         # donné

phrase = prenom + " a " + str(age) + " ans"
print(phrase)

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : Arrondir les euros

Reprends la conversion de la leçon précédente. Range dans euros la valeur de prix_fcfa en euros, arrondie à 2 chiffres après la virgule, puis affiche-la.

Tu dois afficher 15.24.

Voir une solution
TAUX_EURO = 655.957   # donné
prix_fcfa = 10000     # donné

euros = round(prix_fcfa / TAUX_EURO, 2)
print(euros)

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Teste-toi

Que vaut int("7") + int(2.9) ?
  1. 9 (bonne réponse)
  2. 10
  3. "72"
  4. Une erreur

int("7") donne 7 et int(2.9) donne 2 (coupé, pas arrondi). 7 + 2 = 9.