Piège 1 : input() te donne toujours du TEXTE
Quoi que la personne tape, input() renvoie une chaîne de caractères, jamais un nombre. Même si elle tape 5, Python reçoit le texte "5". Et on ne fait pas de maths avec du texte.
Fais comme si tu tapais une valeur, puis exécute :
Sans conversion
Avec int(...)
✅ La parade
Enveloppe l'input() dans int(...) pour un entier, ou float(...) pour un nombre à virgule : age = int(input("Âge ? ")). À partir de là, tu peux calculer.
Piège 2 : = n'est pas ==
Deux symboles qui se ressemblent mais ne font pas du tout la même chose :
| Symbole | Rôle | Exemple |
|---|---|---|
= | Ranger une valeur dans une variable (assigner) | age = 5 |
== | Comparer : « est-ce égal ? » (donne Vrai ou Faux) | age == 5 |
# On veut TESTER si age vaut 18 # Faux ami : un seul = dans un if if age = 18: # → SyntaxError # Correct : deux == pour comparer if age == 18: # → teste l'égalité, ouf
Truc mnémo : un seul =, « je pose une valeur ». Deux ==, « je pose une question ». Dans un if ou un while, c'est presque toujours == qu'il te faut.
Le piège bonus : les guillemets courbes
Un troisième classique, surtout quand on copie du code depuis un document : les guillemets « courbes » " " au lieu des droits ", qui déclenchent une SyntaxError. Il a son propre truc, avec un nettoyeur :