Si vous demandez à Python d'utiliser une variable qui n'est pas définie, vous obtenez une erreur.
NameError
Comme vous pouvez le constater, nous obtenons un message d'erreur disant NameError: name 'trouble' is not defined. Quelquefois, de telles erreurs sont dues à des erreurs de frappes : si vous définissez une variable adresse=32, et ensuite print(adrese), le même type d'erreur est généré.
SyntaxError
Un autre type d'erreur fréquent est généré quand vous écrivez une instruction qui n'a pas de sens pour python.
Par exemple, si vous inversez le sens de l'instruction =.
La première ligne est bien mais la deuxième génère une erreur : Python pense que la deuxième ligne 4 = x essaye de changer la valeur de 4 mais vous n'êtes autorisé qu'à changer la valeur d'une variable, et 4 n'est pas une variable. Si A = B et B = A représentent la même chose en mathématiques, ce n'est pas le cas en programmation.
Autre exemple, si vous omettez quelques chose, par exemple, une parenthèse :
L'instruction print(x) est incomplète, il manque la parenthèse fermante. L'interpréteur Python cherche la parenthèse manquante et constate l'erreur seulement quand il passe à la ligne suivante. Pour cette raison, il indique l'erreur à la ligne juste en dessous et non pas à l'endroit ou la parenthèse manque.
IndentationError
On s'attendrait que le programme affiche 5, mais il génère une erreur. Examinons-la. Il faudra d'ailleurs prendre l'habitude de décrypter les messages d'erreur pour pouvoir comprendre l'erreur commise. Corrigez l'erreur pour que le code s'exécute correctement.
TypeError
On s'attendrait que le programme affiche 0.5, mais il génère une erreur.
Littéralement : Erreur de type : les types des opérandes pour la division ne sont pas supportés : str et int.
En clair : vous effectuez la division d'une chaine par un entier, cela n'a pas de sens et n'est pas supporté par l'interpréteur.
Exercices
Ceci est un échauffement pour vous familiariser avec les variables.
Anatomie Python
Désordre
programme d'échange
Voici un tout premier algorithme, qui est très fréquemment utilisé. Le problème est d'échanger les contenus de deux variables, nommons les x et y.
Par exemple, initialement on a :
x = 4
y = 3
Et on souhaite modifier l'état pour parvenir à :
x = 3
y = 4
On pourrait songer à écrire que x prend la valeur de y et y prend la valeur de x. C'est ce que fait le code ci-dessous, mais vous allez pouvoir constater que celà ne va pas fonctionner....
La première ligne de votre programme pourrait être
tetes = 1 * personnes
comme le nombre de têtes est égal au nombre de personnes.
Notez que le programme définit quatre nouvelles variables. Assurez-vous que les lignes soit dans l'ordre afin que chaque nouvelle variable soit définie avant d'être utilisée.
Vous n'avez pas besoin d'utiliser d'arithmétique (+-*/) pour résoudre ce problème. Vous avez seulement besoin des variables et de l'instruction =. Vous pouvez définir de nouvelles variables avec des noms à choix si vous en avez besoin.
Commencez par comprendre ce qui se passe lorsqu'on exécute le code fournit au départ. Pourquoi le résultat erroné que l'on observe se produit-il ?
Il y a un problème. Par exemple, disons que le correcteur commence par définir x égal à 10 et y égal à 99. Si on exécute le programme, après la ligne x = y, on change la valeur de x (et pas celle de y) qui devient 99, et on a donc à la fois x et y qui sont égaux à 99.
La seconde ligne n'a alors pas d'effet. Comment peut-on garder la valeur originale de x quelque part pour pouvoir la mettre dans y plus tard ?
Vous pourriez ajouter une ligne comme xOriginal = x, pour stocker la valeur originale de x. Ensuite, vous pouvez attribuer x = y. Et enfin, attribuer à y la valeur original de x.