La méthode en 6 étapes — un exemple travaillé
C'est une façon répétable d'attaquer n'importe quel problème sans se bloquer. Regardez les six étapes se dérouler sur un classique — une fois vue, vous pouvez copier la forme à chaque fois.
L'idée, en une ligne
Ne vous précipitez pas sur le code. Comprenez le problème, essayez une idée lente mais simple, rendez-la plus rapide, puis écrivez-la — dans cet ordre.
1 · Reformuler
Redites-le avec vos propres mots : étant donné du texte, renvoyer le premier caractère (en lisant de gauche à droite) dont le compte dans toute la chaîne est exactement un. Entrée : une chaîne. Sortie : un caractère, ou un signal s'il n'y en a aucun.
2 · Exemples
Écrivez-en quelques-uns à la main, dont un délicat :
"swiss"→"w"(s se répète ; w est le premier qui ne se répète pas)"aabb"→ aucun (rien n'est unique) ← le cas limite qui vaut la peine d'être noté"z"→"z"
3 · Force brute
Prenez l'idée lente et évidente d'abord : pour chaque caractère, parcourez toute la chaîne et comptez combien de fois il apparaît ; renvoyez le premier dont le compte est 1. Ça marche — même si ça re-parcourt beaucoup.
4 · Optimiser
Tout ce re-parcours est un effort gaspillé. À la place, comptez chaque caractère une fois dans un dict, puis faites une seconde passe de gauche à droite et renvoyez le premier caractère dont le compte stocké est 1. Deux passes au lieu de plusieurs.
5 · Coder
def first_unique(text):
# Step 4: count each character once
counts = {}
for ch in text:
counts[ch] = counts.get(ch, 0) + 1
# Second pass, left to right: first with count 1 wins
for ch in text:
if counts[ch] == 1:
return ch
return None # edge case: nothing was unique
print(first_unique("swiss")) # w
print(first_unique("aabb")) # None
print(first_unique("z")) # z6 · Tracer
Vérifiez-le à la main. Pour "swiss" les comptes sont s→3, w→1, i→1. Seconde passe : s (3) on saute, w (1) → on renvoie "w". Ça correspond à l'exemple que vous avez écrit à l'étape 2 — cette correspondance est votre preuve.
La méthode maison — reformuler, exemples, force brute, optimiser, coder, tracer
Toutes les leçons de Fondations Python & la méthode en 6 étapes
- Variables, types, structures de contrôle & fonctions
- Listes, dicts, ensembles & tuples — quand et pourquoi
- Motifs de manipulation de chaînes
- La méthode en 6 étapes — un exemple travaillé
- Traçage à la main — là où la logique grandit vraiment