<?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[<p>`<code>python<br/>
notes = [12, 15, 9, 18]<br/>
print(notes[1])<br/>
</code>`</p>
<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. notes[1] est le deuxième élément, notes[0] 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>15</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>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : notes[1] 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>12</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>9</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[<p>`<code>python<br/>
villes = ["Lyon", "Paris", "Nice"]<br/>
print(len(villes))<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>len renvoie le nombre d'éléments d'une liste. Les indices valides<br/>
vont de 0 à len(liste) - 1.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>14</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : len ne compte pas les caractères des chaînes, mais<br/>
les éléments de la liste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la liste contient trois chaînes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : len compte les éléments de la liste, trois<br/>
chaînes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>2</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>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q03 : Ajouter à la fin</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
panier = ["pain"]<br/>
panier.append("lait")<br/>
print(panier)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>liste.append(x) ajoute x à 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>['pain', 'lait']</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : append 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>['pain']</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : append 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>pain lait</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print affiche une liste entre crochets, avec ses<br/>
chaînes entre apostrophes.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>['lait', 'pain']</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : append ajoute toujours à la fin, jamais au début.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q04 : Un indice trop grand</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
t = [4, 8, 15]<br/>
print(t[3])<br/>
</code>`</p>
<p>Que se passe-t-il ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le plus grand indice d'une liste est len(liste) - 1. Le dépasser<br/>
déclenche IndexError: list index out of range, 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="0" format="html">
    <text><![CDATA[<p>Python affiche None, 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>
  <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 IndexError.</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>
</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>
<p>`<code>python<br/>
pixel = [10, 20, 30]<br/>
pixel[0] = 255<br/>
print(pixel)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>liste[i] = valeur remplace l'élément d'indice i. 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="0" format="html">
    <text><![CDATA[<p>[10, 255, 30]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'indice 0 désigne le premier élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>[255, 20, 30]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : l'affectation pixel[0] = 255 remplace<br/>
l'élément d'indice 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[255, 10, 20, 30]</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[<p>`<code>python<br/>
for v in [3, 5, 7]:<br/>
    print(v * 2)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>for v in liste donne à v 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="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>
  <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 : v reçoit les éléments de la liste, pas leurs<br/>
indices.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>6, 10 et 14</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : v prend successivement chaque élément, et son<br/>
double est affiché.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q07 : Une moyenne</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
releves = [12, 15, 9, 18]<br/>
total = 0<br/>
for r in releves:<br/>
    total = total + r<br/>
print(total / len(releves))<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La moyenne combine un accumulateur pour la somme et len 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="0" format="html">
    <text><![CDATA[<p>54.0</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="100" format="html">
    <text><![CDATA[<p>13.5</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>18.0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 18 est le dernier élément, pas la moyenne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>13.0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la division / ne tronque pas, 54 divisé par 4 vaut<br/>
13.5.</p>]]></text>
    </feedback>
  </answer>
</question>

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

<question type="multichoice">
  <name>
    <text>8. Listes — Q09 : Chercher le maximum</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
temp = [18, 24, 21, 27, 19]<br/>
maxi = temp[0]<br/>
for t in temp:<br/>
    if t &gt; maxi:<br/>
        maxi = t<br/>
print(maxi)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est le nombre d'éléments, pas le maximum.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>18</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>19</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="100" format="html">
    <text><![CDATA[<p>27</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : maxi part du premier élément et est remplacé à<br/>
chaque valeur plus grande, 24 puis 27.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q10 : Parcourir par indices</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
mots = ["a", "b", "c"]<br/>
for i in range(len(mots)):<br/>
    print(i, mots[i])<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Parcourir par indices avec range(len(liste)) 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="0" format="html">
    <text><![CDATA[<p>1 a, 2 b et 3 c</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>a, b et c</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="100" format="html">
    <text><![CDATA[<p>0 a, 1 b et 2 c</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : range(len(mots)) fournit les indices 0, 1 et<br/>
2, et mots[i] l'élément correspondant.</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 : 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[<p>`<code>python<br/>
carres = []<br/>
for n in range(1, 5):<br/>
    carres.append(n * n)<br/>
print(carres)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Une liste vide suivie d'un append à 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="0" format="html">
    <text><![CDATA[<p>[0, 1, 4, 9]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : range(1, 5) commence à 1, pas à 0.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[1, 4, 9, 16, 25]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est exclu par range(1, 5).</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[16]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : append ajoute sans effacer les éléments précédents.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>[1, 4, 9, 16]</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>
</question>

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

<question type="multichoice">
  <name>
    <text>8. Listes — Q13 : Le dernier élément</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
t = [7, 3, 9, 4]<br/>
print(t[len(t) - 1])<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le dernier élément est à l'indice len(liste) - 1, 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>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : len(t) vaut 4, donc len(t) - 1 vaut 3,<br/>
l'indice du dernier élément.</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 - 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</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>9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 est à l'indice 2, l'avant-dernier.</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[<p>`<code>python<br/>
codes = ["12", "7"]<br/>
print(codes[0] + codes[1])<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>19</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>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>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>127</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les éléments sont des chaînes, + les<br/>
concatène.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>12 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la concaténation n'insère pas d'espace.</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[<p>`<code>python<br/>
val = [1, 2, 3]<br/>
for i in range(len(val)):<br/>
    val[i] = val[i] * 10<br/>
print(val)<br/>
</code>`</p>
<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 liste[i]. 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>[10, 20, 30]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : à chaque tour, l'élément d'indice i est<br/>
remplacé par son produit par 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[10, 10, 10]</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>[1, 2, 3]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'affectation val[i] = ... modifie bien la liste.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[0, 10, 20]</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[<p>`<code>python<br/>
val = [1, 2, 3]<br/>
for v in val:<br/>
    v = v * 10<br/>
print(val)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans for v in val, la variable v est une copie de l'élément.<br/>
Modifier v 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="0" format="html">
    <text><![CDATA[<p>[30]</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>[10, 20, 30]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour modifier la liste, il faut réaffecter val[i],<br/>
pas la variable de boucle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>[1, 2, 3]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : v 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>Une erreur, v n'est pas modifiable</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : v 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[<p>`<code>python<br/>
l = [5, 6]<br/>
l.append(7)<br/>
l.append(8)<br/>
print(len(l), l[2])<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Chaque append ajoute un élément à la fin et augmente la longueur de<br/>
1. Le nouvel élément prend l'indice len - 1.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : deux append ajoutent deux éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 est à l'indice 3, le dernier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>4 7</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>2 7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : len compte les éléments après les ajouts.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q18 : Dépouiller un sondage</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
reponses = ["oui", "non", "oui", "oui"]<br/>
c = 0<br/>
for r in reponses:<br/>
    if r == "oui":<br/>
        c = c + 1<br/>
print(c, len(reponses) - c)<br/>
</code>`</p>
<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 len, 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="0" format="html">
    <text><![CDATA[<p>1 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le compteur compte les oui, qui sont 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le second nombre est len(reponses) - c, soit 1.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c ne compte que les oui.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3 1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 3 oui, et le reste, 4 moins 3, soit 1<br/>
non.</p>]]></text>
    </feedback>
  </answer>
</question>

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

<question type="multichoice">
  <name>
    <text>8. Listes — Q20 : Échanger deux éléments</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
t = [1, 2, 3]<br/>
tmp = t[0]<br/>
t[0] = t[2]<br/>
t[2] = tmp<br/>
print(t)<br/>
</code>`</p>
<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="0" format="html">
    <text><![CDATA[<p>[1, 2, 1]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : t[0] = t[2] donne 3 au premier élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>[3, 2, 1]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : tmp 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>[3, 2, 3]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : t[2] = tmp remet la valeur sauvegardée, 1, à la fin.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[1, 2, 3]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux affectations modifient bien les éléments.</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 print([1, 2] + [3]) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Comme pour les chaînes, + 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>[1, 2, 3]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : + 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>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : + entre listes ne calcule pas la somme des éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[[1, 2], [3]]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : + 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>[1, 2, 3, 3]</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>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q22 : La somme d'une liste</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche print(sum([4, 8, 5])) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>sum, len, max et min 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="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est le dernier élément, pas la somme.</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 d'éléments, donné par len.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 8 est le plus grand élément, donné par max.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>17</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : sum additionne tous les éléments de la liste.</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 print([0] * 3) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>[valeur] * n est la façon la plus simple de créer une liste de<br/>
n 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="0" format="html">
    <text><![CDATA[<p>0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le résultat est une liste, pas un nombre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>[0, 0, 0]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : multiplier une liste par un entier la répète.<br/>
[0] * 3 contient 3 zéros.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[3]</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>[0, 3]</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>
</question>

<question type="multichoice">
  <name>
    <text>8. Listes — Q24 : Le plus petit élément</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche print(min([4, 2, 9])) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>min et max 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="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 3 est le nombre d'éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : min renvoie le plus petit élément de la liste.</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 premier élément, pas forcément le plus<br/>
petit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 9 est le plus grand, donné par max.</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/>
`<code>python<br/>
liste = [5, 10, 20, 40]<br/>
print(liste[0] + liste[2])<br/>
</code>`</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="0" format="html">
    <text><![CDATA[<p>2</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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>15</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>50</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="100" format="html">
    <text><![CDATA[<p>25</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : liste[0] est le premier élément et liste[2]<br/>
le troisième, les indices commençant à 0.</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 print(len(['abc', 'de'])) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>len d'une liste compte ses éléments ; len 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="0" format="html">
    <text><![CDATA[<p>3</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="100" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : len 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>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 est le nombre total de lettres, mais len<br/>
appliqué à la liste compte ses éléments.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, len ne s'appliquant qu'aux chaînes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : len 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/>
`<code>python<br/>
liste = [3, 5, 9, 1]<br/>
s = 0<br/>
for i in range(len(liste)):<br/>
    s = s + liste[i]<br/>
print(s)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Parcourir par indices avec range(len(liste)) permet d'accéder à<br/>
chaque élément par liste[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>4</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="100" format="html">
    <text><![CDATA[<p>18</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : i parcourt les indices de 0 à 3, et<br/>
liste[i] désigne chaque élément, tous additionnés dans s.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : s accumule tous les éléments, pas seulement le<br/>
dernier.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>6</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait la somme des indices, mais c'est liste[i]<br/>
qui est ajouté, pas i.</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/>
`<code>python<br/>
a = [1, 2]<br/>
b = a<br/>
b.append(3)<br/>
print(a)<br/>
</code>`</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>[1, 2, 3]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : b = a ne copie pas la liste, les deux noms<br/>
désignent la même liste. L'ajout fait par b se voit par a.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[3]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : append ajoute à la fin, il ne remplace pas le<br/>
contenu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[1, 2]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : il n'y a qu'une seule liste, modifiée par append,<br/>
quel que soit le nom utilisé.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, b ne pouvant modifier une liste créée par a</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/>
`<code>python<br/>
notes = [[12, 15], [9, 11]]<br/>
print(notes[1][0])<br/>
</code>`</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>9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : notes[1] est la seconde liste, et [0] en<br/>
prend le premier élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>[9, 11]</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : notes[1] seul donnerait cette liste, mais le second<br/>
indice en extrait un élément.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>15</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait notes[0][1], les deux indices ont été<br/>
échangés.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>12</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait notes[0][0], le premier élément de la<br/>
première liste.</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/>
`<code>python<br/>
liste = [6, 7, 6, 9, 6]<br/>
pos = -1<br/>
for i in range(len(liste)):<br/>
    if liste[i] == 6:<br/>
        pos = i<br/>
print(pos)<br/>
</code>`</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="0" format="html">
    <text><![CDATA[<p>6</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>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 3 est le nombre de fois où 6 apparaît, mais pos<br/>
reçoit un indice, pas un compte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0</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 pos.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : pos est réécrit à chaque rencontre de 6. À<br/>
la fin, il garde l'indice de la dernière rencontre, 4.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
