Le texte et les types
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'
5est un nombre :+additionne."5"est un texte qui contient le caractère 5 :+colle.
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 :
2.0est unfloat, même si sa partie décimale vaut zéro : c'est le point qui décide ;- une division
/donne toujours unfloat:8 / 2vaut4.0, pas4; //entre deux entiers donne unint;- dès qu'un
floatparticipe à un calcul, le résultat est unfloat:3 * 2.0vaut6.0.
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
int(3.9)donne3: la partie décimale est coupée, pas arrondie. Pour arrondir, c'estround.- Convertir un texte qui n'est pas un nombre est impossible :
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
Une méthode est une fonction attachée à une valeur. On l'appelle avec un point entre la valeur et le nom de la méthode : valeur.methode(). Les parenthèses sont obligatoires, même vides.
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 |
Une méthode ne modifie pas le texte d'origine : elle en fabrique un nouveau. nom.upper() ne change pas nom. Pour garder le résultat, il faut le ranger : nom = nom.upper().
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
- Crée une variable
villequi contient le texte Douala. - Crée une variable
longueurqui contient le nombre de caractères du texte"intelligence artificielle". Utiliselen, 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) * poidsDans 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(" ", "")) * 3Dans 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) ?
9(bonne réponse)10"72"- Une erreur
int("7") donne 7 et int(2.9) donne 2 (coupé, pas arrondi). 7 + 2 = 9.