Prérequis : ce chapitre complète le chapitre 06 (Chaînes de caractères). Il utilise la boucle
for, présentée dans le chapitre 05 (Boucles). Si vous n’avez pas encore vu les boucles, vous pouvez revenir à la section « Parcourir une chaîne » plus tard.
On peut parcourir les caractères d’une chaîne avec une boucle for :
mot = "NSI"
for lettre in mot:
print(lettre)
N
S
I
Pour avoir à la fois l’indice et le caractère, on utilise enumerate() :
mot = "NSI"
for i, lettre in enumerate(mot):
print(f"Indice {i} : {lettre}")
Indice 0 : N
Indice 1 : S
Indice 2 : I
Exemple concret. Compter le nombre de voyelles dans un mot :
mot = "programmation"
compteur = 0
for lettre in mot:
if lettre in "aeiouy":
compteur += 1
print(f"'{mot}' contient {compteur} voyelles")
'programmation' contient 5 voyelles
Les méthodes ne modifient pas la chaîne d’origine (rappel : les chaînes sont immuables). Elles renvoient une nouvelle chaîne.
mot = "Bonjour"
print(mot.upper()) # BONJOUR
print(mot.lower()) # bonjour
print(mot.capitalize()) # Bonjour (première lettre en majuscule)
print(mot) # Bonjour (l'original n'a pas changé)
Application. Comparer deux chaînes sans tenir compte de la casse :
saisie = "OUI"
if saisie.lower() == "oui":
print("L'utilisateur a confirmé")
phrase = "Python est un langage puissant"
print(phrase.count("an")) # 2
print(phrase.find("langage")) # 14 (indice du début)
print(phrase.find("Java")) # -1 (non trouvé)
print(phrase.replace("puissant", "élégant")) # Python est un langage élégant
La méthode find() renvoie l’indice de la première occurrence, ou -1 si la sous-chaîne n’est pas trouvée. La méthode replace() remplace toutes les occurrences.
La méthode strip() supprime les espaces (et les retours à la ligne) en début et en fin de chaîne. C’est très utile pour nettoyer les saisies utilisateur ou les lignes lues dans un fichier :
saisie = " Alice "
print(saisie.strip()) # "Alice" (supprime des deux côtés)
print(saisie.lstrip()) # "Alice " (supprime à gauche)
print(saisie.rstrip()) # " Alice" (supprime à droite)
Ces méthodes renvoient un booléen (True ou False) :
print("42".isdigit()) # True (ne contient que des chiffres)
print("abc".isalpha()) # True (ne contient que des lettres)
print("abc123".isalnum()) # True (lettres et chiffres uniquement)
print("HELLO".isupper()) # True
print("hello".islower()) # True
Application. Vérifier qu’une saisie est bien un nombre avant de la convertir :
saisie = input("Entrez un nombre : ")
if saisie.isdigit():
nombre = int(saisie)
print(f"Le double est {nombre * 2}")
else:
print("Ce n'est pas un nombre valide")
| Méthode | Rôle | Exemple |
|---|---|---|
s.upper() |
Tout en majuscules | "nsi".upper() → "NSI" |
s.lower() |
Tout en minuscules | "NSI".lower() → "nsi" |
s.capitalize() |
Première lettre en majuscule | "nsi".capitalize() → "Nsi" |
s.strip() |
Supprimer les espaces aux extrémités | " ok ".strip() → "ok" |
s.find(x) |
Indice de la première occurrence (-1 si absent) | "abc".find("b") → 1 |
| Méthode | Rôle | Exemple |
|---|---|---|
s.count(x) |
Nombre d’occurrences | "abab".count("ab") → 2 |
s.replace(a, b) |
Remplacer toutes les occurrences | "abc".replace("b", "X") → "aXc" |
s.isdigit() |
Ne contient que des chiffres ? | "42".isdigit() → True |
s.isalpha() |
Ne contient que des lettres ? | "abc".isalpha() → True |
s.startswith(x) |
Commence par x ? |
"Python".startswith("Py") → True |
s.endswith(x) |
Finit par x ? |
"fichier.csv".endswith(".csv") → True |