<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/SNT/1. Variables et affectation</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Premier chapitre de programmation : ce qu'est une variable, le sens du<br/>
signe égal, la réaffectation, l'ordre des instructions dans une<br/>
séquence, la copie d'une valeur, l'échange de deux variables et<br/>
l'écriture raccourcie des mises à jour.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q01 : Une variable mise à jour</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un compte de réseau social gagne des abonnés.</p>
<p>`<code>python<br/>
abonnes = 250<br/>
abonnes = abonnes + 30<br/>
</code></p>
<p>Que vaut abonnes` après ces deux lignes ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le signe = n'est pas une égalité mais une affectation : on calcule<br/>
la valeur à droite, puis on la range dans la variable nommée à gauche.<br/>
abonnes = abonnes + 30 se lit « abonnes prend sa valeur plus 30 ».</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, car abonnes apparaît des deux côtés</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une écriture très courante. Python calcule<br/>
d'abord la droite, avec la valeur actuelle, puis affecte le<br/>
résultat à gauche.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>250</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la deuxième ligne remplace bien l'ancienne valeur. Une<br/>
variable garde la dernière valeur qu'on lui a affectée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>30</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 30 est ce qu'on ajoute, pas la nouvelle valeur. Le<br/>
calcul du membre de droite utilise l'ancienne valeur 250.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>280</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la deuxième ligne calcule d'abord abonnes + 30<br/>
avec la valeur du moment, 250, puis range le résultat 280 dans<br/>
la variable.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q02 : Un nom de variable correct</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme compte des photographies. Lequel de ces noms de<br/>
variable est accepté par Python ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un nom de variable commence par une lettre ou un tiret bas, puis<br/>
enchaîne lettres, chiffres et tirets bas, sans espace ni tiret. Un nom<br/>
parlant comme nombre_de_photos rend le programme lisible.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>nombre-de-photos</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le tiret est le signe de la soustraction. Python lirait<br/>
nombre - de - photos, trois variables à soustraire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2eme_photo</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un nom de variable ne peut pas commencer par un<br/>
chiffre. photo_2 serait accepté.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>nombre_de_photos</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : lettres, chiffres et tiret bas, sans commencer<br/>
par un chiffre. C'est la forme habituelle des noms en Python.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>nombre de photos</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un nom ne contient pas d'espace. Python verrait trois<br/>
mots séparés et signalerait une erreur de syntaxe.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q03 : Une variable sans valeur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
largeur = 800<br/>
print(largeur * hauteur)<br/>
</code>`</p>
<p>Que se passe-t-il à l'exécution ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une variable n'existe qu'à partir de sa première affectation. Lire une<br/>
variable jamais définie déclenche une erreur NameError, qui indique<br/>
le nom fautif.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 800, la multiplication est ignorée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python n'ignore jamais une partie d'un calcul. Il ne<br/>
peut pas multiplier par une variable qui n'existe pas et s'arrête.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche le texte largeur * hauteur tel quel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans guillemets, largeur * hauteur est un calcul à<br/>
effectuer, pas un texte à afficher.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Python signale une erreur, hauteur n'a jamais reçu de valeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le message est NameError: name 'hauteur' is not<br/>
defined. Il faut affecter une valeur à hauteur avant de s'en<br/>
servir.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 0, une variable inconnue vaut 0 par défaut</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une variable n'a aucune valeur par défaut. Tant qu'on<br/>
ne lui en a pas affecté une, elle n'existe pas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q04 : L'ordre des instructions</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
prix = 20<br/>
prix = prix * 2<br/>
prix = prix - 5<br/>
print(prix)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un programme est une séquence : chaque instruction s'exécute après la<br/>
précédente, avec les valeurs du moment. Changer l'ordre de deux lignes<br/>
change en général le résultat.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>30</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 30 correspondrait à soustraire d'abord, puis doubler.<br/>
Le programme fait l'inverse, ligne après ligne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>40</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 40 est la valeur après la deuxième ligne. La troisième<br/>
ligne enlève encore 5 avant l'affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>15</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 15 serait 20 moins 5, sans le doublement. Les<br/>
trois lignes s'exécutent, dans l'ordre écrit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>35</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 20 devient 40 après le doublement, puis 35<br/>
après la soustraction. Les instructions s'exécutent dans l'ordre.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q05 : Une valeur copiée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
a = 5<br/>
b = a<br/>
a = 7<br/>
print(b)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation copie une valeur, pas un lien. Après b = a, les deux<br/>
variables ont la même valeur, mais chacune vit sa vie : changer l'une<br/>
ne change pas l'autre.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : b n'est pas lié à a pour toujours. Il a reçu une<br/>
copie de sa valeur au moment de l'affectation, avant le changement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>12</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune addition n'est écrite. b = a copie une valeur,<br/>
elle n'additionne rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>a</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans guillemets, a désigne la variable, et b = a<br/>
range sa valeur dans b, pas son nom.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : b = a copie la valeur de a à cet instant, 5.<br/>
Modifier a ensuite ne touche pas b.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q06 : Un échange raté</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On voudrait échanger les deux coordonnées d'un point.</p>
<p>`<code>python<br/>
x = 3<br/>
y = 8<br/>
x = y<br/>
y = x<br/>
print(x, y)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation écrase l'ancienne valeur sans la garder. Pour échanger<br/>
deux variables, il faut d'abord mettre l'une d'elles à l'abri dans une<br/>
troisième variable.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>8 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : x = y donne 8 à x, et l'ancienne valeur 3<br/>
est perdue. Puis y = x copie ce 8 dans y.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux affectations modifient bien les variables.<br/>
Après x = y, x vaut 8.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première affectation copie y dans x, pas<br/>
l'inverse. C'est la valeur 8 qui se propage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'échange espéré, mais la troisième ligne a<br/>
effacé la valeur 3 de x avant qu'on puisse la donner à y.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q07 : L'échange avec une variable de secours</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>x vaut 3 et y vaut 8. Quelle suite d'instructions échange leurs<br/>
valeurs, pour obtenir x égal à 8 et y égal à 3 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'échange classique tient en trois affectations : sauvegarder une<br/>
valeur dans une variable temporaire, écraser, puis restituer. L'ordre<br/>
des trois lignes est ce qui compte.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>tmp = x, puis x = y, puis y = tmp</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : tmp conserve 3, x reçoit 8, puis y reçoit<br/>
le 3 mis à l'abri. Rien n'est perdu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>tmp = x, puis y = tmp, puis x = y</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : y = tmp écrase le 8 avec 3 avant que x l'ait reçu.<br/>
Les deux variables finissent à 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x = tmp, puis tmp = y, puis y = x</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tmp n'a encore aucune valeur à la première ligne, le<br/>
programme s'arrête sur une erreur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x = y, puis y = x</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après x = y, la valeur 3 n'existe plus nulle part. Les<br/>
deux variables finissent à 8.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q08 : Trois modifications successives</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un thermostat corrige une consigne de température.</p>
<p>`<code>python<br/>
consigne = 12<br/>
consigne = consigne + 3<br/>
consigne = consigne - 5<br/>
consigne = consigne * 2<br/>
print(consigne)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour suivre un programme, on tient à jour la valeur de chaque variable<br/>
ligne après ligne : c'est une trace. Ici, la consigne passe par 12,<br/>
15, 10 et 20.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>14</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 14 serait le double de 7, c'est-à-dire de<br/>
12 moins 5, comme si la ligne qui ajoute 3 n'existait pas.<br/>
Aucune ligne n'est sautée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 12 devient 15, puis 10, puis<br/>
20. Chaque ligne repart de la valeur laissée par la précédente.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 est la valeur après la soustraction. La<br/>
dernière ligne la double encore.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>24</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 24 serait le double de 12, comme si les lignes<br/>
du milieu n'existaient pas. Elles s'exécutent toutes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q09 : L'écriture raccourcie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
score = 40<br/>
score += 10<br/>
score -= 5<br/>
print(score)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>x += 3 est un raccourci pour x = x + 3 ; de même pour -=, *=<br/>
et /=. On lit toujours « la variable prend son ancienne valeur<br/>
modifiée ».</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>50</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 50 est la valeur après la deuxième ligne. La<br/>
troisième enlève encore 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>55</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : -= retranche, il n'ajoute pas. Après 50, le<br/>
score descend à 45.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>45</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : score += 10 signifie score = score + 10, et<br/>
score -= 5 signifie score = score - 5. 40 devient<br/>
50 puis 45.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, l'opérateur += n'existe pas en Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : += et -= existent bien. Ce sont des raccourcis très<br/>
utilisés pour mettre une variable à jour.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q10 : Le sens du signe égal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Une seule de ces lignes provoque une erreur. Laquelle ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation se lit de droite à gauche : la valeur calculée à<br/>
droite est rangée dans la variable nommée à gauche. Le membre de<br/>
gauche doit donc être un nom de variable.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>5 = nombre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : à gauche du signe =, il faut le nom de la<br/>
variable qui reçoit. On ne peut pas donner une valeur au nombre 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>nombre = 5 + 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python calcule 10 puis le range dans nombre. Le membre<br/>
de droite peut être n'importe quel calcul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>nombre = nombre + 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette ligne est correcte dès que nombre a une valeur.<br/>
Elle l'augmente de 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>nombre = 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une affectation ordinaire, nombre reçoit 5.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q11 : Une valeur écrasée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme ajuste la luminosité d'un pixel.</p>
<p>`<code>python<br/>
pixel = 120<br/>
pixel = 255<br/>
pixel = pixel - 55<br/>
print(pixel)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une nouvelle affectation efface l'ancienne valeur, sans en garder de<br/>
trace. Seule la dernière valeur affectée compte pour la suite du<br/>
programme.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>255</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 255 est la valeur après la deuxième ligne. La troisième<br/>
la diminue de 55 avant l'affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>65</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 65 serait 120 moins 55. Mais la valeur 120 a<br/>
été écrasée par 255 avant la soustraction.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>200</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la deuxième ligne remplace 120 par 255, et la<br/>
troisième enlève 55, ce qui donne 200.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>175</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 175 serait 120 plus 55. Aucune addition<br/>
n'apparaît, et la valeur de départ a été remplacée.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q12 : Deux variables qui dépendent l'une de l'autre</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
a = 2<br/>
b = a + 3<br/>
a = b * 2<br/>
b = a - b<br/>
print(a, b)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans une trace, on met à jour une variable à la fois, avec les valeurs<br/>
des autres au moment précis de la ligne. Écrire un tableau des<br/>
valeurs ligne par ligne évite les confusions.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 serait 10 moins 2, avec l'ancienne valeur de<br/>
a à la place de b. Or c'est b, qui vaut 5, que l'on<br/>
soustrait à la dernière ligne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>10 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : b vaut 5, puis a vaut 10, puis b vaut<br/>
10 moins 5, soit 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4 -1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne multiplie b par 2, pas a. Elle<br/>
donne 10 à a, et non 4, et la dernière ligne calcule<br/>
alors 10 moins 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne modifie a, qui passe de 2 à 10.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q13 : Majuscule ou minuscule</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
Latitude = 45.7<br/>
print(latitude)<br/>
</code>`</p>
<p>Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Python distingue majuscules et minuscules dans les noms. Pour éviter<br/>
les erreurs, on écrit les noms de variables en minuscules, avec des<br/>
tirets bas entre les mots.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Python signale une erreur, latitude n'existe pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les noms distinguent majuscules et minuscules.<br/>
Seule Latitude a été définie, latitude provoque une erreur<br/>
NameError.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche le mot Latitude, sans sa valeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print affiche la valeur d'une variable, jamais son<br/>
nom. Et ici, la variable demandée n'existe pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 0.0, valeur par défaut d'une variable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a pas de valeur par défaut. Une variable jamais<br/>
affectée n'existe pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 45.7, la casse des lettres n'a pas d'importance</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour Python, Latitude et latitude sont deux noms<br/>
différents. Le second n'a jamais reçu de valeur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q14 : Une ligne qui ne change rien</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
x = 4<br/>
x = x<br/>
x = x * x<br/>
print(x)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La ligne x = x est inutile mais correcte : elle affecte à x sa<br/>
propre valeur. Ce qui compte, c'est la dernière ligne, qui calcule<br/>
le carré.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>44</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : x * x multiplie deux nombres, il ne colle pas deux<br/>
chiffres. Le résultat est 16.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : x * x est une multiplication, 4 fois 4, et non une<br/>
addition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>16</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : x = x remet dans x sa propre valeur, sans<br/>
effet. Puis x * x vaut 4 fois 4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne modifie bien x, qui devient 16.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q15 : Afficher avant de modifier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
niveau = 3<br/>
print(niveau)<br/>
niveau = niveau + 1<br/>
print(niveau)<br/>
niveau = niveau * 2<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>print affiche la valeur d'une variable au moment où il s'exécute.<br/>
Une modification faite après un affichage ne le change pas, et une<br/>
modification finale sans affichage reste invisible.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4 puis 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le premier print vient avant l'ajout de 1, il affiche<br/>
3. Et le doublement n'est suivi d'aucun affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 puis 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le second print vient avant le doublement, il affiche<br/>
4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3 puis 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque print affiche la valeur du moment. Le<br/>
doublement final n'est jamais affiché.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4 puis 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le premier affichage a lieu quand niveau vaut encore<br/>
3.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q16 : Une rotation de trois valeurs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
a = 1<br/>
b = 2<br/>
c = 3<br/>
tmp = a<br/>
a = b<br/>
b = c<br/>
c = tmp<br/>
print(a, b, c)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une variable temporaire sert à ne perdre aucune valeur quand on fait<br/>
tourner plusieurs variables. On suit les valeurs ligne par ligne :<br/>
tmp vaut 1, puis a vaut 2, b vaut 3 et c vaut 1.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1 2 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les affectations modifient bien les trois variables, la<br/>
valeur de chacune se décale.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2 3 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c = tmp donne à c la valeur sauvegardée au début,<br/>
1, et non celle de b.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2 3 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : a prend la valeur de b, b celle de c, et<br/>
c récupère l'ancienne valeur de a gardée dans tmp.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 1 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la rotation dans l'autre sens. Ici a = b donne<br/>
2 à a.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q17 : Ce qu'est une variable</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Dans l'instruction capteur = 21, que représente capteur ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une variable est une case de la mémoire désignée par un nom. Le nom<br/>
est choisi pour être parlant, la valeur peut changer au cours du<br/>
programme.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Un nom qui désigne une valeur mémorisée, ici 21</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : une variable est un nom associé à une valeur<br/>
rangée en mémoire. On retrouve la valeur en écrivant le nom.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Un capteur physique branché à l'ordinateur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le nom est choisi par le programmeur pour rappeler ce<br/>
que la valeur représente, mais ce n'est qu'un nom.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le texte capteur = 21 qui s'affichera à l'écran</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une affectation n'affiche rien. Pour afficher, il faut<br/>
appeler print.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une égalité mathématique vérifiée par le programme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le signe = de Python n'est pas celui des<br/>
mathématiques. Il ordonne de ranger 21 sous le nom capteur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q18 : Copier avant de modifier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
ancien = 100<br/>
nouveau = ancien * 2<br/>
ancien = ancien + 1<br/>
print(ancien, nouveau)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation calcule une valeur une fois pour toutes. nouveau<br/>
ne contient pas la formule ancien * 2 mais le nombre 200 obtenu au<br/>
moment du calcul.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>101 202</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : nouveau ne se recalcule pas tout seul quand ancien<br/>
change. Il garde 200.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>101 200</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : nouveau est calculé avec la valeur 100, puis<br/>
ancien passe à 101 sans que nouveau en soit affecté.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>100 202</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ni l'une ni l'autre : ancien devient 101, et<br/>
nouveau reste 200.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>100 200</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne augmente ancien, qui vaut 101 à<br/>
l'affichage.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q19 : Deux variables qui avancent ensemble</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un robot avance par pas de plus en plus grands.</p>
<p>`<code>python<br/>
distance = 0<br/>
pas = 5<br/>
distance = distance + pas<br/>
pas = pas <em> 2<br/>
distance = distance + pas<br/>
pas = pas </em> 2<br/>
distance = distance + pas<br/>
print(distance, pas)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Quand deux variables se modifient tour à tour, la trace ligne par<br/>
ligne est le seul moyen sûr : distance 5, pas 10, distance 15,<br/>
pas 20, distance 35.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>15 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 15 est la distance après deux ajouts. Le troisième<br/>
ajoute encore 20.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>35 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la distance reçoit 5, puis 10, puis 20, soit<br/>
35. Le pas a été doublé deux fois, il vaut 20.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>35 40</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le pas n'est doublé que deux fois, il vaut 20 à la fin,<br/>
pas 40.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>30 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 30 serait 10 plus 20, sans le premier<br/>
ajout. Or celui-ci a lieu avec un pas de 5, avant tout<br/>
doublement : 5 plus 10 plus 20 font 35.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q20 : Lire l'affectation dans le bon sens</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
total = 10<br/>
total + 5 = total<br/>
print(total)<br/>
</code>`</p>
<p>Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le membre de gauche d'une affectation est toujours un nom de variable.<br/>
Pour augmenter total de 5, on écrit total = total + 5 : le calcul<br/>
à droite, le nom à gauche.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 15, l'égalité se lit dans les deux sens</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'affectation n'est pas une égalité. Python refuse de<br/>
ranger une valeur dans un calcul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 10, la deuxième ligne est ignorée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python n'ignore aucune ligne. Il s'arrête sur cette<br/>
erreur de syntaxe avant même d'exécuter le programme.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Python signale une erreur, le membre de gauche n'est pas un nom de variable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : à gauche du =, seule une variable peut recevoir<br/>
une valeur. total + 5 est un calcul, pas un nom.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 5, la différence entre les deux membres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python ne résout pas d'équation. Une affectation range<br/>
simplement une valeur dans une variable.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q21 : Un calcul rangé dans une variable</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
x = 3 * 4<br/>
print(x)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>À droite du signe =, l'expression est calculée ; à gauche, la<br/>
variable reçoit le résultat.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 * 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans guillemets, 3 * 4 est un calcul, pas un<br/>
texte. C'est le résultat qui est mémorisé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print(x) affiche la valeur de la variable, pas son<br/>
nom.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>12</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le calcul 3 * 4 est effectué d'abord, et<br/>
son résultat 12 est rangé dans x.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : * multiplie, il n'additionne pas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q22 : Le nom ou la valeur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
x = 7<br/>
print("x")<br/>
print(x)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les guillemets changent tout : "x" est une chaîne, x est une<br/>
variable.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7 puis 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les guillemets de la première ligne en font un texte,<br/>
affiché tel quel.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, car x ne peut pas être à la fois un texte et une variable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : "x" et x sont deux choses différentes, un texte et<br/>
un nom de variable, qui coexistent sans conflit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>x puis 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : entre guillemets, "x" est un texte d'une<br/>
lettre ; sans guillemets, x désigne la variable et sa valeur<br/>
7.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x puis x</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : à la seconde ligne, x sans guillemets est la variable,<br/>
dont la valeur est affichée.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q23 : Un message construit avec une variable</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
prenom = "Lou"<br/>
message = "Bonjour " + prenom<br/>
print(message)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une variable peut contenir du texte, et + assemble des textes.<br/>
Les espaces voulus doivent figurer dans les chaînes.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>BonjourLou</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'espace fait partie de la chaîne "Bonjour ", il est<br/>
donc conservé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Bonjour prenom</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : prenom sans guillemets est une variable, remplacée<br/>
par son contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Bonjour Lou</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : + entre deux chaînes les met bout à bout, et<br/>
prenom est remplacé par sa valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Bonjour + Lou</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le signe + est l'opérateur de concaténation, il<br/>
n'apparaît pas dans le résultat.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q24 : Deux variables en une ligne</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a, b = 3, 7<br/>
print(a)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>a, b = 3, 7 équivaut à a = 3 suivi de b = 7. Les<br/>
valeurs sont distribuées dans l'ordre.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'affectation multiple donne la première valeur<br/>
à la première variable et la seconde à la seconde. a vaut 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3, 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print(a) n'affiche que a, pas les deux variables.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 7 est rangé dans b, la seconde variable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, une ligne ne pouvant affecter qu'une variable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python autorise l'affectation de plusieurs variables en<br/>
une ligne, les valeurs étant prises dans l'ordre.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q25 : L'échange en une ligne</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a = 1<br/>
b = 2<br/>
a, b = b, a<br/>
print(a, b)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>a, b = b, a évalue d'abord le couple de droite avec les anciennes<br/>
valeurs, puis l'affecte. Pas besoin de variable de secours.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne échange bien les contenus des deux<br/>
variables.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, a et b ne pouvant être modifiées en même temps</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'affectation multiple est faite pour cela, et c'est la<br/>
façon la plus simple d'échanger deux variables.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les valeurs de droite, b puis a, sont<br/>
calculées avant toute affectation, puis rangées dans a et b.<br/>
Les deux variables sont échangées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait le résultat de a = b suivi de b = a. Ici<br/>
les deux valeurs sont lues avant d'être écrites.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q26 : Une variable qui change de nature</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
x = 5<br/>
x = "cinq"<br/>
print(x)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque affectation remplace le contenu précédent, quel que soit son<br/>
type. Il ne reste que la dernière valeur.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>cinq</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la seconde affectation remplace entièrement<br/>
l'ancienne valeur. Une variable peut recevoir un texte après un<br/>
nombre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ancienne valeur est écrasée par la seconde<br/>
affectation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5 cinq</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une variable ne contient qu'une seule valeur à la fois,<br/>
la dernière reçue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, une variable numérique ne pouvant recevoir un texte</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en Python, une variable n'a pas de type fixé. Elle<br/>
prend le type de la valeur qu'on lui donne.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q27 : Une variable ajoutée à elle-même</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a = 1<br/>
a = a + a<br/>
a = a + a<br/>
print(a)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans a = a + a, le a de droite est l'ancienne valeur, le a de<br/>
gauche reçoit la nouvelle. Répétée, l'instruction double à chaque<br/>
fois.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 2 est la valeur après la première ligne a = a +<br/>
a. La seconde la double encore.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : a = a + a modifie bien a, elle ne la laisse pas<br/>
intacte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1 + 1 + 1 + 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les additions sont calculées, pas affichées telles<br/>
quelles.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque ligne double la valeur courante : 1,<br/>
puis 2, puis 4.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q28 : Un compteur jamais créé</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Que produit ce programme ?<br/>
`<code>python<br/>
compteur = compteur + 1<br/>
print(compteur)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une variable doit être initialisée avant d'être utilisée dans un<br/>
calcul. Un compteur commence presque toujours par compteur = 0.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, la variable étant créée vide puis affichée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une variable ne peut pas être créée vide. L'affectation<br/>
exige une valeur calculable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une erreur, compteur n'ayant pas encore de valeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pour calculer compteur + 1, Python doit lire<br/>
compteur, qui n'existe pas encore. Il faut d'abord<br/>
compteur = 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1, Python donnant zéro par défaut à toute variable inconnue</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune variable n'existe tant qu'elle n'a pas été<br/>
affectée. Il n'y a pas de valeur par défaut.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>compteur + 1, affiché tel quel faute de valeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python tente le calcul avant d'afficher quoi que ce<br/>
soit, et c'est le calcul qui échoue.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q29 : Un total qui ne se met pas à jour</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
prix = 10<br/>
total = prix * 3<br/>
prix = 20<br/>
print(total)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation calcule une valeur une fois pour toutes. Rien ne<br/>
relie durablement total à prix.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : total contient le produit, pas l'ancien prix.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>30</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : total a été calculé quand prix valait 10.<br/>
Modifier prix ensuite ne recalcule rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 20 est la nouvelle valeur de prix, pas celle de<br/>
total.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>60</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : total ne suit pas les changements de prix. Pour<br/>
obtenir 60, il faudrait refaire total = prix * 3.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q30 : Quatre affectations à suivre</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a = 5<br/>
b = a<br/>
a = b + 1<br/>
b = a * 2<br/>
print(a, b)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Suivre un programme, c'est tenir à jour la valeur de chaque<br/>
variable ligne après ligne, en lisant chaque affectation de droite<br/>
à gauche.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6 10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : à la dernière ligne, a vaut déjà 6, et non 5.<br/>
Le double est donc 12.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>6 12</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : b reçoit 5, puis a devient 5 + 1 = 6,<br/>
puis b devient 6 × 2 = 12.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6 6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : b = a * 2 double la valeur de a, il ne la recopie<br/>
pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux dernières lignes modifient a puis b.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
