Un cap pour ce chapitre
Ce que vous saurez faire
- Parcourir une chaîne par caractères ou indices
- Construire un texte transformé sans modifier la chaîne initiale
- Définir précisément les règles d’une comparaison textuelle
Une chaîne est une séquence ordonnée
Une chaîne Python de type str contient du texte. Pour mot = "radar", len(mot) vaut 5, mot[0] vaut "r" et mot[2] vaut "d". Chaque accès renvoie encore une chaîne, même si elle ne contient qu’un caractère. Les espaces et la ponctuation font partie du texte et sont comptés. Une chaîne vide "" possède une longueur nulle et aucun indice valide. Les exemples simples de ce chapitre évitent les subtilités des caractères combinés ; leur étude relève de l’encodage et rappelle qu’un symbole visible n’est pas toujours un seul point de code.
Une chaîne contenant un espace n’est pas vide : elle possède un caractère. Le test de longueur distingue donc "" et " ". Si une application veut traiter les espaces comme une absence de contenu, elle doit annoncer et effectuer cette transformation.
Parcourir pour compter ou chercher
Pour compter les occurrences de "a", on initialise un compteur à zéro et on l’incrémente lorsque le caractère courant correspond. Un parcours direct for caractere in mot convient, car on ne demande pas les positions. Pour rechercher le premier indice d’une lettre, il faut en revanche conserver ou parcourir les indices. Le contrat doit définir le résultat lorsque la lettre est absente. La distinction entre majuscules et minuscules compte aussi : "A" et "a" sont différentes pour une comparaison exacte. Une normalisation éventuelle doit être annoncée.
Compter une lettre demande de préciser la casse et l’unité observée. Dans "AaA", le comptage exact de a donne un ; après passage en minuscules, il donne trois. Les deux résultats peuvent être corrects pour deux contrats différents.
Construire plutôt que modifier une case
Comme les tuples, les chaînes Python sont immuables : mot[0] = "R" est interdit. Pour produire un texte transformé, on construit une nouvelle chaîne. Un exemple simple initialise resultat à "", parcourt les caractères et concatène ceux que l’on veut garder. La variable résultat change d’association, tandis que la chaîne initiale demeure inchangée. La concaténation répétée est facile à lire sur de petits textes ; d’autres techniques deviennent utiles pour de gros volumes. Les tranches sont des raccourcis possibles, mais elles ne sont pas exigibles en Première pour expliquer les mécanismes.
resultat = ""
for caractere in "n s i":
if caractere != " ":
resultat = resultat + caractere
print(resultat)Une réaffectation du nom initial est possible après construction. Écrire mot = resultat fait désormais désigner la chaîne transformée par ce nom ; cela ne modifie pas rétroactivement une copie de l’ancienne chaîne sauvegardée ailleurs.
Préciser ce que signifie un mot miroir
Un palindrome se lit de la même manière dans les deux sens. Pour un mot exact, on compare les positions i et len(mot) - 1 - i, jusqu’au milieu. Pour une phrase, il faut décider si l’on ignore espaces, ponctuation, accents ou casse. « Radar » n’est pas égal à son renversement exact à cause de la majuscule, mais le devient après conversion en minuscules. Un algorithme peut être parfaitement correct pour un contrat et sembler faux pour un autre. Définir la normalisation avant le traitement évite cette confusion.
Pour une longueur n, les indices symétriques sont i et n moins un moins i. Leur somme reste n moins un. Il suffit de comparer la moitié entière des paires : le caractère central d’une longueur impaire se comparerait à lui-même.
Vérifier un palindrome avec une trace courte
Pour « kayak », les paires d’indices sont zéro et quatre, puis un et trois. Les caractères k et k coïncident, puis a et a également. Le y central ne nécessite pas de comparaison avec une autre case. Pour « capot », la première paire c et t suffit déjà à constater un échec.
Une fonction peut s’arrêter dès la première différence. L’atelier montre toutes les paires pour expliquer les écarts, ce qui constitue un choix de visualisation différent. Les chaînes de longueur zéro ou un sont acceptées par la définition « aucune paire différente », puisqu’elles ne contiennent aucune paire à comparer.
Construire une normalisation annoncée
Pour « A a », la comparaison exacte échoue parce que A diffère de a. Une normalisation qui retire les espaces et passe en minuscules produit « aa », qui est un palindrome. Une règle retirant seulement les espaces produirait « Aa » et resterait insuffisante.
Les accents et la ponctuation ne disparaissent pas automatiquement avec les espaces. Il faut choisir chaque transformation selon le besoin. Une vérification de mot exact et une vérification de phrase normalisée peuvent partager le même algorithme de paires, tout en recevant des chaînes préparées différemment. Séparer préparation et comparaison rend le résultat plus facile à expliquer.
À vous de faire varier les choses
Ce mot se lit-il dans les deux sens ?
Choisissez un texte et la règle de comparaison. Examinez chaque paire symétrique plutôt que seulement le verdict.
Lire le résultat de l’expérience initiale
Une différence empêche le palindrome
Texte examiné : "Radar". Chaque paire compare deux positions à la même distance des extrémités.
| Indice gauche | Caractère | Indice droit | Caractère | Résultat |
|---|---|---|---|---|
| 0 | R | 4 | r | Différence |
| 1 | a | 3 | a | Accord |
Une activité de texte commence par une définition précise de l’égalité attendue. Les paires montrent ensuite pourquoi le résultat est obtenu.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Compter vraiment le texte
Pour texte = "NSI !", donnez len(texte), texte[3] et texte[4].
Indice 1
L’espace est un caractère du texte.
Indice 2
Numérotez les positions à partir de zéro.
Comprendre la correction
La longueur vaut 5. Les indices 0, 1 et 2 contiennent N, S et I ; texte[3] contient l’espace ; texte[4] contient le point d’exclamation. Une longueur qui ne compterait que les lettres répondrait à une autre question et demanderait un filtre explicite.
Construire un filtre
On parcourt "banane" et on ajoute au résultat tous les caractères différents de "a". Donnez les résultats partiels puis le résultat final.
Indice 1
Le résultat commence par une chaîne vide.
Indice 2
Les a n’ajoutent rien mais ne suppriment pas les caractères déjà conservés.
Comprendre la correction
Après b, le résultat vaut "b" ; après le premier a, il reste "b" ; après n, il vaut "bn" ; après le second a, il reste "bn" ; puis "bnn" et enfin "bnne". Le résultat final est donc "bnne". La chaîne originale n’est pas modifiée.
Une case non modifiable
Un élève écrit mot = "code" puis mot[0] = "m" pour obtenir "mode". Pourquoi cela échoue-t-il ? Donnez une méthode sans tranche.
Indice 1
La chaîne ne permet pas l’affectation d’une composante.
Indice 2
Construisez une nouvelle chaîne en choisissant le caractère produit pour chaque indice.
Comprendre la correction
L’affectation échoue parce qu’une chaîne est immuable. On peut initialiser resultat à "", parcourir les indices et ajouter "m" lorsque i vaut 0, sinon mot[i]. Le résultat construit est "mode". On peut ensuite l’affecter à mot si l’on souhaite que ce nom désigne la nouvelle chaîne.
Un palindrome selon quelle règle ?
Comparez "Radar" et "radar" avec une vérification exacte. Puis expliquez la décision après conversion en minuscules.
Indice 1
Le premier et le dernier caractère doivent être égaux.
Indice 2
La normalisation change les données examinées.
Comprendre la correction
"Radar" échoue en comparaison exacte car "R" diffère de "r". "radar" réussit : r correspond à r, a à a et le d central n’a pas de partenaire distinct. Après conversion en minuscules, les deux textes deviennent "radar". Le résultat dépend donc d’une règle annoncée, pas d’une correction improvisée après le test.
Compter puis normaliser
On étudie "A aA". Donnez la longueur exacte et le nombre de a minuscules. Retirez ensuite les espaces puis passez en minuscules. Donnez le texte obtenu, sa longueur et le nouveau nombre de a.
Indice 1
Un espace compte dans la longueur initiale.
Indice 2
Les majuscules ne sont pas égales aux minuscules avant transformation.
Comprendre la correction
La longueur exacte vaut quatre et un seul a est minuscule. Après suppression de l’espace et passage en minuscules, on obtient "aaa", de longueur trois et contenant trois a. Le comptage change parce que le texte examiné a été transformé selon une règle explicite.
Des paires sans doublon
Pour « ressasser », donnez les paires d’indices à examiner et le nombre de comparaisons si toutes sont effectuées. Expliquez le traitement du caractère central et comparez avec une chaîne vide.
Indice 1
Le mot comporte neuf caractères.
Indice 2
La somme de deux indices symétriques vaut huit.
Comprendre la correction
Les paires sont (0,8), (1,7), (2,6) et (3,5). Elles comparent r/r, e/e, s/s et s/s : quatre comparaisons suffisent. L’indice quatre porte le caractère central a. Le vide possède zéro paire et satisfait la définition retenue, sans qu’aucun accès ne soit effectué.
Remplacer sans modifier une case
On veut remplacer chaque chiffre "1" par le mot "un" dans "1+1=2", en conservant les autres caractères. Décrivez une construction par parcours, donnez le résultat et sa longueur. Le résultat doit-il avoir la même longueur que l’entrée ?
Indice 1
Chaque caractère peut produire un texte de plusieurs caractères.
Indice 2
Le résultat commence par une chaîne vide.
Comprendre la correction
On parcourt les caractères ; pour "1", on ajoute "un", sinon on ajoute le caractère courant. Le résultat est "un+un=2", de longueur sept au lieu de cinq. Une transformation de texte ne conserve donc pas nécessairement la longueur. La chaîne initiale reste inchangée jusqu’à une éventuelle réaffectation du nom.
Les erreurs qui méritent un détour
- Oublier les espaces dans la longueur
- Les espaces sont des caractères. Compter seulement les lettres nécessite une règle différente.
- Changer la définition du problème pendant la correction
- Fixez avant le calcul ce que l’on ignore ou conserve : casse, espaces, ponctuation et accents.
La fiche à garder
L’essentiel à retenir
- Une chaîne se parcourt comme une séquence.
- Transformer une chaîne construit une nouvelle valeur.
- La comparaison textuelle dépend des règles de normalisation.
Cette notion au bac
Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.
- Bac 2026 · Banque nationale · Sujet 3 : Calendrier, années bissextiles et fichier iCalendar
- Bac 2026 · Banque nationale · Sujet 15 : Cabinet vétérinaire, jointures SQL et dernières vaccinations
- Bac 2026 · Banque nationale · Sujet 18 : Températures en Polynésie, anomalies et décennies
- Bac 2026 · Banque nationale · Sujet 22 : Code matriciel simplifié, binaire et table ASCII
Le prochain pas
Retrouver le catalogue de Première
Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
