Aller au contenu

Manipulations des types de données simples

Contenus de la section

2-1 Variables, constantes et types

c. Chaînes de caractères

2-2 Traitements de données

c. Manipulation de chaînes de caractères (formatage, extraction de sous-chaînes et concaténation)

Temps requis

25 minutes

Concaténation de chaînes

L'opération de concaténation permet de combiner des chaînes de caractères. On utilise l'opérateur d'addition ( + ) pour exprimer dans le langage Python l'idée de la concaténation. Attention, cela ne fonctionne qu'entre deux variables qui contiennent des chaînes de caractères.

Concaténation de deux chaînes
1
2
3
4
5
texte_accueil = "Bonjour"
nom_personne_1 = "Alice"
bonjour_alice = texte_accueil + nom_personne_1

print(bonjour_alice)        # Affiche BonjourAlice

On voit que le résultat BonjourAlice n'est pas exactement conforme à nos attentes. Tous les caractères (espaces, retour à la ligne, tabulations) doivent être ajoutés manuellement à la chaîne de caractères pour s'afficher (et tous les caractères ajoutés s'affichent...).

Caractère d'espacement Symbole
Espace " "
Tabulation "\t"
Retour à la ligne "\n"

Convertir un nombre en une chaîne de caractères

Section 1.2

Comme mentionné ci-dessus, on ne peut pas directement concaténer une chaîne et une valeur numérique. Par exemple, la ligne de code suivante provoque une erreur lors de son exécution.

print("Valeur : " + 5)          # N'affiche pas "Valeur : 5" 

Erreur

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

Pour régler cette erreur, il faut convertir la donnée numérique en une donnée de chaîne de caractères avec la fonction str (la version raccourcie du terme anglais string, chaîne de caractères).

print("Valeur : " + str(5))          # Fonctionne à merveille 👍

Arrondir les valeurs

Pour présenter une valeur décimale, il peut être intéressant d'arrondir à un certain nombre. La fonction str fera afficher toutes les décimales. Deux autres fonctions existent pour gérer les arrondissements soit la fonction round et la fonction format.

La fonction round

La fonction round permet d'arrondir une valeur à un certain nombre de décimales.

Paramètre Type Description
number Entier ou nombre à virgule La valeur à arrondir
digits Entier Nombre de décimales à conserver après la virgule
Retour Entier ou nombre à virgule Le nombre après l'arrondi
Utilisation de l'arrondi
1
2
3
4
5
6
7
8
9
somme = 0.1 + 0.1 + 0.1
print(str(somme))       
# Affiche 0.30000000000000004

print(str(round(somme, 1)))
# Affiche 0.3

print(str(round(somme, 3)))
# Affiche 0.3

De l'exemple on remarque que les 0 à droite ne sont pas conservés. L'avantage de la fonction round est que la valeur reste numérique, donc on peut utiliser le résultat dans une autre expression arithmétique. Le désavantage est qu'il faut la convertir en chaîne de caractères pour l'afficher.

La fonction format

La fonction format permet de formater une valeur en une chaîne de caractères, et ce, dans plusieurs contextes. L'un de ces contextes est les nombres à virgule. Dans ce cas d'utilisation, on appelle la fonction format avec les deux paramètres décrits ci-dessous.

Paramètre Type Description
number Entier ou nombre à virgule La valeur à arrondir
format Chaîne de caractères Chaîne indiquant le format à respecter
Retour Chaîne de caractères Le nombre après le formatage

Les formats prennent la forme suivante ".#A" où « # » représente le nombre de chiffres significatifs à conserver et « A » est le type formatage à utiliser. Attention, cette fonction effectue une troncature. Les types de formatage sont :

Lettre Type de formatage Exemple d'appel Résultat
e Notation scientifique avec un « e » minuscule format(10.125, ".2e") 1.01e+01
e Notation scientifique avec un « E » majuscule format(10.125, ".1E") 1.0E+01
f Nombre de décimales fixes format(1.125, ".2f") 1.12
g Format général avec un nombre de chiffres significatifs format(1.125, ".2g") 1.1
Les f-strings

Les f-string sont une façon alternative de formater des données. Au lieu d'utiliser la fonction format, on va indiquer directement dans la chaîne comment formater et intégrer les données. On différentie une f-string en ajoutant la lettre f devant le guillemet ouvrant.

Dans un f-string, on inscrit les variables à afficher avec des accolades et, si un formatage est nécessaire, on indique le format après un deux-points « : ».

Utilisation de f-string
1
2
3
4
5
6
7
8
operande1 = 4.12
operande2 = 6.17
produit = operande1 * operande2

# Avec la fonction format
print(operande1, "x", operande2, "=", format(produit, ".2f"))    
# Avec une f-string
print(f"{operande1} x {operande2} = {produit:.2f}")

Les fonctions sur les chaînes de caractères

Section 12.3

Les chaînes de caractères sont par définition immuables, donc on ne peut pas changer ses éléments directement après sa création. Pour modifier une chaîne existante, il faut appeler des fonctions sur les chaînes de caractères.

Fonctions sur les chaînes

La syntaxe pour appeler une fonction sur une chaîne diffère légèrement de celle d'une fonction standard. On prend la chaîne sur laquelle l'on souhaite appeler la fonction (ou la variable qui contient la chaîne) et on lui appose un point, puis on fait l'appel à la fonction.

La fonction s'exécute alors pour la chaîne sur laquelle elle est appelée.

Programmation objet

Cette syntaxe différente provient de la programmation-objet que nous aborderons plus tard au cours de la session. Elle n'est pas là simplement pour mélanger les programmeuses et programmeurs :P

Les fonctions upper et lower

Ces deux fonctions convertissent une chaîne en lettres majuscules (pour `upper`) et en lettres minuscules (pour `lower`). Elles n'acceptent aucun argument et retournent la chaîne modifiée. L'opération est sans effet pour les chiffres et les symboles dans les chaînes.
Transformation de la casse d'une chaîne
texte = "Bonjour le monde!"
print(texte.upper())    # Affiche «BONJOUR LE MONDE!»
print(texte.lower())    # Affiche «bonjour le monde!»

La fonction count pour compter les caractères

Cette fonction compte le nombre de sous-chaînes dans une chaîne. Elle accepte un paramètre, la sous-chaîne retournée.

Paramètre Type Description
sous-chaîne Chaîne de caractères Chaîne recherchée
Retour Entier Le nombre de fois que la sous-chaîne a été trouvée
Exemple d'utilisation de la fonction count
1
2
3
4
chaine = "Bonjour le monde!"
print(chaine.count("o"))        # Affiche 3
print(chaine.count("on"))       # Affiche 2
print(chaine.count("z"))        # Affiche 0

Compter la longueur totale d'une chaîne avec len

Si l'on cherche à connaître la longueur totale, il faut utiliser la fonction len. Elle calcule le nombre de caractères dans la chaîne, incluant les espaces et autres caractères blancs. Attention, il s'agit d'une fonction standard !

Paramètre Type Description
chaîne Chaîne de caractères La chaîne pour laquelle calculer la longueur
Retour Entier Le nombre de caractères dans la chaîne
Exemple d'utilisation de la fonction len
chaine = "Bonjour le monde!"
print(len(chaine))  # Affiche 17

Trouver une sous-chaîne dans une chaîne avec find

La fonction find détermine si une sous-chaîne est contenue dans une chaîne et retourne la position de la première occurrence.

Paramètre Type Description
sous-chaîne Chaîne de caractères La sous-chaîne recherchée
Retour Entier La position de la première occurrence ou -1 si la sous-chaîne n'est pas contenue dans la chaîne.
Exemple d'utilisation de la fonction find
1
2
3
4
chaine = "Bonjour le monde!"
print(chaine.find("o"))     # Affiche 1
print(chaine.find("our"))   # Affiche 4
print(chaine.find("??"))     # Affiche -1 

Remplace une sous-chaîne par une autre avec replace

La fonction replace permet de remplacer des valeurs par d'autres dans une chaîne de caractères.

Paramètre Type Description
recherche Chaîne de caractères La sous-chaîne recherchée.
remplacement Chaîne de caractères La sous-chaîne à utiliser pour remplacer les valeurs.
Retour Chaîne de caractères La chaîne de caractère après avoir effectué le remplacement.
Exemple d'utilisation de la fonction replace
1
2
3
4
5
chaine = "Bonjour le monde!"
print(chaine.replace("o", "y"))     # Affiche «Bynjyur le mynde!»
print(chaine.replace("our", "eu"))  # Affiche «Bonjeu le monde!»
print(chaine.replace("our", ""))    # Affiche «Bonj le monde!»
print(chaine.replace("x", "ks"))    # Affiche « Bonjour le monde!»

Un premier programme

Demandez à une personne utilisatrice de saisir deux nombres entiers ou décimaux dans la console, multipliez ces nombres et affichez le produit obtenu, avec au plus deux décimales.

Solution
Calculatrice
# Saisie des informations
print("Entrez le premier nombre a multiplier :")
operande_gauche = float(input())

print("Entrez le second nombre a multiplier :")
operande_droite = float(input())

# Calcul et affichage
produit = operande_gauche * operande_droite
print("Le produit est : " + str(round(produit, 2)))

Exercices

Page 27 et suivantes

Recommandés : 1.7, 1.8, 1.11, 1.12, 1.17 Supplémentaires : 1.18, 1.21, 1.22