<?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>
<pre><code>abonnes = 250
abonnes = abonnes + 30</code></pre>
<p>Que vaut <code>abonnes</code> après ces deux lignes ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le signe <code>=</code> 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/>
<code>abonnes = abonnes + 30</code> 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="100" format="html">
    <text><![CDATA[<p><code>280</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la deuxième ligne calcule d'abord <code>abonnes + 30</code><br/>
avec la valeur du moment, 250, puis range le résultat 280 dans<br/>
la variable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>250</code></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><code>30</code></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="0" format="html">
    <text><![CDATA[<p>Une erreur, car <code>abonnes</code> 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>
</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 <code>nombre_de_photos</code> 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><code>2eme_photo</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un nom de variable ne peut pas commencer par un<br/>
chiffre. <code>photo_2</code> serait accepté.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>nombre-de-photos</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le tiret est le signe de la soustraction. Python lirait<br/>
<code>nombre - de - photos</code>, trois variables à soustraire.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>nombre_de_photos</code></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><code>nombre de photos</code></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[<pre><code>largeur = 800
print(largeur * hauteur)</code></pre>
<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 <code>NameError</code>, 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 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>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Python signale une erreur, <code>hauteur</code> n'a jamais reçu de valeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le message est <code>NameError: name 'hauteur' is not<br/>
defined</code>. Il faut affecter une valeur à <code>hauteur</code> avant de s'en<br/>
servir.</p>]]></text>
    </feedback>
  </answer>
  <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 <code>largeur * hauteur</code> tel quel</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans guillemets, <code>largeur * hauteur</code> est un calcul à<br/>
effectuer, pas un texte à afficher.</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[<pre><code>prix = 20
prix = prix * 2
prix = prix - 5
print(prix)</code></pre>
<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="100" format="html">
    <text><![CDATA[<p><code>35</code></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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>30</code></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><code>40</code></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><code>15</code></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>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q05 : Une valeur copiée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>a = 5
b = a
a = 7
print(b)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation copie une valeur, pas un lien. Après <code>b = a</code>, 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="100" format="html">
    <text><![CDATA[<p><code>5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>b = a</code> copie la valeur de <code>a</code> à cet instant, 5.<br/>
Modifier <code>a</code> ensuite ne touche pas <code>b</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>b</code> n'est pas lié à <code>a</code> 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><code>12</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune addition n'est écrite. <code>b = a</code> copie une valeur,<br/>
elle n'additionne rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>a</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans guillemets, <code>a</code> désigne la variable, et <code>b = a</code><br/>
range sa valeur dans <code>b</code>, pas son nom.</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>
<pre><code>x = 3
y = 8
x = y
y = x
print(x, y)</code></pre>
<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="0" format="html">
    <text><![CDATA[<p><code>8 3</code></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 <code>x</code> avant qu'on puisse la donner à <code>y</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>8 8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>x = y</code> donne 8 à <code>x</code>, et l'ancienne valeur 3<br/>
est perdue. Puis <code>y = x</code> copie ce 8 dans <code>y</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3 8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux affectations modifient bien les variables.<br/>
Après <code>x = y</code>, <code>x</code> vaut 8.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3 3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première affectation copie <code>y</code> dans <code>x</code>, pas<br/>
l'inverse. C'est la valeur 8 qui se propage.</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><code>x</code> vaut 3 et <code>y</code> vaut 8. Quelle suite d'instructions échange leurs<br/>
valeurs, pour obtenir <code>x</code> égal à 8 et <code>y</code> é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><code>tmp = x</code>, puis <code>x = y</code>, puis <code>y = tmp</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>tmp</code> conserve 3, <code>x</code> reçoit 8, puis <code>y</code> reçoit<br/>
le 3 mis à l'abri. Rien n'est perdu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>x = y</code>, puis <code>y = x</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : après <code>x = y</code>, la valeur 3 n'existe plus nulle part. Les<br/>
deux variables finissent à 8.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>tmp = x</code>, puis <code>y = tmp</code>, puis <code>x = y</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>y = tmp</code> écrase le 8 avec 3 avant que <code>x</code> l'ait reçu.<br/>
Les deux variables finissent à 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>x = tmp</code>, puis <code>tmp = y</code>, puis <code>y = x</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>tmp</code> n'a encore aucune valeur à la première ligne, le<br/>
programme s'arrête sur une erreur.</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>
<pre><code>consigne = 12
consigne = consigne + 3
consigne = consigne - 5
consigne = consigne * 2
print(consigne)</code></pre>
<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="100" format="html">
    <text><![CDATA[<p><code>20</code></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><code>10</code></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><code>24</code></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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>14</code></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>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q09 : L'écriture raccourcie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>score = 40
score += 10
score -= 5
print(score)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>x += 3</code> est un raccourci pour <code>x = x + 3</code> ; de même pour <code>-=</code>, <code>*=</code><br/>
et <code>/=</code>. 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="100" format="html">
    <text><![CDATA[<p><code>45</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>score += 10</code> signifie <code>score = score + 10</code>, et<br/>
<code>score -= 5</code> signifie <code>score = score - 5</code>. 40 devient<br/>
50 puis 45.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>55</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>-=</code> retranche, il n'ajoute pas. Après 50, le<br/>
score descend à 45.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>50</code></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>Une erreur, l'opérateur <code>+=</code> n'existe pas en Python</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>+=</code> et <code>-=</code> 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><code>5 = nombre</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : à gauche du signe <code>=</code>, 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><code>nombre = 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est une affectation ordinaire, <code>nombre</code> reçoit 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>nombre = nombre + 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette ligne est correcte dès que <code>nombre</code> a une valeur.<br/>
Elle l'augmente de 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>nombre = 5 + 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : Python calcule 10 puis le range dans <code>nombre</code>. Le membre<br/>
de droite peut être n'importe quel calcul.</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>
<pre><code>pixel = 120
pixel = 255
pixel = pixel - 55
print(pixel)</code></pre>
<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="100" format="html">
    <text><![CDATA[<p><code>200</code></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><code>65</code></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="0" format="html">
    <text><![CDATA[<p><code>175</code></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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>255</code></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>
</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[<pre><code>a = 2
b = a + 3
a = b * 2
b = a - b
print(a, b)</code></pre>
<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="100" format="html">
    <text><![CDATA[<p><code>10 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>b</code> vaut 5, puis <code>a</code> vaut 10, puis <code>b</code> vaut<br/>
10 moins 5, soit 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10 8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 serait 10 moins 2, avec l'ancienne valeur de<br/>
<code>a</code> à la place de <code>b</code>. Or c'est <code>b</code>, qui vaut 5, que l'on<br/>
soustrait à la dernière ligne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne modifie <code>a</code>, qui passe de 2 à 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4 -1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne multiplie <code>b</code> par 2, pas <code>a</code>. Elle<br/>
donne 10 à <code>a</code>, et non 4, et la dernière ligne calcule<br/>
alors 10 moins 5.</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[<pre><code>Latitude = 45.7
print(latitude)</code></pre>
<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="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, <code>Latitude</code> et <code>latitude</code> sont deux noms<br/>
différents. Le second n'a jamais reçu de valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Python signale une erreur, <code>latitude</code> n'existe pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les noms distinguent majuscules et minuscules.<br/>
Seule <code>Latitude</code> a été définie, <code>latitude</code> provoque une erreur<br/>
<code>NameError</code>.</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 : <code>print</code> 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>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q14 : Une ligne qui ne change rien</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>x = 4
x = x
x = x * x
print(x)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La ligne <code>x = x</code> est inutile mais correcte : elle affecte à <code>x</code> 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="100" format="html">
    <text><![CDATA[<p><code>16</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>x = x</code> remet dans <code>x</code> sa propre valeur, sans<br/>
effet. Puis <code>x * x</code> vaut 4 fois 4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne modifie bien <code>x</code>, qui devient 16.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>x * x</code> est une multiplication, 4 fois 4, et non une<br/>
addition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>44</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>x * x</code> multiplie deux nombres, il ne colle pas deux<br/>
chiffres. Le résultat est 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[<pre><code>niveau = 3
print(niveau)
niveau = niveau + 1
print(niveau)
niveau = niveau * 2</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>print</code> 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="100" format="html">
    <text><![CDATA[<p><code>3</code> puis <code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque <code>print</code> 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><code>4</code> puis <code>8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le premier <code>print</code> 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><code>3</code> puis <code>8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le second <code>print</code> vient avant le doublement, il affiche<br/>
4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4</code> puis <code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le premier affichage a lieu quand <code>niveau</code> 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[<pre><code>a = 1
b = 2
c = 3
tmp = a
a = b
b = c
c = tmp
print(a, b, c)</code></pre>
<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/>
<code>tmp</code> vaut 1, puis <code>a</code> vaut 2, <code>b</code> vaut 3 et <code>c</code> 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="100" format="html">
    <text><![CDATA[<p><code>2 3 1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>a</code> prend la valeur de <code>b</code>, <code>b</code> celle de <code>c</code>, et<br/>
<code>c</code> récupère l'ancienne valeur de <code>a</code> gardée dans <code>tmp</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3 1 2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la rotation dans l'autre sens. Ici <code>a = b</code> donne<br/>
2 à <code>a</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 2 3</code></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><code>2 3 3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>c = tmp</code> donne à <code>c</code> la valeur sauvegardée au début,<br/>
1, et non celle de <code>b</code>.</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 <code>capteur = 21</code>, que représente <code>capteur</code> ?</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>Une égalité mathématique vérifiée par le programme</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le signe <code>=</code> de Python n'est pas celui des<br/>
mathématiques. Il ordonne de ranger 21 sous le nom <code>capteur</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Le texte <code>capteur = 21</code> 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 <code>print</code>.</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>
</question>

<question type="multichoice">
  <name>
    <text>1. Variables et affectation — Q18 : Copier avant de modifier</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>ancien = 100
nouveau = ancien * 2
ancien = ancien + 1
print(ancien, nouveau)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation calcule une valeur une fois pour toutes. <code>nouveau</code><br/>
ne contient pas la formule <code>ancien * 2</code> 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="100" format="html">
    <text><![CDATA[<p><code>101 200</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>nouveau</code> est calculé avec la valeur 100, puis<br/>
<code>ancien</code> passe à 101 sans que <code>nouveau</code> en soit affecté.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>101 202</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>nouveau</code> ne se recalcule pas tout seul quand <code>ancien</code><br/>
change. Il garde 200.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>100 200</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la troisième ligne augmente <code>ancien</code>, qui vaut 101 à<br/>
l'affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>100 202</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ni l'une ni l'autre : <code>ancien</code> devient 101, et<br/>
<code>nouveau</code> reste 200.</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>
<pre><code>distance = 0
pas = 5
distance = distance + pas
pas = pas * 2
distance = distance + pas
pas = pas * 2
distance = distance + pas
print(distance, pas)</code></pre>
<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="100" format="html">
    <text><![CDATA[<p><code>35 20</code></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><code>15 20</code></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="0" format="html">
    <text><![CDATA[<p><code>35 40</code></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><code>30 20</code></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[<pre><code>total = 10
total + 5 = total
print(total)</code></pre>
<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 <code>total</code> de 5, on écrit <code>total = total + 5</code> : 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 <code>=</code>, seule une variable peut recevoir<br/>
une valeur. <code>total + 5</code> 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/>
<pre><code>x = 3 * 4
print(x)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>À droite du signe <code>=</code>, 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="100" format="html">
    <text><![CDATA[<p><code>12</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le calcul <code>3 * 4</code> est effectué d'abord, et<br/>
son résultat 12 est rangé dans <code>x</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3 * 4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : sans guillemets, <code>3 * 4</code> 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><code>7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>*</code> multiplie, il n'additionne pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>x</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>print(x)</code> affiche la valeur de la variable, pas son<br/>
nom.</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/>
<pre><code>x = 7
print("x")
print(x)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les guillemets changent tout : <code>"x"</code> est une chaîne, <code>x</code> 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="100" format="html">
    <text><![CDATA[<p><code>x</code> puis <code>7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : entre guillemets, <code>"x"</code> est un texte d'une<br/>
lettre ; sans guillemets, <code>x</code> désigne la variable et sa valeur<br/>
7.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>7</code> puis <code>7</code></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><code>x</code> puis <code>x</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : à la seconde ligne, <code>x</code> sans guillemets est la variable,<br/>
dont la valeur est affichée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, car <code>x</code> ne peut pas être à la fois un texte et une variable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>"x"</code> et <code>x</code> sont deux choses différentes, un texte et<br/>
un nom de variable, qui coexistent sans conflit.</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/>
<pre><code>prenom = "Lou"
message = "Bonjour " + prenom
print(message)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une variable peut contenir du texte, et <code>+</code> 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="100" format="html">
    <text><![CDATA[<p><code>Bonjour Lou</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>+</code> entre deux chaînes les met bout à bout, et<br/>
<code>prenom</code> est remplacé par sa valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>Bonjour prenom</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>prenom</code> sans guillemets est une variable, remplacée<br/>
par son contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>Bonjour + Lou</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le signe <code>+</code> est l'opérateur de concaténation, il<br/>
n'apparaît pas dans le résultat.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>BonjourLou</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'espace fait partie de la chaîne <code>"Bonjour "</code>, il est<br/>
donc conservé.</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/>
<pre><code>a, b = 3, 7
print(a)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>a, b = 3, 7</code> équivaut à <code>a = 3</code> suivi de <code>b = 7</code>. 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><code>3</code></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. <code>a</code> vaut 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 7 est rangé dans <code>b</code>, la seconde variable.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3, 7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>print(a)</code> n'affiche que <code>a</code>, pas les deux variables.</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/>
<pre><code>a = 1
b = 2
a, b = b, a
print(a, b)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>a, b = b, a</code> é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="100" format="html">
    <text><![CDATA[<p><code>2 1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les valeurs de droite, <code>b</code> puis <code>a</code>, sont<br/>
calculées avant toute affectation, puis rangées dans <code>a</code> et <code>b</code>.<br/>
Les deux variables sont échangées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 2</code></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><code>2 2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait le résultat de <code>a = b</code> suivi de <code>b = a</code>. Ici<br/>
les deux valeurs sont lues avant d'être écrites.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>a</code> et <code>b</code> 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>
</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/>
<pre><code>x = 5
x = "cinq"
print(x)</code></pre></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><code>cinq</code></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><code>5</code></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><code>5 cinq</code></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/>
<pre><code>a = 1
a = a + a
a = a + a
print(a)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans <code>a = a + a</code>, le <code>a</code> de droite est l'ancienne valeur, le <code>a</code> 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="100" format="html">
    <text><![CDATA[<p><code>4</code></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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 2 est la valeur après la première ligne <code>a = a +<br/>
a</code>. La seconde la double encore.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>a = a + a</code> modifie bien <code>a</code>, elle ne la laisse pas<br/>
intacte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 + 1 + 1 + 1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les additions sont calculées, pas affichées telles<br/>
quelles.</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/>
<pre><code>compteur = compteur + 1
print(compteur)</code></pre></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 <code>compteur = 0</code>.</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>Une erreur, <code>compteur</code> n'ayant pas encore de valeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pour calculer <code>compteur + 1</code>, Python doit lire<br/>
<code>compteur</code>, qui n'existe pas encore. Il faut d'abord<br/>
<code>compteur = 0</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1</code>, 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><code>0</code>, 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="0" format="html">
    <text><![CDATA[<p><code>compteur + 1</code>, 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/>
<pre><code>prix = 10
total = prix * 3
prix = 20
print(total)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une affectation calcule une valeur une fois pour toutes. Rien ne<br/>
relie durablement <code>total</code> à <code>prix</code>.</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><code>30</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>total</code> a été calculé quand <code>prix</code> valait 10.<br/>
Modifier <code>prix</code> ensuite ne recalcule rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>60</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>total</code> ne suit pas les changements de <code>prix</code>. Pour<br/>
obtenir 60, il faudrait refaire <code>total = prix * 3</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>20</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 20 est la nouvelle valeur de <code>prix</code>, pas celle de<br/>
<code>total</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>total</code> contient le produit, pas l'ancien prix.</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/>
<pre><code>a = 5
b = a
a = b + 1
b = a * 2
print(a, b)</code></pre></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="100" format="html">
    <text><![CDATA[<p><code>6 12</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>b</code> reçoit 5, puis <code>a</code> devient 5 + 1 = 6,<br/>
puis <code>b</code> devient 6 × 2 = 12.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>6 10</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : à la dernière ligne, <code>a</code> vaut déjà 6, et non 5.<br/>
Le double est donc 12.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux dernières lignes modifient <code>a</code> puis <code>b</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>6 6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>b = a * 2</code> double la valeur de <code>a</code>, il ne la recopie<br/>
pas.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
