<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/SNT/5. Boucles bornées : for</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>La boucle for et la fonction range, avec un, deux ou trois arguments ;<br/>
le nombre de tours et les valeurs prises par la variable de boucle ;<br/>
les schémas de l'accumulateur et du compteur ; le parcours d'une<br/>
chaîne de caractères ; les boucles imbriquées.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q01 : Les valeurs de range</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for i in range(4):
    print(i)</code></pre>
<p>Quelles valeurs sont affichées ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(n)</code> produit les entiers de 0 à <code>n - 1</code>, soit <code>n</code> valeurs. La<br/>
variable de boucle les prend une à une, 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>0, 1, 2 et 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>range(4)</code> fournit quatre entiers, de 0 à 3. La<br/>
valeur 4 n'en fait pas partie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1, 2, 3 et 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range</code> commence à 0 quand on ne lui donne qu'un<br/>
argument.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 1, 2, 3 et 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait cinq valeurs. <code>range(4)</code> s'arrête avant 4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Quatre fois le nombre 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>i</code> change à chaque tour, il prend les valeurs<br/>
successives fournies par <code>range</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q02 : Combien de pas</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un robot avance d'un pas à chaque tour de boucle.</p>
<pre><code>for k in range(2, 7):
    avancer()</code></pre>
<p>Combien de pas fait-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(a, b)</code> fournit les entiers de <code>a</code> inclus à <code>b</code> exclu, soit<br/>
<code>b - a</code> valeurs. Le nombre de tours ne dépend pas de ce que fait le<br/>
corps de la boucle.</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</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>k</code> prend les valeurs 2, 3, 4, 5 et 6, soit 5<br/>
tours. Le nombre de tours vaut 7 moins 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 7 est exclue, la dernière valeur est 6.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle ne part pas de 0 mais de 2, et s'arrête avant<br/>
7.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : de 2 à 6 inclus, il y a 5 valeurs.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q03 : Un range qui descend</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for n in range(10, 0, -3):
    print(n)</code></pre>
<p>Quelles valeurs sont affichées ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(depart, fin, pas)</code> accepte un pas négatif pour compter à<br/>
rebours. La borne <code>fin</code> reste exclue, comme toujours.</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>10, 7, 4 et 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on part de 10 et on retire 3 à chaque fois tant<br/>
qu'on reste strictement au-dessus de 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, 7 et 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 1 est encore strictement supérieur à 0, il est<br/>
affiché.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, 7, 4, 1 et -2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : -2 dépasse la borne 0, la boucle s'arrête avant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 3, 6 et 9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le premier argument est le point de départ, 10, et le<br/>
pas est négatif.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q04 : La somme des premiers entiers</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>total = 0
for i in range(1, 6):
    total = total + i
print(total)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'accumulateur est le schéma de base : une variable initialisée à 0<br/>
avant la boucle, à laquelle on ajoute une valeur à chaque tour. À la<br/>
sortie, elle contient la somme.</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>15</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la boucle ajoute 1, 2, 3, 4 et 5, ce qui fait<br/>
15.</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 serait la somme de 1 à 4. La valeur 5 est incluse,<br/>
seule la borne 6 est exclue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>21</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 21 ajouterait 6, qui est exclu par <code>range(1, 6)</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>total</code> accumule les valeurs successives, il ne garde<br/>
pas la dernière.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q05 : Compter les multiples</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>compte = 0
for n in range(1, 21):
    if n % 5 == 0:
        compte = compte + 1
print(compte)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le compteur est un accumulateur qui n'augmente que sous condition.<br/>
Une variable à 0, un <code>if</code> dans la boucle, et un ajout de 1 quand la<br/>
propriété est vérifié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>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : entre 1 et 20, les multiples de 5 sont 5, 10, 15 et 20.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 25 n'est pas atteint, la boucle s'arrête à 20.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>20</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le compteur n'augmente que quand la condition est<br/>
vraie, pas à chaque tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 20 est bien parcouru, <code>range(1, 21)</code> va jusqu'à 20.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q06 : La valeur qui reste</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for i in range(3):
    x = i * 10
