QCM : Booléens et opérateurs de comparaison en Python

[enonce]
Ce QCM porte sur les booléens et les opérateurs de comparaison en Python. Choisissez la bonne réponse parmi les quatre propositions.
[/enonce]

[etape]
Quel opérateur Python utilise-t-on dans une condition pour tester si deux valeurs sont égales ?
[qcm]
[option]=[/option]
[option correct="true"]==[/option]
[option]!=[/option]
[option]<=[/option]
[reponse statut="correct"]Exact !
L'opérateur d'égalité dans un test est == (double signe égal). Le signe = simple est réservé à l'affectation d'une valeur à une variable.[/reponse]
[reponse motif="="]Non.
Le signe = est l'opérateur d'affectation, pas un test d'égalité. Son usage dans une condition provoque une erreur en Python.[/reponse]
[reponse motif="!="]Non.
!= est l'opérateur « différent de », pas « égal à ».[/reponse]
[reponse motif="<="]Non.
<= signifie « inférieur ou égal à ». Il ne teste pas la stricte égalité.[/reponse]
[reponse statut="incorrect"]Non.
Règle à retenir : = affecte, == teste l'égalité.[/reponse]
[/qcm]
[/etape]

[etape]
Que vaut l'expression 10 >= 10 en Python ?
[qcm]
[option]False[/option]
[option correct="true"]True[/option]
[option]10[/option]
[option]Une erreur est provoquée[/option]
[reponse statut="correct"]Bonne réponse !
L'opérateur >= signifie « supérieur ou égal à ». Comme $10 = 10$, l'égalité est vérifiée, donc l'expression vaut True.[/reponse]
[reponse motif="False"]Non.
Le piège : >= inclut le cas d'égalité (contrairement à > qui l'exclut). Ici $10$ n'est pas strictement supérieur à $10$, mais il est bien supérieur ou égal.[/reponse]
[reponse motif="10"]Non.
Une comparaison renvoie toujours un booléen (True ou False), jamais un nombre.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
Les opérateurs de comparaison fonctionnent parfaitement entre deux valeurs numériques égales.[/reponse]
[reponse statut="incorrect"]Non.
>= autorise le cas d'égalité. Ici $10$ est bien supérieur ou égal à lui-même.[/reponse]
[/qcm]
[/etape]

[etape]
Que vaut l'expression 'abc' == 'ABC' en Python ?
[qcm]
[option]True[/option]
[option correct="true"]False[/option]
[option]'abc'[/option]
[option]Une erreur est provoquée[/option]
[reponse statut="correct"]Bravo !
Python distingue les majuscules des minuscules (on parle de casse). Les chaînes 'abc' et 'ABC' sont donc différentes, et l'égalité renvoie False.[/reponse]
[reponse motif="True"]Non.
Piège fréquent : Python est sensible à la casse. 'a' et 'A' sont considérés comme deux caractères différents.[/reponse]
[reponse motif="'abc'"]Non.
Une comparaison renvoie toujours un booléen (True ou False), pas une chaîne.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
Comparer deux chaînes de caractères est parfaitement autorisé en Python.[/reponse]
[reponse statut="incorrect"]Non.
Python fait la différence entre minuscules et majuscules. Comparer chaque caractère un à un.[/reponse]
[/qcm]
[/etape]

[etape]
Que vaut l'expression not True en Python ?
[qcm]
[option correct="true"]False[/option]
[option]True[/option]
[option]0[/option]
[option]Une erreur est provoquée[/option]
[reponse statut="correct"]Exactement !
L'opérateur not inverse la valeur d'un booléen : not True vaut donc False, et not False vaut True.[/reponse]
[reponse motif="True"]Non.
not inverse la valeur : appliquer not à True donne forcément False.[/reponse]
[reponse motif="0"]Non.
Le résultat d'une opération booléenne est toujours un booléen (True ou False), pas un nombre.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
not suivi d'un booléen est une instruction parfaitement valide.[/reponse]
[reponse statut="incorrect"]Non.
Le mot-clé not inverse la valeur de vérité.[/reponse]
[/qcm]
[/etape]

[etape]
Que vaut l'expression False or True en Python ?
[qcm]
[option]False[/option]
[option]None[/option]
[option correct="true"]True[/option]
[option]Une erreur est provoquée[/option]
[reponse statut="correct"]C'est bien ça !
L'opérateur or (« ou ») est vrai dès qu'au moins une des deux conditions est vraie. Ici, la seconde est vraie, donc le résultat est True.[/reponse]
[reponse motif="False"]Non.
or n'exige pas que les deux conditions soient vraies : une seule suffit. Ici True est présent, donc le résultat est True.[/reponse]
[reponse motif="None"]Non.
None est une valeur spéciale de Python, mais ce n'est pas le résultat d'un or entre deux booléens.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
or entre deux booléens est une opération parfaitement valide.[/reponse]
[reponse statut="incorrect"]Non.
or : une seule des deux conditions vraies suffit pour que le résultat soit True.[/reponse]
[/qcm]
[/etape]

