S1-2 les variables

Des erreurs fréquentes

Si vous demandez à Python d'utiliser une variable qui n'est pas définie, vous obtenez une erreur.

NameError

Exemple : Une variable non définie

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 =.

Exemple : SyntaxError: can't assign to literal
Cherchez l'erreur...

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 :

Exemple : SyntaxError:
Cherchez l'erreur...
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

Exercice de code : IndentationError: unexpected indent
Exécutez ce code et corrigez le pour qu'il s'exécute sans erreur...

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

Exercice de code : TypeError: ...
Exécutez ce code et corrigez le pour qu'il s'exécute sans erreur...

On s'attendrait que le programme affiche 0.5, mais il génère une erreur.

Lisez bien l'erreur et comprenez la :

TypeError: unsupported operand type(s) for /: 'str' and 'int'
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
Exercice de code : L'anatomie Python
Ecrivez un code qui compte les têtes, les épaules, les genoux et les orteils à une fête. Le correcteur va automatiquement définir une variable personnes pour vous, elle contiendra le nombre de personnes à la fête.
Votre code doit définir quatre variables :
  • une appelée tetes
  • une appelée epaules
  • une appelée genoux
  • et une appelée orteils
égales au nombre de têtes, épaules, genoux et orteils à la fête. Votre programme ne doit pas générer de sortie. Cliquez ici pour un indice.

Désordre
Exercice mêlé : Calculette vitesse
Vous assistez à une course cycliste qui monte et descend une colline. Le correcteur automatique définira quatre variables pour vous : distanceMontee et distanceDescente donnent la distance (en km) des deux parties de la course, et tempsMonte et tempsDescente donne le temps (en minutes) du temps pris pour compléter chaque partie de la cours. Ecrivez un programme qui indique la vitesse moyenne (en km/min) pour toute la course.
Cliquez et glissez avec la souris pour réarranger les lignes.
Cliquez ici pour un indice si vous êtes bloqué
  • print(vitesseMoyenne)
  • distanceTotale = distanceMontee + distanceDescente
  • vitesseMoyenne = distanceTotale / tempsTotal
  • tempsTotal = tempsMonte + tempsDescente

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....

Exercice de code : Programme d'échange
Le correcteur va automatiquement définir les variables x et y pour vous, avec des valeurs numériques.

Vous devez modifier le code pour réellement échanger les valeurs :

la valeur de x après que votre code soit exécuté doit être égale à la valeur que y avait avant que votre code s'exécute, et la valeur de y après que votre code s'exécute doit être celle de x avant que votre code s'exécute.

Cliquez sur chaque indice si vous voulez les lire.