<?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[<p>`<code>python<br/>
for i in range(4):<br/>
    print(i)<br/>
</code>`</p>
<p>Quelles valeurs sont affichées ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(n) produit les entiers de 0 à n - 1, soit n 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="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. range(4) s'arrête avant 4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0, 1, 2 et 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : range(4) 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 : range commence à 0 quand on ne lui donne qu'un<br/>
argument.</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 : i change à chaque tour, il prend les valeurs<br/>
successives fournies par range.</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>
<p>`<code>python<br/>
for k in range(2, 7):<br/>
    avancer()<br/>
</code>`</p>
<p>Combien de pas fait-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(a, b) fournit les entiers de a inclus à b exclu, soit<br/>
b - a 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="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>
  <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>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="100" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : k 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>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q03 : Un range qui descend</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
for n in range(10, 0, -3):<br/>
    print(n)<br/>
</code>`</p>
<p>Quelles valeurs sont affichées ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(depart, fin, pas) accepte un pas négatif pour compter à<br/>
rebours. La borne fin 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>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>
  <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>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>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q04 : La somme des premiers entiers</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
total = 0<br/>
for i in range(1, 6):<br/>
    total = total + i<br/>
print(total)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : total accumule les valeurs successives, il ne garde<br/>
pas la dernière.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>15</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>21</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 21 ajouterait 6, qui est exclu par range(1, 6).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</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>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q05 : Compter les multiples</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
compte = 0<br/>
for n in range(1, 21):<br/>
    if n % 5 == 0:<br/>
        compte = compte + 1<br/>
print(compte)<br/>
</code>`</p>
<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 if 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>4</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>5</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>20</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>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 20 est bien parcouru, range(1, 21) 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[<p>`<code>python<br/>
for i in range(3):<br/>
    x = i * 10<br/>
print(x)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>0</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="100" format="html">
    <text><![CDATA[<p>20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : x est recalculé à chaque tour ; au dernier,<br/>
i vaut 2 et x vaut 20. Cette valeur subsiste après la<br/>
boucle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>30</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : i prend les valeurs 0, 1 et 2, jamais 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, x 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[<p>`<code>python<br/>
for lettre in "SNT":<br/>
    print(lettre)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>for sait parcourir une chaîne : la variable prend successivement<br/>
chaque caractère. Pas besoin de range 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="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>lettre trois fois, sur trois lignes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print(lettre) affiche la valeur de la variable, un<br/>
caractère différent à chaque tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>SNT 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="100" format="html">
    <text><![CDATA[<p>S, N et T, 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 print occupe une ligne.</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[<p>`<code>python<br/>
compte = 0<br/>
for c in "programmation":<br/>
    if c == "a":<br/>
        compte = compte + 1<br/>
print(compte)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque a rencontré ajoute 1, et il y en a 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : en épelant le mot, on ne trouve que 2 fois la lettre a.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : en épelant « programmation », on trouve 2 fois la<br/>
lettre a.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>13</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 13 est le nombre de tours, mais le compteur n'augmente<br/>
que sur les a.</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[<p>`<code>python<br/>
s = 0<br/>
for k in range(3):<br/>
    print(s)<br/>
    s = s + k<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La place du print dans le corps de la boucle change ce qui est<br/>
affiché. Une trace tour par tour, avec les valeurs de k et de s,<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="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/>
print vient avant l'ajout.</p>]]></text>
    </feedback>
  </answer>
  <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 s vaut 0 ; puis on ajoute 0.<br/>
Au deuxième, s vaut encore 0 ; puis on ajoute 1. Au troisième,<br/>
s vaut 1.</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 s, pas k.</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 : k 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[<p>`<code>python<br/>
for i in range(2):<br/>
    for j in range(3):<br/>
        print(i, j)<br/>
</code>`</p>
<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, (0, 0), (0, 1), et<br/>
ainsi de suite jusqu'à (0, 2), puis la même chose pour chaque<br/>
valeur suivante de i.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle intérieure est relancée entièrement pour<br/>
chaque valeur de i.</p>]]></text>
    </feedback>
  </answer>
  <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 i, 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>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[<p>`<code>python<br/>
for i in range(1, 10, 2):<br/>
    print(i)<br/>
</code>`</p>
<p>Quelle est la dernière valeur affichée ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Avec trois arguments, range 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>9</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>10</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>8</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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 est encore strictement inférieur à 10, il est<br/>
affiché.</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[<p>`<code>python<br/>
p = 1<br/>
for i in range(1, 5):<br/>
    p = p * i<br/>
print(p)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>120</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 120 inclurait le facteur 5, exclu par range(1, 5).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : p part de 1, pas de 0. Un produit initialisé à 0<br/>
resterait nul.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>24</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>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 serait la somme de 1 à 4, or la boucle multiplie.</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[<p>`<code>python<br/>
for i in range(3):<br/>
    i = i + 10<br/>
    print(i)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Au début de chaque tour, for donne à sa variable la valeur suivante<br/>
de range, 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="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>10, 21 et 32</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la modification de i ne se cumule pas. range<br/>
réaffecte i au début de chaque tour.</p>]]></text>
    </feedback>
  </answer>
  <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, i reçoit la valeur suivante de<br/>
range, 0, 1 et 2, avant l'ajout de 10.</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>
<p>`<code>python<br/>
for i in range(5):<br/>
    print(i)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(n) compte de 0 à n - 1. 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="0" format="html">
    <text><![CDATA[<p>Oui, cinq fois de suite</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : i change à chaque tour et ne vaut jamais 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 à range 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="100" format="html">
    <text><![CDATA[<p>Non, range(5) s'arrête à 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : range(5) fournit 0, 1, 2, 3 et 4, soit cinq<br/>
valeurs, mais pas 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 a à b inclus, on écrit range(a, b + 1). 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>for n in range(3, 13):</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>for n in range(13, 3):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec un départ supérieur à la borne et un pas positif,<br/>
range est vide : aucun tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>for n in range(3, 12):</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>for n in range(12):</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette boucle part de 0 et s'arrête à 11.</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[<p>`<code>python<br/>
s = 0<br/>
for n in range(1, 11):<br/>
    if n % 2 == 0:<br/>
        s = s + n<br/>
print(s)<br/>
</code>`</p>
<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>30</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>20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 est bien parcouru, range(1, 11) va jusqu'à 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>25</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>55</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>
</question>

<question type="multichoice">
  <name>
    <text>5. Boucles bornées : for — Q17 : Chercher un maximum</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
maxi = 0<br/>
for x in range(1, 6):<br/>
    valeur = x * (6 - x)<br/>
    if valeur &gt; maxi:<br/>
        maxi = valeur<br/>
print(maxi)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 6 n'est jamais une valeur de x * (6 - x).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>9</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 x égal à 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</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>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est la dernière valeur calculée, mais maxi garde la<br/>
plus grande rencontrée.</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[<p>`<code>python<br/>
for t in range(3, 0, -1):<br/>
    print(t)<br/>
print("Partez")<br/>
</code>`</p>
<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 Partez</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>2, 1, 0 puis Partez</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>3, 2, 1, 0 puis Partez</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>Partez seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(3, 0, -1) 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[<p>`<code>python<br/>
mot = ""<br/>
for c in "abc":<br/>
    mot = c + mot<br/>
print(mot)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>abcabc</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>ccc</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : mot conserve les caractères précédents.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>cba</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : chaque caractère est placé devant ce qui est<br/>
déjà construit : a, puis ba, puis cba.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>abc</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait le résultat de mot = mot + c, qui ajoute à<br/>
la fin.</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[<p>`<code>python<br/>
for i in range(5, 5):<br/>
    print(i)<br/>
print("Fin")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle for sur un range 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="0" format="html">
    <text><![CDATA[<p>0, 1, 2, 3, 4 puis Fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait range(5). Avec deux arguments, le départ<br/>
est 5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, un range ne peut pas être vide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un range vide est parfaitement valable, la boucle<br/>
est simplement sautée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5 puis Fin</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="100" format="html">
    <text><![CDATA[<p>Fin seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : range(5, 5) ne contient aucune valeur, la<br/>
boucle ne fait aucun tour, et le programme continue.</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 hop ?<br/>
`<code>python<br/>
for i in range(3):<br/>
    print("hop")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(n) 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="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/>
range(3).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(3) 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>Une seule fois, i n'étant pas utilisé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la boucle se répète même si i ne sert pas dans le<br/>
corps.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3 fois</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : range(3) fournit 3 valeurs, de 0 à 2,<br/>
donc le corps de la boucle s'exécute 3 fois.</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/>
`<code>python<br/>
for i in range(1, 4):<br/>
    print(i * 10)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>range(1, 4) 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="0" format="html">
    <text><![CDATA[<p>0 10 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(1, 4) commence à 1, pas à 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>10 20 30</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : i 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>1 2 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est i * 10 qui est affiché, pas i.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10 20 30 40</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la borne 4 est exclue, i ne la prend jamais.</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/>
`<code>python<br/>
s = 0<br/>
for i in range(3):<br/>
    s = s + 2<br/>
print(s)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une boucle qui ajoute une constante calcule une multiplication :<br/>
3 tours de + 2 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="0" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : s grandit à chaque tour, il ne reste pas à 2.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</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="100" format="html">
    <text><![CDATA[<p>6</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>5</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/>
`<code>python<br/>
for i in range(5):<br/>
    if i % 2 == 1:<br/>
        print(i)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un if 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="0" format="html">
    <text><![CDATA[<p>1 3 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(5) 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>0 1 2 3 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le if filtre les valeurs, toutes ne sont pas<br/>
affichées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>1 3</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>0 2 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : i % 2 == 1 retient les impairs, pas les pairs.</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/>
`<code>python<br/>
n = 0<br/>
for i in range(10):<br/>
    if i &gt; 6:<br/>
        n = n + 1<br/>
print(n)<br/>
</code>`</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>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les valeurs de range(10) 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>6</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>10</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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : i &gt; 6 exclut 6 lui-même, et range(10) s'arrête<br/>
à 9.</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/>
`<code>python<br/>
for i in range(3):<br/>
    print(i, i * i)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un print 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="0" format="html">
    <text><![CDATA[<p>3 9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le print est dans la boucle, une ligne par tour est<br/>
affichée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1 1, 2 4, 3 9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(3) commence à 0 et exclut 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0 0, 1 2, 2 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : i * i est le carré de i, pas son double.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0 0, 1 1, 2 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pour chaque valeur de i, de 0 à 2, la ligne<br/>
affiche i puis son carré.</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/>
`<code>python<br/>
total = 0<br/>
for i in range(5):<br/>
    total = total + i * 2<br/>
print(total)<br/>
</code>`</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="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 est seulement la dernière valeur ajoutée,<br/>
total accumule toutes les autres.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : total part de 0 mais grandit à chaque tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 est la somme des valeurs de i sans le<br/>
doublement.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>20</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>
</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/>
`<code>python<br/>
s = 0<br/>
for i in range(10):<br/>
    if i % 3 == 0:<br/>
        s = s + i<br/>
print(s)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Filtre et accumulateur se combinent : le if 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>18</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>45</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 45 est la somme de toutes les valeurs de<br/>
range(10), sans le filtre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 10 est la borne de la plage, elle n'est même pas<br/>
parcourue.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4</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>
</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/>
`<code>python<br/>
for i in range(3):<br/>
    print("<em>" </em> (i + 1))<br/>
</code>`</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="0" format="html">
    <text><![CDATA[<p><em> </em> *</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque tour produit sa propre ligne, et "<em>" </em> k<br/>
colle les étoiles sans espace.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><em>, </em>*</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(3) donne 3 tours, et le dernier affiche 3<br/>
étoiles grâce au + 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><em><strong>, </strong></em>, ***</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le nombre d'étoiles dépend de i, il change à chaque<br/>
tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><em>, <strong>, </strong></em></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : au tour i, la chaîne "*" est répétée<br/>
i + 1 fois, donc 1, puis 2, et ainsi de suite jusqu'à 3.</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/>
`<code>python<br/>
y = 0<br/>
for x in range(4):<br/>
    y = y + x<br/>
    print(y)<br/>
</code>`</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="0" format="html">
    <text><![CDATA[<p>1 3 6 10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(4) commence à 0, donc la première somme vaut<br/>
0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le print est dans la boucle, il y a une ligne par<br/>
tour.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0 1 2 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est y qui est affiché, pas x.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>0 1 3 6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : y cumule les valeurs de x et est affiché<br/>
après chaque ajout, d'où les sommes successives.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