print(x)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les variables modifiées dans la boucle conservent leur dernière<br/>
valeur à la sortie. Il en va de même pour la variable de boucle<br/>
elle-même.</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 : <code>x</code> est recalculé à chaque tour ; au dernier,<br/>
<code>i</code> vaut 2 et <code>x</code> vaut 20. Cette valeur subsiste après la<br/>
boucle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>30</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>i</code> prend les valeurs 0, 1 et 2, jamais 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 0 est la valeur au premier tour, écrasée ensuite.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>x</code> n'existe plus après la boucle</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une variable créée dans une boucle reste accessible<br/>
après. Elle garde sa dernière valeur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q07 : Parcourir une chaîne</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for lettre in "SNT":
    print(lettre)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>for</code> sait parcourir une chaîne : la variable prend successivement<br/>
chaque caractère. Pas besoin de <code>range</code> pour cela.</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>S</code>, <code>N</code> et <code>T</code>, sur trois lignes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la boucle parcourt la chaîne caractère par<br/>
caractère, et chaque <code>print</code> occupe une ligne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>SNT</code> sur une seule ligne, sans retour</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque tour affiche un seul caractère et revient à la<br/>
ligne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 1 et 2, les positions des lettres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en parcourant une chaîne, la variable reçoit les<br/>
caractères, pas leurs positions.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>lettre</code> trois fois, sur trois lignes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>print(lettre)</code> affiche la valeur de la variable, un<br/>
caractère différent à chaque tour.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q08 : Compter une lettre</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>compte = 0
for c in "programmation":
    if c == "a":
        compte = compte + 1
print(compte)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Compter une lettre combine le parcours d'une chaîne et le schéma du<br/>
compteur : un test sur chaque caractère, un ajout de 1 quand il<br/>
convient.</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</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : en épelant « programmation », on trouve 2 fois la<br/>
lettre <code>a</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en épelant le mot, on ne trouve que 2 fois la lettre <code>a</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque <code>a</code> rencontré ajoute 1, et il y en a 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>13</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 13 est le nombre de tours, mais le compteur n'augmente<br/>
que sur les <code>a</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q09 : Afficher avant d'ajouter</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>s = 0
for k in range(3):
    print(s)
    s = s + k</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La place du <code>print</code> dans le corps de la boucle change ce qui est<br/>
affiché. Une trace tour par tour, avec les valeurs de <code>k</code> et de <code>s</code>,<br/>
lève tout doute.</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>0, 0 et 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : au premier tour <code>s</code> vaut 0 ; puis on ajoute 0.<br/>
Au deuxième, <code>s</code> vaut encore 0 ; puis on ajoute 1. Au troisième,<br/>
<code>s</code> vaut 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 1 et 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce seraient les valeurs après chaque ajout. Or le<br/>
<code>print</code> vient avant l'ajout.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 1 et 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche <code>s</code>, pas <code>k</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1, 3 et 6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>k</code> part de 0, et l'affichage précède l'ajout.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q10 : Deux boucles imbriquées</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for i in range(2):
    for j in range(3):
        print(i, j)</code></pre>
<p>Combien de lignes ce programme affiche-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Quand une boucle en contient une autre, le nombre total de passages<br/>
est le produit des nombres de tours. Ici, <code>(0, 0)</code>, <code>(0, 1)</code>, et<br/>
ainsi de suite jusqu'à <code>(0, 2)</code>, puis la même chose pour chaque<br/>
valeur suivante de <code>i</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>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pour chacune des 2 valeurs de <code>i</code>, la boucle<br/>
intérieure fait 3 tours, soit 2 fois 3 lignes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les tours se multiplient, ils ne s'additionnent pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle intérieure est relancée entièrement pour<br/>
chaque valeur de <code>i</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque tour de la boucle extérieure déclenche 3<br/>
affichages.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q11 : La dernière valeur affichée</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for i in range(1, 10, 2):
    print(i)</code></pre>
<p>Quelle est la dernière valeur affichée ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec trois arguments, <code>range</code> part du premier, avance du troisième<br/>
et s'arrête avant le deuxième. Ici, il énumère 1, 3, 5, 7 et 9.</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>9</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les valeurs sont 1, 3, 5, 7 et 9. La suivante,<br/>
11, dépasse la borne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 10 est exclue, et de toute façon le pas de 2<br/>
ne l'atteint pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 est encore strictement inférieur à 10, il est<br/>
affiché.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en partant de 1 avec un pas de 2, on ne passe que par<br/>
1, 3, 5 et ainsi de suite.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q12 : Un produit</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>p = 1
for i in range(1, 5):
    p = p * i
