<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/SNT/8. Listes</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>Créer une liste, lire et modifier un élément par son indice, qui<br/>
commence à 0 ; la longueur avec len ; ajouter avec append ; tester<br/>
la présence avec in ; parcourir une liste avec for, par éléments ou<br/>
par indices ; calculer une somme, un maximum, un effectif. En<br/>
coordination avec le programme de mathématiques de seconde.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q01 : Lire un élément</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>notes = [12, 15, 9, 18]
print(notes[1])</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une liste range ses éléments à des positions numérotées à partir de<br/>
0. <code>notes[1]</code> est le deuxième élément, <code>notes[0]</code> le premier.</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 : les indices commencent à 0. L'indice 1 désigne<br/>
le deuxième élément, 15.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>12</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 12 est à l'indice 0, le premier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>notes[1]</code> renvoie l'élément rangé à l'indice 1, pas<br/>
l'indice lui-même.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>9</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 est à l'indice 2.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q02 : Le nombre d'éléments</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>villes = ["Lyon", "Paris", "Nice"]
print(len(villes))</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>len</code> renvoie le nombre d'éléments d'une liste. Les indices valides<br/>
vont de 0 à <code>len(liste) - 1</code>.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>len</code> compte les éléments de la liste, trois<br/>
chaînes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 2 est le plus grand indice, mais il y a trois<br/>
éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la liste contient trois chaînes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>14</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>len</code> ne compte pas les caractères des chaînes, mais<br/>
les éléments de la liste.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q03 : Ajouter à la fin</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>panier = ["pain"]
panier.append("lait")
print(panier)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>liste.append(x)</code> ajoute <code>x</code> à la fin de la liste. La liste est<br/>
modifiée sur place : il n'y a rien à réaffecter.</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>['pain', 'lait']</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>append</code> ajoute l'élément à la fin de la liste,<br/>
qui est modifiée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>['lait', 'pain']</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>append</code> ajoute toujours à la fin, jamais au début.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>['pain']</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>append</code> modifie bien la liste, sans qu'il soit<br/>
nécessaire de réaffecter.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>pain lait</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>print</code> affiche une liste entre crochets, avec ses<br/>
chaînes entre apostrophes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q04 : Un indice trop grand</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>t = [4, 8, 15]
print(t[3])</code></pre>
<p>Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le plus grand indice d'une liste est <code>len(liste) - 1</code>. Le dépasser<br/>
déclenche <code>IndexError: list index out of range</code>, une erreur très<br/>
courante.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Une erreur, les indices de cette liste vont de 0 à 2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : trois éléments occupent les indices 0, 1 et 2.<br/>
L'indice 3 n'existe pas, d'où une erreur <code>IndexError</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 15, le dernier élément</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le dernier élément est à l'indice 2, pas 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche <code>None</code>, il n'y a rien à cet indice</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un indice hors de la liste provoque une erreur, pas<br/>
une valeur vide.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Python affiche 0, valeur par défaut d'une case vide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a pas de case vide, la liste s'arrête à<br/>
l'indice 2.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q05 : Modifier un élément</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un programme retouche la première composante d'un pixel.</p>
<pre><code>pixel = [10, 20, 30]
pixel[0] = 255
print(pixel)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>liste[i] = valeur</code> remplace l'élément d'indice <code>i</code>. La longueur de<br/>
la liste ne change pas.</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>[255, 20, 30]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'affectation <code>pixel[0] = 255</code> remplace<br/>
l'élément d'indice 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[10, 255, 30]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'indice 0 désigne le premier élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[255, 10, 20, 30]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'affectation par indice remplace, elle n'insère pas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, une liste ne se modifie pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une liste est modifiable, élément par élément.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q06 : Parcourir une liste</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>for v in [3, 5, 7]:
    print(v * 2)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>for v in liste</code> donne à <code>v</code> chaque élément à son tour, du premier au<br/>
