<?xml version="1.0" encoding="UTF-8"?>
<quiz>
<question type="category">
  <category>
    <text>$course$/QCM de NSI/SNT/4. Conditions et booléens</text>
  </category>
  <info format="html">
    <text><![CDATA[<p>L'instruction conditionnelle if, else et elif ; les comparaisons et<br/>
la différence entre égalité et affectation ; les opérateurs and, or<br/>
et not ; l'ordre des tests ; l'indentation qui délimite un bloc ; les<br/>
conditions imbriquées.</p>]]></text>
  </info>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q01 : Le bloc exécuté</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Une station météo déclenche une alerte.</p>
<p>`<code>python<br/>
temperature = 31<br/>
if temperature &gt; 30:<br/>
    print("Alerte chaleur")<br/>
print("Relevé terminé")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Le bloc indenté sous if ne s'exécute que si la condition est vraie.<br/>
Ce qui suit, au même niveau que if, s'exécute dans tous les cas.<br/>
L'indentation délimite le bloc.</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>Rien, la condition est fausse</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 31 &gt; 30 est vrai. Et même fausse, la condition ne<br/>
bloquerait pas la dernière ligne.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Alerte chaleur seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la dernière ligne n'est pas indentée, elle ne dépend<br/>
pas de la condition et s'exécute toujours.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Relevé terminé seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 31 est bien supérieur à 30, la condition est vraie et<br/>
l'alerte est affichée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Alerte chaleur puis Relevé terminé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la condition est vraie, le bloc indenté<br/>
s'exécute, puis le programme continue avec la ligne non<br/>
indentée, qui s'exécute dans tous les cas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q02 : Tester une égalité</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle ligne teste si la variable note vaut 20 ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>= affecte, == compare. Confondre les deux est l'erreur la plus<br/>
fréquente dans les conditions : Python refuse if note = 20:.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>if note == 20:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le double égal compare deux valeurs et donne un<br/>
booléen.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>if note = 20:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : un seul = est une affectation, interdite dans une<br/>
condition. Python signale une erreur de syntaxe.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>if note =&gt; 20:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'opérateur « supérieur ou égal » s'écrit &gt;=, et il ne<br/>
teste pas l'égalité seule.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>if note === 20:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le triple égal n'existe pas en Python.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q03 : Le sinon</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
age = 15<br/>
if age &gt;= 18:<br/>
    print("Majeur")<br/>
else:<br/>
    print("Mineur")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>else introduit le bloc exécuté quand la condition du if est<br/>
fausse. Exactement un des deux blocs s'exécute, jamais les deux,<br/>
jamais aucun.</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>Rien, aucune condition n'est vraie</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : else s'exécute précisément quand la condition est<br/>
fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Majeur puis Mineur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : if et else s'excluent, un seul des deux blocs<br/>
s'exécute.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Majeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la condition age &gt;= 18 est fausse pour 15.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Mineur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 15 n'est pas supérieur ou égal à 18, la<br/>
condition est fausse et le bloc else s'exécute.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q04 : Un et logique</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
a = 5<br/>
b = 12<br/>
print(a &lt; 10 and b &lt; 10)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>a and b est vrai seulement si a et b sont tous les deux vrais.<br/>
Dès qu'une des deux conditions est fausse, le résultat est False.</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>False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : and exige que les deux comparaisons soient<br/>
vraies. Or b &lt; 10 est fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'expression est un booléen, pas un nombre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une seule comparaison vraie ne suffit pas avec and.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, and ne s'applique pas à des comparaisons</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : and combine justement des booléens, comme ceux que<br/>
produisent les comparaisons.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q05 : Négation et ou logique</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
pluie = False<br/>
vent = True<br/>
print(not pluie and vent)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>not inverse un booléen, and exige deux vrais, or se contente<br/>
d'un seul. On évalue les not d'abord, puis les and, puis les<br/>
or.</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>True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : not pluie vaut True, et True and True<br/>
vaut True.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : not inverse pluie, qui devient True. Les deux<br/>
côtés du and sont alors vrais.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, not s'applique à un nombre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : not s'applique à un booléen et l'inverse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>not pluie</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : l'expression est évaluée, pas affichée telle quelle.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q06 : La première branche vraie</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
vitesse = 52<br/>
if vitesse &gt; 50:<br/>
    print("Excès")<br/>
elif vitesse &gt; 30:<br/>
    print("Vigilance")<br/>
else:<br/>
    print("Normal")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans une chaîne if, elif, else, les conditions sont testées de<br/>
haut en bas et une seule branche s'exécute : la première dont la<br/>
condition est vraie.</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>Vigilance</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première branche est vraie et prend la main.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Normal</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : else ne s'exécute que si toutes les conditions sont<br/>
fausses.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Excès</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la première condition est vraie, son bloc<br/>
s'exécute et les autres branches sont ignorées.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Excès puis Vigilance</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : vitesse &gt; 30 est aussi vrai, mais elif n'est testé<br/>
que si les conditions précédentes sont fausses.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q07 : Deux if successifs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
n = 52<br/>
if n &gt; 50:<br/>
    print("A")<br/>
if n &gt; 30:<br/>
    print("B")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Deux if à la suite sont indépendants : chacun est testé. Avec<br/>
elif, le second ne serait testé que si le premier était faux. Le<br/>
choix entre les deux change le comportement.</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>A puis B</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : deux if indépendants sont testés chacun leur<br/>
tour. Les deux conditions sont vraies.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>B seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première condition, 52 &gt; 50, est vraie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Rien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux conditions sont vraies pour 52.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>A seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : ce serait le cas avec elif. Ici, le second if est<br/>
testé quoi qu'il arrive.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q08 : Comparer des chaînes</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
reponse = "oui"<br/>
if reponse == "Oui":<br/>
    print("Accepté")<br/>
else:<br/>
    print("Refusé")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Deux chaînes sont égales si elles ont exactement les mêmes<br/>
caractères, majuscules comprises. Un programme qui accepte plusieurs<br/>
écritures doit les prévoir dans sa condition.</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>Rien, la condition ne peut pas être évaluée</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la condition vaut False, et le bloc else s'exécute.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Refusé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : "oui" et "Oui" diffèrent par leur première<br/>
lettre. Les chaînes sont comparées caractère par caractère.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, on ne compare pas des chaînes</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : == compare des chaînes sans difficulté.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Accepté</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la comparaison distingue majuscules et minuscules.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q09 : Tester un intervalle</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle condition est vraie exactement quand x est compris entre 10<br/>
et 20, bornes comprises ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un intervalle se traduit par deux inégalités reliées par and. Avec<br/>
or, l'une ou l'autre suffirait, ce qui ne restreint plus rien.</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 &lt;= x or x &lt;= 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : même problème, or rend la condition toujours vraie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x &gt;= 10 and x &gt;= 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette condition revient à x &gt;= 20, elle laisse passer<br/>
100.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>x &gt;= 10 or x &lt;= 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec or, tout nombre convient : 5 vérifie x &lt;= 20<br/>
et 50 vérifie x &gt;= 10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>x &gt;= 10 and x &lt;= 20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : il faut que les deux inégalités soient vraies en<br/>
même temps, d'où and.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q10 : La négation d'une comparaison</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Quelle condition est équivalente à not (age &gt;= 18) ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La négation de &gt;= est &lt;, celle de &gt; est &lt;=, celle de == est<br/>
!=. On vérifie toujours la borne : ici, 18 doit rendre la condition<br/>
fausse.</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>age &gt; 18</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 20 vérifie age &gt;= 18, sa négation est donc fausse,<br/>
alors que age &gt; 18 serait vrai.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>age &lt;= 18</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : pour 18, age &gt;= 18 est vrai, donc sa négation est<br/>
fausse, alors que age &lt;= 18 serait vrai.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>age &lt; 18</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : ne pas être supérieur ou égal à 18, c'est être<br/>
strictement inférieur à 18.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>age != 18</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 25 est différent de 18 mais vérifie age &gt;= 18.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q11 : Une variable modifiée par la condition</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
stock = 3<br/>
if stock &gt; 0:<br/>
    stock = stock - 1<br/>
print(stock)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un if exécute son bloc au plus une fois. Pour répéter la<br/>
soustraction jusqu'à zéro, il faudrait une boucle.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la condition est vraie, le stock diminue de 1,<br/>
puis la valeur 2 est affichée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le bloc ne s'exécute qu'une fois, un if n'est pas une<br/>
boucle.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 3 &gt; 0 est vrai, la soustraction a lieu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>-1</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : on retire 1 à 3, ce qui donne 2.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q12 : L'ordre des tests</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
note = 17<br/>
if note &gt;= 10:<br/>
    mention = "Admis"<br/>
elif note &gt;= 16:<br/>
    mention = "Très bien"<br/>
else:<br/>
    mention = "Refusé"<br/>
print(mention)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Dans une chaîne if, elif, l'ordre des tests compte : la<br/>
condition la plus restrictive doit venir en premier. Ici, il fallait<br/>
tester note &gt;= 16 avant note &gt;= 10.</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>Admis</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la première condition est vraie pour 17, elle<br/>
prend la main et la branche Très bien n'est jamais atteinte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Très bien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 17 &gt;= 16 est vrai, mais la condition note &gt;= 10,<br/>
testée avant, l'est aussi et l'emporte.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Admis puis Très bien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une seule branche s'exécute, et un seul print suit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Refusé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : else ne s'exécute que si toutes les conditions sont<br/>
fausses.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q13 : Une condition dans une autre</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
connecte = True<br/>
admin = False<br/>
if connecte:<br/>
    if admin:<br/>
        print("Réglages")<br/>
    else:<br/>
        print("Accueil")<br/>
else:<br/>
    print("Connexion")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'indentation indique à quel if chaque else se rattache. Une<br/>
condition imbriquée n'est testée que si la condition extérieure est<br/>
vraie.</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>Connexion</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le else extérieur correspond à connecte faux, ce<br/>
qui n'est pas le cas.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Réglages</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : admin vaut False, la condition intérieure est<br/>
fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Accueil</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : connecte est vrai, on entre dans le premier<br/>
bloc ; admin est faux, c'est le else intérieur qui<br/>
s'exécute.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Accueil puis Connexion</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux else appartiennent à des if différents,<br/>
repérés par l'indentation. Un seul s'exécute.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q14 : Différent de</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
print(4 != 4)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Les six comparaisons sont ==, !=, &lt;, &lt;=, &gt; et &gt;=. Chacune<br/>
renvoie True ou False.</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>False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : != signifie « différent de ». 4 n'est pas<br/>
différent de 4, la comparaison est fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : != est vrai seulement quand les deux valeurs<br/>
diffèrent.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>4</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une comparaison donne un booléen, pas un nombre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, l'opérateur != n'existe pas</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : != est l'opérateur de différence, l'inverse de ==.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q15 : Une ligne hors du bloc</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
solde = 5<br/>
if solde &gt;= 10:<br/>
    print("Achat possible")<br/>
print("Fin")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Seules les lignes indentées sous if dépendent de la condition. Une<br/>
ligne revenue au niveau du if s'exécute dans tous les cas.</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>Fin seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : la condition est fausse, le bloc indenté est<br/>
sauté. print("Fin") n'est pas indenté et s'exécute toujours.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Rien</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la dernière ligne ne dépend pas de la condition.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Achat possible puis Fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 5 n'est pas supérieur ou égal à 10, le premier<br/>
affichage n'a pas lieu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Achat possible seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse, seul Fin est affiché.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q16 : Deux lignes dans le bloc</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
batterie = 15<br/>
if batterie &lt; 10:<br/>
    print("Batterie faible")<br/>
    print("Brancher le chargeur")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un bloc contient toutes les lignes indentées au même niveau sous le<br/>
if. Elles s'exécutent toutes ou aucune, selon la condition.</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>Rien, les deux affichages dépendent de la condition</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les deux lignes sont indentées sous if, et la<br/>
condition 15 &lt; 10 est fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Batterie faible seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première ligne dépend aussi de la condition, qui<br/>
est fausse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Batterie faible puis Brancher le chargeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la condition est fausse, aucune des deux lignes ne<br/>
s'exécute.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Brancher le chargeur seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette ligne est indentée comme la précédente, elle fait<br/>
partie du même bloc.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q17 : Des booléens mémorisés</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
x = 7<br/>
pair = x % 2 == 0<br/>
petit = x &lt; 10<br/>
print(pair, petit, pair or petit)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un booléen se range dans une variable comme n'importe quelle valeur.<br/>
On peut ensuite le combiner avec and, or et not, ce qui rend<br/>
les conditions lisibles.</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>False True True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 7 est impair, donc pair vaut False ; 7 est<br/>
inférieur à 10, donc petit vaut True ; un seul vrai suffit<br/>
au or.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>False False False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : x &lt; 10 est vrai pour 7.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>False True False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : or est vrai dès qu'un des deux booléens est vrai.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>True True True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : 7 % 2 vaut 1, pair est faux.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q18 : Compléter une condition</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Un arrosage automatique se déclenche si l'humidité du sol est<br/>
inférieure à 30 et qu'il ne pleut pas. pluie est un booléen.<br/>
Quelle ligne convient ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Traduire une phrase en condition demande de repérer le connecteur,<br/>
« et » devient and, et les négations, « ne … pas » devient not.</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>if humidite &lt; 30 or not pluie:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec or, l'arrosage partirait dès qu'il ne pleut pas,<br/>
même sur un sol humide.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>if humidite &lt; 30 and not pluie:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les deux conditions doivent être vraies à la<br/>
fois, et « il ne pleut pas » se traduit par not pluie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>if humidite &lt; 30 and pluie:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : cette condition arrose quand il pleut, il manque le<br/>
not.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>if humidite &gt; 30 and pluie:</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est presque l'inverse : sol humide et pluie.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q19 : Deux conditions vraies, une seule branche</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
n = 12<br/>
if n % 2 == 0:<br/>
    print("Pair")<br/>
elif n % 3 == 0:<br/>
    print("Multiple de 3")<br/>
else:<br/>
    print("Autre")<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>elif signifie « sinon, si » : il n'est testé que si les conditions<br/>
précédentes sont fausses. Pour afficher toutes les propriétés vraies,<br/>
on utilise des if indépendants.</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>Autre</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : else n'est atteint que si toutes les conditions sont<br/>
fausses.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Multiple de 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la première condition, testée avant, est vraie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Pair puis Multiple de 3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : avec elif, une seule branche s'exécute. Deux if<br/>
séparés afficheraient les deux.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>Pair</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 12 est pair, la première branche s'exécute, et<br/>
le elif n'est pas testé même si 12 est aussi multiple de 3.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q20 : Supérieur ou égal</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>`<code>python<br/>
a = 8<br/>
print(a &gt;= 8, a &gt; 8)<br/>
</code>`</p>
<p>Qu'affiche ce programme ?</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>&gt;= et &lt;= acceptent l'égalité, &gt; et &lt; sont stricts. Le choix<br/>
entre les deux décide du sort de la valeur limite.</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>True True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : &gt; est strict, 8 n'est pas plus grand que 8.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>False True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : c'est l'inverse.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>True False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 8 est supérieur ou égal à 8, mais pas<br/>
strictement supérieur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>False False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : &gt;= accepte l'égalité, la première comparaison est<br/>
vraie.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q21 : Majeur ou mineur</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
age = 20<br/>
if age &gt;= 18:<br/>
    print("majeur")<br/>
else:<br/>
    print("mineur")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>if choisit la branche selon la condition, else prend le relais<br/>
quand elle est fausse.</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>majeur puis mineur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une seule des deux branches est exécutée.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>mineur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : compare 20 à 18 pour savoir si la condition est vraie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>majeur</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : avec age égal à 20, la condition age &gt;= 18<br/>
désigne la branche exécutée, qui affiche majeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>20</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche un texte, pas la valeur de age.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q22 : Pair ou impair</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
n = 4<br/>
if n % 2 == 0:<br/>
    print("pair")<br/>
else:<br/>
    print("impair")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Tester n % 2 == 0 est le réflexe pour reconnaître un nombre pair.</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>impair</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : calcule le reste de 4 divisé par 2 avant de choisir la<br/>
branche.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>pair</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : n % 2 est le reste de la division de 4 par<br/>
2. Il vaut 0 pour un nombre pair.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, % ne pouvant être comparé à 0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : n % 2 == 0 est la façon habituelle de tester la<br/>
parité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>0</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le reste n'est pas affiché, il sert seulement au test.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q23 : Ce qui s'affiche après le if</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
temperature = 30<br/>
if temperature &gt; 25:<br/>
    print("chaud")<br/>
print("fin")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>L'indentation délimite le bloc conditionnel. Ce qui revient à la<br/>
marge est exécuté quoi qu'il arrive.</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>Rien, le programme n'ayant pas de else</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : else est facultatif, et la dernière ligne s'exécute de<br/>
toute façon.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>chaud seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print("fin") est hors du bloc if, il s'affiche<br/>
toujours.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>fin seulement</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : vérifie si 30 dépasse 25, et souviens-toi que la<br/>
dernière ligne n'est pas dans le bloc.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>chaud puis fin</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : seul print("chaud") dépend de la condition.<br/>
print("fin"), non indenté, s'exécute dans tous les cas.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q24 : Le plus grand de deux nombres</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a = 3<br/>
b = 5<br/>
if a &gt; b:<br/>
    print(a)<br/>
else:<br/>
    print(b)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Ce programme calcule un maximum. Si a et b étaient égaux, la<br/>
branche else afficherait b, ce qui reviendrait au même.</p>]]></text>
  </generalfeedback>
  <defaultgrade>1.0</defaultgrade>
  <penalty>0.0</penalty>
  <hidden>0</hidden>
  <single>true</single>
  <shuffleanswers>true</shuffleanswers>
  <answernumbering>abc</answernumbering>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3 5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une seule branche s'exécute, donc une seule valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : si a &gt; b, c'est a qui est affiché, sinon<br/>
b. Dans tous les cas, le plus grand des deux apparaît.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : la condition a &gt; b conduit à afficher le plus grand,<br/>
pas le plus petit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : aucune addition n'est faite.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q25 : Deux retraits successifs</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
x = 8<br/>
if x &gt; 10:<br/>
    x = x - 10<br/>
if x &gt; 5:<br/>
    x = x - 5<br/>
print(x)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Deux if à la suite sont indépendants : le second voit les<br/>
modifications faites par 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="0" format="html">
    <text><![CDATA[<p>-7</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : les deux retraits ne sont pas automatiques. Le premier<br/>
exige x &gt; 10, ce qui est faux pour 8.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : au moins une condition est vraie et modifie x.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>-2</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : -2 correspondrait au premier retrait seul, or sa<br/>
condition x &gt; 10 est fausse pour 8.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : 8 n'est pas supérieur à 10, le premier bloc<br/>
est sauté ; 8 est supérieur à 5, le second retire 5.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q26 : Le tarif selon l'âge</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
age = 10<br/>
if age &lt; 12:<br/>
    prix = 3<br/>
elif age &lt; 18:<br/>
    prix = 5<br/>
else:<br/>
    prix = 8<br/>
print(prix)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>elif enchaîne les tests sans les cumuler : dès qu'une condition<br/>
est vraie, les suivantes sont ignorées.</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 5 8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une chaîne if, elif, else ne retient qu'une<br/>
valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>5</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : relis les conditions dans l'ordre avec age égal à<br/>
10.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>3</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : les conditions sont testées dans l'ordre, et la<br/>
première vraie fixe le prix. Avec 10 ans, c'est 3.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>8</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une seule branche de la chaîne s'exécute, la première<br/>
dont la condition est vraie.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q27 : Un état inversé par not</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
actif = False<br/>
if not actif:<br/>
    print("inactif")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>not transforme True en False et inversement. if not actif<br/>
se lit « si l'objet n'est pas actif ».</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>Rien, la condition étant fausse</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : not False vaut l'inverse de False. Reprends le test avec<br/>
cette valeur.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>inactif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : not inverse le booléen. Avec actif à False,<br/>
not actif vaut l'inverse, ce qui décide de l'affichage.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>actif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme ne peut afficher que inactif, ou rien.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, not ne s'appliquant qu'aux nombres</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : not s'applique justement aux booléens.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q28 : Un ou entre deux comparaisons</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
x = 3<br/>
y = 9<br/>
print(x &gt; 5 or y &gt; 5)<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>or est vrai si au moins une des conditions l'est, faux seulement<br/>
si toutes sont fausses.</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>True</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : x &gt; 5 est faux ; y &gt; 5 décide donc du<br/>
résultat, et or vaut True dès qu'une comparaison est vraie.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>9</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : une expression avec or renvoie un booléen, pas un<br/>
nombre.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>False</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : évalue chaque comparaison séparément, puis applique la<br/>
règle du or.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, print ne pouvant afficher une comparaison</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : print affiche le résultat de l'expression, ici un<br/>
booléen.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q29 : Petit, grand ou négatif</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
a = 5<br/>
if a &gt; 0:<br/>
    if a &gt; 10:<br/>
        print("grand")<br/>
    else:<br/>
        print("petit")<br/>
else:<br/>
    print("négatif")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>Un if dans un if affine le tri. L'indentation indique à quel<br/>
if appartient chaque else.</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>grand</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : suis les tests dans l'ordre, en respectant<br/>
l'indentation.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="100" format="html">
    <text><![CDATA[<p>petit</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : le premier test sépare positifs et négatifs ; le<br/>
second, à l'intérieur, sépare les positifs en grands et petits.<br/>
Avec 5, on obtient petit.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Rien, aucune branche ne convenant</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : tout nombre tombe dans une des trois branches.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>négatif</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : chaque else est lié au if de même indentation.</p>]]></text>
    </feedback>
  </answer>
</question>

<question type="multichoice">
  <name>
    <text>4. Conditions et booléens — Q30 : La note à la frontière</text>
  </name>
  <questiontext format="html">
    <text><![CDATA[<p>Qu'affiche ce programme ?<br/>
`<code>python<br/>
note = 10<br/>
if note &gt;= 10:<br/>
    print("reçu")<br/>
else:<br/>
    print("recalé")<br/>
</code>`</p>]]></text>
  </questiontext>
  <generalfeedback format="html">
    <text><![CDATA[<p>La valeur frontière décide tout : &gt;= l'accepte, &gt; la rejette.<br/>
Choisir le bon signe est une question de précision.</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>reçu</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Bonne réponse : &gt;= inclut la valeur 10. Avec 10, la<br/>
condition note &gt;= 10 donne reçu.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>Une erreur, une note ne pouvant être comparée à un entier</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : entiers et flottants se comparent sans difficulté.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>recalé</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : regarde si 10 est supérieur ou égal à 10, le signe<br/>
&gt;= incluant l'égalité.</p>]]></text>
    </feedback>
  </answer>
  <answer fraction="0" format="html">
    <text><![CDATA[<p>10</p>]]></text>
    <feedback format="html">
      <text><![CDATA[<p>Erreur : le programme affiche un texte, pas la note.</p>]]></text>
    </feedback>
  </answer>
</question>

</quiz>