print(p)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour accumuler un produit, on initialise à 1, pas à 0. Le schéma est<br/>
celui de l'accumulateur, avec une multiplication à la place de<br/>
l'addition.</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>24</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 1 fois 2 fois 3 fois 4 font 24.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>120</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 120 inclurait le facteur 5, exclu par <code>range(1, 5)</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 : 10 serait la somme de 1 à 4, or la boucle multiplie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>p</code> part de 1, pas de 0. Un produit initialisé à 0<br/>
resterait nul.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q13 : Modifier la variable de boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for i in range(3):
    i = i + 10
    print(i)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Au début de chaque tour, <code>for</code> donne à sa variable la valeur suivante<br/>
de <code>range</code>, quoi qu'on lui ait fait au tour précédent. Modifier la<br/>
variable de boucle n'influence pas le nombre de tours.</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>10, 11 et 12</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : à chaque tour, <code>i</code> reçoit la valeur suivante de<br/>
<code>range</code>, 0, 1 et 2, avant l'ajout de 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, 21 et 32</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la modification de <code>i</code> ne se cumule pas. <code>range</code><br/>
réaffecte <code>i</code> au début de chaque tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10, puis une erreur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : modifier la variable de boucle est autorisé, même si<br/>
c'est déconseillé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 1 et 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'ajout de 10 a lieu avant l'affichage.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q14 : La borne exclue</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>La valeur 5 est-elle affichée par la boucle suivante ?</p>
<pre><code>for i in range(5):
    print(i)</code></pre>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(n)</code> compte de 0 à <code>n - 1</code>. Retenir que la borne est exclue<br/>
évite l'erreur classique du « tour de trop » ou du « tour de moins ».</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>Non, <code>range(5)</code> s'arrête à 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>range(5)</code> fournit 0, 1, 2, 3 et 4, soit cinq<br/>
valeurs, mais pas 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, en dernier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne donnée à <code>range</code> est toujours exclue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, en premier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle commence à 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Oui, cinq fois de suite</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>i</code> change à chaque tour et ne vaut jamais 5.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q15 : Compléter une boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>On veut afficher tous les entiers de 3 à 12 inclus. Quelle ligne<br/>
convient ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour parcourir de <code>a</code> à <code>b</code> inclus, on écrit <code>range(a, b + 1)</code>. Le<br/>
« plus un » compense l'exclusion de la borne.</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>for n in range(3, 13):</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pour inclure 12, la borne exclue doit être 13.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>for n in range(3, 12):</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 12 serait exclu, la boucle s'arrêterait à 11.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>for n in range(12):</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette boucle part de 0 et s'arrête à 11.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>for n in range(13, 3):</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec un départ supérieur à la borne et un pas positif,<br/>
<code>range</code> est vide : aucun tour.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q16 : La somme des nombres pairs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>s = 0
for n in range(1, 11):
    if n % 2 == 0:
        s = s + n
print(s)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Accumulateur et condition se combinent : on n'ajoute une valeur que<br/>
si elle vérifie le test. C'est le schéma d'une somme sélective.</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 : 2, 4, 6, 8 et 10 font 30.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>25</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 25 est la somme des impairs de 1 à 9. La condition<br/>
retient les pairs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>55</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 55 serait la somme de tous les entiers de 1 à 10, sans<br/>
la condition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>20</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 est bien parcouru, <code>range(1, 11)</code> va jusqu'à 10.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q17 : Chercher un maximum</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>maxi = 0
for x in range(1, 6):
    valeur = x * (6 - x)
    if valeur &gt; maxi:
        maxi = valeur
print(maxi)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour trouver un maximum, on garde une variable mise à jour chaque<br/>
fois qu'une valeur la dépasse. À la fin, elle contient la plus<br/>
grande valeur rencontré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>9</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les valeurs calculées sont 5, 8, 9, 8 et 5. La<br/>
plus grande est 9, atteinte pour <code>x</code> égal à 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 est dépassé par 9 au tour numéro 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est la dernière valeur calculée, mais <code>maxi</code> garde la<br/>
plus grande rencontrée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 6 n'est jamais une valeur de <code>x * (6 - x)</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q18 : Un compte à rebours</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for t in range(3, 0, -1):
    print(t)
print("Partez")</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un pas négatif fait décroître la variable de boucle. Les règles sont<br/>
inchangées : départ inclus, borne exclue.</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, 2, 1 puis <code>Partez</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le pas -1 fait descendre de 3 à 1, la borne 0<br/>
étant exclue, puis la ligne hors de la boucle s'exécute.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3, 2, 1, 0 puis <code>Partez</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 0 est exclue, même en descendant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2, 1, 0 puis <code>Partez</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le départ est le premier argument, 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>Partez</code> seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(3, 0, -1)</code> fournit bien trois valeurs.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q19 : Construire une chaîne</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>mot = ""
for c in "abc":
    mot = c + mot