dernier. C'est la façon la plus simple de traiter tous les éléments.</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, 10 et 14</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>v</code> prend successivement chaque élément, et son<br/>
double est affiché.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3, 5 et 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque élément est multiplié par 2 avant l'affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0, 2 et 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>v</code> reçoit les éléments de la liste, pas leurs<br/>
indices.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6, 10, 14, 6, 10 et 14</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la liste est parcourue une seule fois, trois tours.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q07 : Une moyenne</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>releves = [12, 15, 9, 18]
total = 0
for r in releves:
    total = total + r
print(total / len(releves))</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La moyenne combine un accumulateur pour la somme et <code>len</code> pour<br/>
l'effectif. Le même schéma sert pour n'importe quelle liste de<br/>
nombres.</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>13.5</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la somme vaut 54, divisée par 4 éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>54.0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 54 est la somme, mais le programme la divise par la<br/>
longueur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>13.0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la division <code>/</code> ne tronque pas, 54 divisé par 4 vaut<br/>
13.5.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>18.0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 18 est le dernier élément, pas la moyenne.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q08 : Tester la présence</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>inscrits = ["Ana", "Bob", "Chloé"]
print("bob" in inscrits)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>x in liste</code> vaut <code>True</code> si un élément de la liste est égal à <code>x</code>.<br/>
L'égalité est exacte, majuscules comprises.</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>False</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>in</code> cherche un élément exactement égal, et<br/>
<code>"bob"</code> diffère de <code>"Bob"</code> par sa majuscule.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>True</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la comparaison des chaînes distingue majuscules et<br/>
minuscules.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>in</code> renvoie un booléen, pas une position.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>in</code> ne s'applique pas aux chaînes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>in</code> teste si une valeur figure dans la liste, quel que<br/>
soit son type.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q09 : Chercher le maximum</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>temp = [18, 24, 21, 27, 19]
maxi = temp[0]
for t in temp:
    if t &gt; maxi:
        maxi = t
print(maxi)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour trouver le plus grand élément, on part du premier et on parcourt<br/>
la liste en remplaçant le maximum courant dès qu'on trouve mieux.<br/>
Partir du premier élément évite de choisir une valeur arbitraire.</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>27</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>maxi</code> part du premier élément et est remplacé à<br/>
chaque valeur plus grande, 24 puis 27.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>18</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 18 est la valeur de départ, dépassée par une valeur<br/>
plus grande.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>19</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 19 est le dernier élément, mais il ne dépasse pas 27.</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 le nombre d'éléments, pas le maximum.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q10 : Parcourir par indices</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>mots = ["a", "b", "c"]
for i in range(len(mots)):
    print(i, mots[i])</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Parcourir par indices avec <code>range(len(liste))</code> donne accès à la<br/>
position de chaque élément, ce qui est utile pour modifier la liste<br/>
ou comparer des voisins.</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 a</code>, <code>1 b</code> et <code>2 c</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>range(len(mots))</code> fournit les indices 0, 1 et<br/>
2, et <code>mots[i]</code> l'élément correspondant.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 a</code>, <code>2 b</code> et <code>3 c</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les indices commencent à 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>a</code>, <code>b</code> et <code>c</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche aussi l'indice, avant l'élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0</code>, <code>1</code> et <code>2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque ligne contient l'indice et l'élément.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q11 : Construire une liste dans une boucle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>carres = []
for n in range(1, 5):
    carres.append(n * n)
print(carres)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une liste vide suivie d'un <code>append</code> à chaque tour est le schéma pour<br/>
construire une liste. Elle s'allonge d'un élément par 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>[1, 4, 9, 16]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : on part d'une liste vide et on ajoute les carrés<br/>
de 1, 2, 3 et 4.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[0, 1, 4, 9]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>range(1, 5)</code> commence à 1, pas à 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[1, 4, 9, 16, 25]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est exclu par <code>range(1, 5)</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[16]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>append</code> ajoute sans effacer les éléments précédents.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q12 : Compter au-dessus d'un seuil</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>mesures = [31, 28, 35, 40, 22]
n = 0
for m in mesures:
    if m &gt; 30:
        n = n + 1