[etape]
Que vaut l'expression True and True and False en Python ?
[qcm]
[option]True[/option]
[option correct="true"]False[/option]
[option]None[/option]
[option]Une erreur est provoquée[/option]
[reponse statut="correct"]Tu as raison !
L'opérateur and exige que toutes les conditions soient vraies. Dès qu'une seule est fausse, le résultat est False. Ici, la troisième est fausse.[/reponse]
[reponse motif="True"]Non.
and n'est vrai que si toutes les conditions sont vraies simultanément. Vérifier la dernière : est-elle vraie ?[/reponse]
[reponse motif="None"]Non.
None n'est jamais le résultat d'un and entre booléens.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
On peut enchaîner plusieurs and sans problème. Il s'agit simplement d'un test combiné.[/reponse]
[reponse statut="incorrect"]Non.
and : si une seule condition est fausse, l'ensemble est faux.[/reponse]
[/qcm]
[/etape]

Vrai/Faux : Booléens et comparaisons Python (niveau 1)

[enonce]
Pour chaque affirmation suivante sur le type booléen et les opérateurs de comparaison en Python, indiquez si elle est Vraie ou Fausse.
[/enonce]

[etape]
Affirmation : L'instruction type(True) renvoie class 'bool'.

[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Bravo !
True et False sont les deux seules valeurs du type booléen (bool).[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : le type booléen en Python s'appelle bool.
True et False (avec une majuscule) sont de type bool.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. True est de type bool : c'est l'une des deux valeurs booléennes possibles.
[/solution]
[/etape]

[etape]
Affirmation : Pour tester si deux variables a et b sont égales, on écrit a = b.

[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Bonne réponse !
Le symbole = simple est l'opérateur d'affectation.
Pour tester l'égalité, il faut utiliser == (double signe égal).[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Attention à ne pas confondre affectation et comparaison.
a = b range la valeur de b dans a ; c'est a == b qui teste leur égalité.[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. Le test d'égalité s'écrit a == b. Le symbole = seul sert à l'affectation.
[/solution]
[/etape]

[etape]
Affirmation : En Python, l'opérateur != signifie « différent de ».

[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]C'est bien ça !
!= compare deux valeurs et renvoie True si elles sont différentes, False sinon.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : l'opérateur « différent de » s'écrit != en Python.
Il ne faut pas le confondre avec == (égal à) ni avec les opérateurs < et >.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. a != b vaut True si et seulement si a et b sont différents.
[/solution]
[/etape]

[etape]
Affirmation : L'expression « abc » < « abd » renvoie False.

[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Exactement !
Python compare les chaînes par ordre alphabétique, caractère par caractère.
Les deux premiers caractères sont identiques, puis c vient avant d, donc « abc » < « abd » est True.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Le piège est de penser qu'on ne peut comparer que des nombres.
Python compare aussi les chaînes par ordre alphabétique : « abc » est avant « abd », donc « abc » < « abd » est True.[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. Les chaînes se comparent par ordre alphabétique : « abc » < « abd » vaut True.
[/solution]
[/etape]

[etape]
Affirmation : L'instruction type(true) (avec un t minuscule) fonctionne correctement en Python.

[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Tu as raison !
Les valeurs booléennes Python s'écrivent True et False avec une initiale en majuscule.
true (minuscule) est interprété comme un nom de variable inconnu et provoque une erreur.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Attention à la casse en Python : True et False doivent commencer par une majuscule.
true ou TRUE provoquent une erreur de type NameError (variable non définie).[/reponse]
[/qcm]

[solution]
Cette affirmation est fausse. Les valeurs booléennes s'écrivent True et False avec une majuscule.
[/solution]
[/etape]

[etape]
On exécute le programme Python suivant :

x = 5
print(x == 5)

Affirmation : Ce programme affiche True.

[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Correct !
x == 5 compare x (qui vaut $5$) à $5$ : les valeurs sont égales, donc le résultat est True.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : == renvoie True si les deux valeurs sont égales, False sinon.
Comme x vaut $5$, x == 5 est bien True.[/reponse]
[/qcm]

[solution]
Cette affirmation est vraie. Après x = 5, l'expression x == 5 vaut True, que print affiche.
[/solution]
[/etape]