print(mot)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une chaîne peut servir d'accumulateur : on part de la chaîne vide et<br/>
on concatène à chaque tour. L'ordre de la concaténation décide du<br/>
sens de la chaîne obtenue.</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>cba</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque caractère est placé devant ce qui est<br/>
déjà construit : <code>a</code>, puis <code>ba</code>, puis <code>cba</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>abc</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait le résultat de <code>mot = mot + c</code>, qui ajoute à<br/>
la fin.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>abcabc</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque tour n'ajoute qu'un caractère.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>ccc</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>mot</code> conserve les caractères précédents.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q20 : Un range vide</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for i in range(5, 5):
    print(i)
print("Fin")</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle <code>for</code> sur un <code>range</code> vide ne s'exécute pas du tout, sans<br/>
erreur. C'est un cas à prévoir quand les bornes viennent d'un 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>Fin</code> seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>range(5, 5)</code> ne contient aucune valeur, la<br/>
boucle ne fait aucun tour, et le programme continue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code> puis <code>Fin</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 5 est exclue, il ne reste rien à parcourir.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, un <code>range</code> ne peut pas être vide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un <code>range</code> vide est parfaitement valable, la boucle<br/>
est simplement sautée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 1, 2, 3, 4 puis <code>Fin</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait <code>range(5)</code>. Avec deux arguments, le départ<br/>
est 5.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q21 : Un message répété</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Combien de fois ce programme affiche-t-il <code>hop</code> ?<br/>
<pre><code>for i in range(3):
    print("hop")</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(n)</code> produit n valeurs, et le corps de la boucle est exécuté<br/>
une fois pour chacune.</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 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>range(3)</code> fournit 3 valeurs, de 0 à 2,<br/>
donc le corps de la boucle s'exécute 3 fois.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(3)</code> s'arrête avant 3, mais commence à 0, ce<br/>
qui fait bien 3 valeurs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la valeur 3 elle-même n'est pas comprise dans<br/>
<code>range(3)</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une seule fois, <code>i</code> n'étant pas utilisé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle se répète même si <code>i</code> ne sert pas dans le<br/>
corps.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q22 : Une table de multiplication partielle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme, les valeurs étant lues ligne par ligne ?<br/>
<pre><code>for i in range(1, 4):
    print(i * 10)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>range(1, 4)</code> donne 1, 2, 3 : la première borne est incluse, la<br/>
seconde exclue.</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 20 30</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>i</code> prend les valeurs 1, 2 et 3, et chacune est<br/>
multipliée par 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10 20 30 40</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 4 est exclue, <code>i</code> ne la prend jamais.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0 10 20</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(1, 4)</code> commence à 1, pas à 0.</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 : c'est <code>i * 10</code> qui est affiché, pas <code>i</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q23 : Un accumulateur qui avance de deux en deux</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>s = 0
for i in range(3):
    s = s + 2
print(s)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle qui ajoute une constante calcule une multiplication :<br/>
3 tours de <code>+ 2</code> donnent 6.</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</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la boucle tourne 3 fois et ajoute 2 à chaque<br/>
tour, soit 6 au total.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 3 est le nombre de tours, mais chaque tour ajoute 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>s</code> grandit à chaque tour, il ne reste pas à 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il ne s'agit pas d'ajouter 2 une fois à 3, mais<br/>
d'ajouter 2 à chacun des 3 tours.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q24 : Les impairs d'une plage</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme, les valeurs étant lues ligne par ligne ?<br/>
<pre><code>for i in range(5):
    if i % 2 == 1:
        print(i)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un <code>if</code> dans une boucle sélectionne certains tours. Ici, le reste<br/>
de la division par 2 reconnaît les impairs.</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>1 3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : seules les valeurs dont le reste par 2 vaut 1,<br/>
les impairs, sont affichées, et 5 est exclu de la plage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 3 5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(5)</code> s'arrête à 4, la valeur 5 n'est<br/>
jamais testée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0 2 4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>i % 2 == 1</code> retient les impairs, pas les pairs.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0 1 2 3 4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le <code>if</code> filtre les valeurs, toutes ne sont pas<br/>
affichées.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q25 : Compter au-delà d'un seuil</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>n = 0
for i in range(10):
    if i &gt; 6:
        n = n + 1