print(n)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le compteur conditionnel s'applique aux listes comme aux <code>range</code> :<br/>
on parcourt les éléments et on ajoute 1 quand le test est vrai.</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 : 31, 35 et 40 dépassent 30.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 31 est strictement supérieur à 30, il compte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 28 et 22 ne dépassent pas 30.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>106</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 106 est la somme des valeurs retenues, mais le<br/>
programme les compte, il ne les additionne pas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q13 : Le dernier élément</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>t = [7, 3, 9, 4]
print(t[len(t) - 1])</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le dernier élément est à l'indice <code>len(liste) - 1</code>, puisque la<br/>
numérotation commence à 0. C'est un calcul à connaître.</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 : <code>len(t)</code> vaut 4, donc <code>len(t) - 1</code> vaut 3,<br/>
l'indice du dernier élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>9</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 est à l'indice 2, l'avant-dernier.</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 la valeur de l'indice calculé, pas l'élément qui<br/>
s'y trouve.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, l'indice 4 n'existe pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'indice calculé est 3, pas 4, grâce au <code>- 1</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q14 : Une liste de chaînes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>codes = ["12", "7"]
print(codes[0] + codes[1])</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une liste peut contenir des chaînes, des nombres ou des booléens.<br/>
Chaque élément garde son type, et les opérateurs se comportent en<br/>
conséquence.</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>127</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les éléments sont des chaînes, <code>+</code> les<br/>
concatène.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>19</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 19 supposerait des entiers. Entre guillemets, ce sont<br/>
des chaînes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>12 7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la concaténation n'insère pas d'espace.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, on n'additionne pas des éléments de liste</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un élément de liste s'utilise comme n'importe quelle<br/>
valeur de son type.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q15 : Modifier tous les éléments</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>val = [1, 2, 3]
for i in range(len(val)):
    val[i] = val[i] * 10
print(val)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Pour modifier les éléments d'une liste, on parcourt les indices et<br/>
on réaffecte <code>liste[i]</code>. C'est le rôle du parcours par indices.</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 : à chaque tour, l'élément d'indice <code>i</code> est<br/>
remplacé par son produit par 10.</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 : l'affectation <code>val[i] = ...</code> modifie bien la liste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[10, 10, 10]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque élément est multiplié par 10, ils restent<br/>
différents.</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 : on multiplie les valeurs, pas les indices.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q16 : Un parcours qui ne modifie rien</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>val = [1, 2, 3]
for v in val:
    v = v * 10
print(val)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans <code>for v in val</code>, la variable <code>v</code> est une copie de l'élément.<br/>
Modifier <code>v</code> ne touche pas la liste ; il faut passer par les indices<br/>
pour la changer.</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, 2, 3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>v</code> reçoit une copie de chaque élément. La<br/>
modifier ne change pas la liste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[10, 20, 30]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour modifier la liste, il faut réaffecter <code>val[i]</code>,<br/>
pas la variable de 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 : la liste n'est ni réduite ni modifiée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>v</code> n'est pas modifiable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>v</code> est une variable ordinaire, on peut la modifier,<br/>
mais sans effet sur la liste.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q17 : Longueur après ajouts</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>l = [5, 6]
l.append(7)
l.append(8)
print(len(l), l[2])</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque <code>append</code> ajoute un élément à la fin et augmente la longueur de<br/>
1. Le nouvel élément prend l'indice <code>len - 1</code>.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>4 7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : deux ajouts portent la longueur à 4, et<br/>
l'élément d'indice 2 est 7.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4 8</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 est à l'indice 3, le dernier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2 7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>len</code> compte les éléments après les ajouts.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3 7</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : deux <code>append</code> ajoutent deux éléments.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q18 : Dépouiller un sondage</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>reponses = ["oui", "non", "oui", "oui"]
c = 0
for r in reponses:
    if r == "oui":
        c = c + 1
