QCM : Types de variables en Python
[enonce]
Ce QCM porte sur les types de variables en Python : int, float, str, bool, affectation et règles de nommage. Choisissez la bonne réponse parmi les quatre propositions.
[/enonce]
[etape]
Quel est le type Python de la valeur $42$ ?
[qcm]
[option]float[/option]
[option correct="true"]int[/option]
[option]str[/option]
[option]bool[/option]
[reponse statut="correct"]Exact !
$42$ est un nombre entier, sans point décimal ni guillemets : son type est int (integer).[/reponse]
[reponse motif="float"]Non.
Le type float correspond aux nombres décimaux écrits avec un point, comme $42.0$ ou $3.14$. La valeur $42$ n'a pas de point décimal.[/reponse]
[reponse motif="str"]Non.
Le type str (string) est celui des chaînes de caractères, qui sont toujours écrites entre guillemets ou apostrophes. Ici $42$ n'est pas entre guillemets.[/reponse]
[reponse motif="bool"]Non.
Le type bool ne concerne que les deux valeurs True et False. Un nombre comme $42$ n'est pas un booléen.[/reponse]
[reponse statut="incorrect"]Non.
Observer la forme de la valeur : nombre entier sans point, donc entier (int).[/reponse]
[/qcm]
[/etape]
[etape]
Quel est le type Python de la valeur 'Bonjour' ?
[qcm]
[option]int[/option]
[option]float[/option]
[option correct="true"]str[/option]
[option]bool[/option]
[reponse statut="correct"]Bonne réponse !
Une valeur entre apostrophes (ou guillemets) est une chaîne de caractères : son type est str (string).[/reponse]
[reponse motif="int"]Non.
Le type int ne concerne que les nombres entiers. Ici, la présence d'apostrophes indique une chaîne de caractères.[/reponse]
[reponse motif="float"]Non.
Le type float concerne les nombres décimaux. Les apostrophes autour de Bonjour indiquent autre chose.[/reponse]
[reponse motif="bool"]Non.
Seules True et False (sans apostrophes, initiale majuscule) sont de type bool.[/reponse]
[reponse statut="incorrect"]Non.
Les apostrophes ou guillemets autour d'une valeur signalent toujours une chaîne de caractères.[/reponse]
[/qcm]
[/etape]
[etape]
Parmi les noms suivants, lequel est un nom de variable valide en Python ?
[qcm]
[option]1an[/option]
[option]ma-note[/option]
[option correct="true"]age_eleve[/option]
[option]mon nom[/option]
[reponse statut="correct"]Bravo !
Ce nom ne contient que des lettres et le symbole underscore, et il ne commence pas par un chiffre : il est valide.[/reponse]
[reponse motif="1an"]Non.
Un nom de variable ne doit pas commencer par un chiffre. Relire la règle sur le nommage des variables.[/reponse]
[reponse motif="ma-note"]Non.
Le tiret « - » est interdit dans un nom de variable (Python l'interpréterait comme une soustraction). Seuls les lettres, chiffres et underscores sont autorisés.[/reponse]
[reponse motif="mon nom"]Non.
Un nom de variable ne peut pas contenir d'espace. Utiliser un underscore à la place.[/reponse]
[reponse statut="incorrect"]Non.
Règle : uniquement lettres, chiffres et underscores, et ne jamais commencer par un chiffre.[/reponse]
[/qcm]
[/etape]
[etape]
On exécute le programme Python ci-dessous :
a = 5
a = 'Bonjour'
print(type(a))
Que s'affiche-t-il ?
[qcm]
[option]class 'int'[/option]
[option correct="true"]class 'str'[/option]
[option]Une erreur est provoquée[/option]
[option]class 'bool'[/option]
[reponse statut="correct"]Exactement !
En Python, le type d'une variable change dynamiquement selon la valeur qu'elle contient. La dernière affectation met une chaîne dans a, donc son type final est str.[/reponse]
[reponse motif="class 'int'"]Non.
C'était le type de a après la première ligne, mais la seconde affectation a changé la valeur et le type de a.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
Python autorise sans problème de changer le type d'une variable en cours de programme. C'est une spécificité du langage.[/reponse]
[reponse motif="class 'bool'"]Non.
Aucune valeur booléenne n'a été affectée à a dans ce programme.[/reponse]
[reponse statut="incorrect"]Non.
Python prend en compte la dernière affectation. Ici, a contient la chaîne 'Bonjour' quand type(a) est appelé.[/reponse]
[/qcm]
[/etape]
[etape]
On exécute le programme Python ci-dessous :
print(3 * 'hi')
Que s'affiche-t-il ?
[qcm]
[option]3hi[/option]
[option]hi hi hi[/option]
[option correct="true"]hihihi[/option]
[option]Une erreur est provoquée[/option]
[reponse statut="correct"]C'est bien ça !
L'opérateur * appliqué à une chaîne et un entier répète la chaîne : 3 * 'hi' donne la chaîne 'hi' répétée trois fois, soit 'hihihi'.[/reponse]
[reponse motif="3hi"]Non.
Le nombre n'est pas collé devant la chaîne : l'opérateur * répète la chaîne, il ne l'affiche pas préfixée du nombre.[/reponse]
[reponse motif="hi hi hi"]Non.
Les répétitions sont simplement concaténées, sans espace. Aucun séparateur n'est inséré par l'opérateur *.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
La multiplication entre un entier et une chaîne est parfaitement autorisée en Python et correspond à une répétition.[/reponse]
[reponse statut="incorrect"]Non.
* sur une chaîne répète simplement la chaîne, sans espace ni ajout du nombre.[/reponse]
[/qcm]
[/etape]
[etape]
Que renvoie l'instruction type(True) en Python ?
[qcm]
[option]class 'str'[/option]
[option]class 'int'[/option]
[option]True[/option]
[option correct="true"]class 'bool'[/option]
[reponse statut="correct"]Tu as raison !
True et False sont les deux valeurs du type booléen : leur type est bool.[/reponse]
[reponse motif="class 'str'"]Non.
Une chaîne de caractères aurait été écrite entre guillemets ou apostrophes (comme 'True'). Ici True n'est pas entre guillemets.[/reponse]
[reponse motif="class 'int'"]Non.
True n'est pas un nombre entier. C'est l'une des deux valeurs du type booléen.[/reponse]
[reponse motif="True"]Non.
L'instruction type(...) renvoie le type de la valeur, pas la valeur elle-même.[/reponse]
[reponse statut="incorrect"]Non.
True et False sont les deux valeurs du type bool.[/reponse]
[/qcm]
[/etape]