print(n)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un compteur n'avance que lorsque la condition est vraie. Compter<br/>
les tours retenus demande d'écrire la liste des valeurs qui<br/>
passent le test.</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 : les valeurs de <code>range(10)</code> strictement<br/>
supérieures à 6 vont de 7 à 9, il y en a 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>i &gt; 6</code> exclut 6 lui-même, et <code>range(10)</code> s'arrête<br/>
à 9.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 6 est le seuil, pas le nombre de valeurs qui le<br/>
dépassent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>10</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : seules les valeurs qui vérifient la condition sont<br/>
comptées.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q26 : Des carrés ligne par ligne</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ? Les lignes sont données séparées par des<br/>
virgules.<br/>
<pre><code>for i in range(3):
    print(i, i * i)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un <code>print</code> dans la boucle produit une ligne par tour, avec les<br/>
valeurs calculées à ce tour.</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>0 0, 1 1, 2 4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pour chaque valeur de <code>i</code>, de 0 à 2, la ligne<br/>
affiche <code>i</code> puis son carré.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 1, 2 4, 3 9</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(3)</code> commence à 0 et exclut 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0 0, 1 2, 2 4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>i * i</code> est le carré de <code>i</code>, pas son double.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3 9</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le <code>print</code> est dans la boucle, une ligne par tour est<br/>
affichée.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q27 : Une somme de doubles</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>total = 0
for i in range(5):
    total = total + i * 2
print(total)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour suivre un accumulateur, on note la valeur ajoutée à chaque<br/>
tour et on additionne : ici 0, 2, 4, et ainsi de suite jusqu'à<br/>
8.</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 : les doubles de 0 à 4 s'additionnent : la<br/>
somme de 0 à 4 vaut 10, et son double 20.</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 somme des valeurs de <code>i</code> sans le<br/>
doublement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 est seulement la dernière valeur ajoutée,<br/>
<code>total</code> accumule toutes les autres.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>total</code> part de 0 mais grandit à chaque tour.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q28 : La somme des multiples de trois</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>s = 0
for i in range(10):
    if i % 3 == 0:
        s = s + i
print(s)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Filtre et accumulateur se combinent : le <code>if</code> choisit les valeurs,<br/>
l'addition les cumule.</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>18</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : seuls les multiples de 3 inférieurs à 10 sont<br/>
ajoutés, 0 compris, et leur somme vaut 18.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 4 est le nombre de multiples de 3 retenus, pas leur<br/>
somme.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>45</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 45 est la somme de toutes les valeurs de<br/>
<code>range(10)</code>, sans le filtre.</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 borne de la plage, elle n'est même pas<br/>
parcourue.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q29 : Un triangle d'étoiles</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ? Les lignes sont données séparées par des<br/>
virgules.<br/>
<pre><code>for i in range(3):
    print("*" * (i + 1))</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Multiplier une chaîne par un entier la répète. Combiné à une<br/>
boucle, cela dessine des figures ligne par ligne.</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><em></code>, <code><strong></code>, <code></strong></em></code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : au tour <code>i</code>, la chaîne <code>"*"</code> est répétée<br/>
<code>i + 1</code> fois, donc 1, puis 2, et ainsi de suite jusqu'à 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code><em><strong></code>, <code></strong></em></code>, <code>***</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le nombre d'étoiles dépend de <code>i</code>, il change à chaque<br/>
tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code><em></code>, <code></em>*</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(3)</code> donne 3 tours, et le dernier affiche 3<br/>
étoiles grâce au <code>+ 1</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code><em> </em> *</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque tour produit sa propre ligne, et <code>"<em>" </em> k</code><br/>
colle les étoiles sans espace.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q30 : Des sommes affichées au fil de la boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme, les valeurs étant lues ligne par ligne ?<br/>
<pre><code>y = 0
for x in range(4):
    y = y + x
    print(y)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Afficher dans la boucle montre l'évolution de l'accumulateur ;<br/>
afficher après la boucle ne montre que sa valeur finale.</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>0 1 3 6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>y</code> cumule les valeurs de <code>x</code> et est affiché<br/>
après chaque ajout, d'où les sommes successives.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0 1 2 3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est <code>y</code> qui est affiché, pas <code>x</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le <code>print</code> est dans la boucle, il y a une ligne par<br/>
tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 3 6 10</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(4)</code> commence à 0, donc la première somme vaut<br/>
0.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