print(c, len(reponses) - c)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Compter les éléments égaux à une valeur est un compteur<br/>
conditionnel. Le complément s'obtient avec <code>len</code>, sans second<br/>
parcours.</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 1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 3 <code>oui</code>, et le reste, 4 moins 3, soit 1<br/>
<code>non</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1 3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le compteur compte les <code>oui</code>, qui sont 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>3 4</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le second nombre est <code>len(reponses) - c</code>, soit 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>4 3</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>c</code> ne compte que les <code>oui</code>.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q19 : Une liste vide</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>l = []
print(len(l), l)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>[]</code> est la liste vide : longueur 0, aucun indice valide. On la<br/>
remplit ensuite avec <code>append</code>.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p><code>0 []</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : une liste vide a zéro élément et s'affiche<br/>
<code>[]</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, une liste ne peut pas être vide</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la liste vide existe, c'est le point de départ habituel<br/>
avant des <code>append</code>.</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>len(l)</code> est affiché en premier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>None</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>[]</code> est une liste, pas l'absence de valeur.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q20 : Échanger deux éléments</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<pre><code>t = [1, 2, 3]
tmp = t[0]
t[0] = t[2]
t[2] = tmp
print(t)</code></pre>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'échange de deux éléments suit le schéma de l'échange de deux<br/>
variables, avec une variable temporaire. C'est l'opération de base<br/>
des algorithmes de tri.</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, 2, 1]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>tmp</code> garde 1, le premier élément reçoit 3, et<br/>
le dernier récupère 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[1, 2, 3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux affectations modifient bien les éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[3, 2, 3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>t[2] = tmp</code> remet la valeur sauvegardée, 1, à la fin.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[1, 2, 1]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>t[0] = t[2]</code> donne 3 au premier élément.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q21 : Deux listes mises bout à bout</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche <code>print([1, 2] + [3])</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Comme pour les chaînes, <code>+</code> concatène les listes : le résultat<br/>
contient les éléments de la première puis ceux de la seconde.</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, 2, 3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>+</code> entre deux listes les met bout à bout, dans<br/>
l'ordre, en une seule liste.</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 : <code>+</code> ne crée pas une liste de listes, il enchaîne les<br/>
éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[1, 2, 3, 3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucun élément n'est dupliqué ni additionné, les listes<br/>
sont simplement enchaînées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>+</code> entre listes ne calcule pas la somme des éléments.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q22 : La somme d'une liste</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche <code>print(sum([4, 8, 5]))</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>sum</code>, <code>len</code>, <code>max</code> et <code>min</code> sont des fonctions prêtes à l'emploi<br/>
sur les listes de nombres.</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>17</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>sum</code> additionne tous les éléments de la liste.</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 d'éléments, donné par <code>len</code>.</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 le plus grand élément, donné par <code>max</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 : 5 est le dernier élément, pas la somme.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q23 : Une liste remplie de zéros</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche <code>print([0] * 3)</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>[valeur] * n</code> est la façon la plus simple de créer une liste de<br/>
<code>n</code> cases toutes identiques.</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, 0]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : multiplier une liste par un entier la répète.<br/>
<code>[0] * 3</code> contient 3 zéros.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la multiplication ne change pas les éléments, elle les<br/>
répète.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[0, 3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 3 n'est pas ajouté à la liste, il indique combien de<br/>
fois elle est répétée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>0</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le résultat est une liste, pas un nombre.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q24 : Le plus petit élément</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche <code>print(min([4, 2, 9]))</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>min</code> et <code>max</code> parcourent la liste pour trouver ses extrêmes, sans<br/>
se soucier de l'ordre des éléments.</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 : <code>min</code> renvoie le plus petit élément de la liste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>9</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 est le plus grand, donné par <code>max</code>.</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 premier élément, pas forcément le plus<br/>
petit.</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 d'éléments.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q25 : Deux éléments additionnés</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>liste = [5, 10, 20, 40]
print(liste[0] + liste[2])</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'indice 0 désigne le premier élément, l'indice 2 le troisième.<br/>
Cette règle vaut pour toute liste.</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>25</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>liste[0]</code> est le premier élément et <code>liste[2]</code><br/>
le troisième, les indices commençant à 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>15</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la somme des deux premiers éléments, aux indices<br/>
0 et 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>50</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est la somme des éléments d'indices 1 et 3, comme si<br/>
les indices commençaient à 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>2</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les indices servent à désigner des éléments, ce ne sont<br/>
pas eux qui sont additionnés.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q26 : La longueur d'une liste de mots</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche <code>print(len(['abc', 'de']))</code> ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p><code>len</code> d'une liste compte ses éléments ; <code>len</code> d'une chaîne compte<br/>
ses caractères. Tout dépend de ce qu'on lui donne.</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 : <code>len</code> compte les éléments de la liste, ici des<br/>
chaînes, quelle que soit leur longueur.</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 le nombre total de lettres, mais <code>len</code><br/>
appliqué à la liste compte ses éléments.</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 la longueur du premier mot, pas celle de la<br/>
liste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>len</code> ne s'appliquant qu'aux chaînes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>len</code> s'applique aussi aux listes.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q27 : Une somme calculée par indices</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>liste = [3, 5, 9, 1]
s = 0
for i in range(len(liste)):
    s = s + liste[i]
print(s)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Parcourir par indices avec <code>range(len(liste))</code> permet d'accéder à<br/>
chaque élément par <code>liste[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><code>18</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>i</code> parcourt les indices de 0 à 3, et<br/>
<code>liste[i]</code> désigne chaque élément, tous additionnés dans <code>s</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 : ce serait la somme des indices, mais c'est <code>liste[i]</code><br/>
qui est ajouté, pas <code>i</code>.</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 tours, pas la somme des éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>1</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>s</code> accumule tous les éléments, pas seulement le<br/>
dernier.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q28 : Deux noms pour une même liste</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>a = [1, 2]
b = a
b.append(3)
print(a)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Affecter une liste à une autre variable crée un alias, pas une<br/>
copie. Pour obtenir une copie indépendante, il faut construire une<br/>
nouvelle liste.</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, 2, 3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : <code>b = a</code> ne copie pas la liste, les deux noms<br/>
désignent la même liste. L'ajout fait par <code>b</code> se voit par <code>a</code>.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[1, 2]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a qu'une seule liste, modifiée par <code>append</code>,<br/>
quel que soit le nom utilisé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[3]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>append</code> ajoute à la fin, il ne remplace pas le<br/>
contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, <code>b</code> ne pouvant modifier une liste créée par <code>a</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : rien n'interdit la modification, et c'est bien la même<br/>
liste qui change.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q29 : Un élément dans une liste de listes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>notes = [[12, 15], [9, 11]]
print(notes[1][0])</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans une liste de listes, le premier indice choisit la sous-liste,<br/>
le second l'élément dans cette sous-liste.</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 : <code>notes[1]</code> est la seconde liste, et <code>[0]</code> en<br/>
prend le premier élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>15</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait <code>notes[0][1]</code>, les deux indices ont été<br/>
échangés.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>12</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait <code>notes[0][0]</code>, le premier élément de la<br/>
première liste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>[9, 11]</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : <code>notes[1]</code> seul donnerait cette liste, mais le second<br/>
indice en extrait un élément.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q30 : La dernière position d'une valeur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
<pre><code>liste = [6, 7, 6, 9, 6]
pos = -1
for i in range(len(liste)):
    if liste[i] == 6:
        pos = i
print(pos)</code></pre></p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Sans arrêt anticipé, la boucle parcourt toute la liste : la<br/>
variable garde la trace de la dernière rencontre.</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 : <code>pos</code> est réécrit à chaque rencontre de 6. À<br/>
la fin, il garde l'indice de la dernière rencontre, 4.</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 l'indice de la première rencontre, mais la<br/>
boucle continue et écrase <code>pos</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 : 3 est le nombre de fois où 6 apparaît, mais <code>pos</code><br/>
reçoit un indice, pas un compte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p><code>6</code></p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'indice qui est mémorisé, pas la valeur<br/>
cherchée.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
