QCM : Opérateurs arithmétiques en Python
[enonce]
Ce QCM porte sur les opérateurs arithmétiques de Python : quotient entier //, reste %, puissance **, division / et priorités de calcul. Choisissez la bonne réponse parmi les quatre propositions.
[/enonce]
[etape]
Que vaut 17 // 5 en Python ?
[qcm]
[option]$3{,}4$[/option]
[option correct="true"]$3$[/option]
[option]$2$[/option]
[option]$85$[/option]
[reponse statut="correct"]Exact !
L'opérateur // calcule le quotient entier de la division euclidienne. Comme $17 = 5 \times 3 + 2$, le quotient entier est $3$.[/reponse]
[reponse motif="$3{,}4$"]Non.
L'opérateur // renvoie le quotient entier (division euclidienne), pas le quotient décimal. C'est l'opérateur / (une seule barre) qui donne $3{,}4$.[/reponse]
[reponse motif="$2$"]Non.
$2$ correspond au reste de la division euclidienne, pas au quotient. Le reste s'obtient avec %.[/reponse]
[reponse motif="$85$"]Non.
$17 \times 5 = 85$ : il s'agit du produit, pas du quotient entier.[/reponse]
[reponse statut="incorrect"]Non.
// correspond à la division euclidienne : chercher le plus grand entier $q$ tel que $5 \times q \leqslant 17$.[/reponse]
[/qcm]
[/etape]
[etape]
Que vaut 17 % 5 en Python ?
[qcm]
[option]$3$[/option]
[option]$5$[/option]
[option correct="true"]$2$[/option]
[option]$3{,}4$[/option]
[reponse statut="correct"]Bonne réponse !
L'opérateur % renvoie le reste de la division euclidienne. Comme $17 = 5 \times 3 + 2$, le reste vaut $2$.[/reponse]
[reponse motif="$3$"]Non.
$3$ est le quotient entier de $17$ par $5$, pas le reste. Le reste s'obtient avec % et le quotient avec //.[/reponse]
[reponse motif="$5$"]Non.
Le reste d'une division euclidienne par $5$ est toujours strictement inférieur à $5$. Relire la définition du reste.[/reponse]
[reponse motif="$3{,}4$"]Non.
C'est le résultat de $17 / 5$ (division décimale). L'opérateur % renvoie un reste entier, pas un décimal.[/reponse]
[reponse statut="incorrect"]Non.
Écrire $17 = 5 \times q + r$ avec $q$ entier et $0 \leqslant r < 5$. Alors $r$ est le résultat de 17 % 5.[/reponse]
[/qcm]
[/etape]
[etape]
Que vaut 2 ** 6 en Python ?
[qcm]
[option]$12$[/option]
[option]$36$[/option]
[option correct="true"]$64$[/option]
[option]$8$[/option]
[reponse statut="correct"]Bravo !
En Python, ** est l'opérateur puissance. $2^6 = 2 \times 2 \times 2 \times 2 \times 2 \times 2 = 64$.[/reponse]
[reponse motif="$12$"]Non.
$12 = 2 \times 6$ : c'est le produit, pas la puissance. L'opérateur ** n'est pas une multiplication.[/reponse]
[reponse motif="$36$"]Non.
$36 = 6^2$ : vous avez inversé la base et l'exposant. 2 ** 6 signifie « $2$ élevé à la puissance $6$ ».[/reponse]
[reponse motif="$8$"]Non.
$8 = 2^3$ : l'exposant est $6$, pas $3$. Compter $2 \times 2 \times 2 \times 2 \times 2 \times 2$.[/reponse]
[reponse statut="incorrect"]Non.
a ** b en Python, c'est $a^b$. Ici, on cherche $2 \times 2 \times 2 \times 2 \times 2 \times 2$.[/reponse]
[/qcm]
[/etape]
[etape]
Que renvoie l'instruction type(8 / 2) en Python ?
[qcm]
[option correct="true"]class 'float'[/option]
[option]class 'int'[/option]
[option]class 'str'[/option]
[option]$4$[/option]
[reponse statut="correct"]Parfait !
L'opérateur / (une seule barre) renvoie toujours un résultat de type float, même lorsque la division tombe juste. 8 / 2 vaut 4.0, pas 4.[/reponse]
[reponse motif="class 'int'"]Non.
Le piège : en Python, / renvoie toujours un float, même si le résultat est un entier au sens mathématique. Pour obtenir un entier, il faut utiliser //.[/reponse]
[reponse motif="class 'str'"]Non.
Aucune chaîne de caractères n'intervient dans ce calcul. Le résultat est un nombre.[/reponse]
[reponse motif="$4$"]Non.
L'instruction type(...) renvoie le type du résultat, pas la valeur numérique.[/reponse]
[reponse statut="incorrect"]Non.
Règle à retenir : / en Python renvoie toujours un float, contrairement à // qui renvoie un int.[/reponse]
[/qcm]
[/etape]
[etape]
Que vaut 10 + 2 * 3 en Python ?
[qcm]
[option]$36$[/option]
[option correct="true"]$16$[/option]
[option]$32$[/option]
[option]$18$[/option]
[reponse statut="correct"]Exactement !
Python respecte les priorités mathématiques : on effectue d'abord la multiplication, $2 \times 3 = 6$, puis l'addition, $10 + 6 = 16$.[/reponse]
[reponse motif="$36$"]Non.
Vous avez effectué l'addition avant la multiplication : $(10 + 2) \times 3 = 36$. En Python, la multiplication est prioritaire sur l'addition.[/reponse]
[reponse motif="$32$"]Non.
Ce résultat ne correspond à aucune lecture raisonnable du calcul. Effectuer d'abord $2 \times 3$, puis ajouter $10$.[/reponse]
[reponse motif="$18$"]Non.
$18 = 10 + 2 + 3 + 3$ ne correspond pas à l'expression. Il y a une seule multiplication à effectuer en priorité.[/reponse]
[reponse statut="incorrect"]Non.
Priorités Python : parenthèses, puis **, puis * et /, puis + et -.[/reponse]
[/qcm]
[/etape]
[etape]
Que vaut (10 + 2) * 3 - 4 ** 2 en Python ?
[qcm]
[option]$32$[/option]
[option]$144$[/option]
[option correct="true"]$20$[/option]
[option]$28$[/option]
[reponse statut="correct"]C'est bien ça !
On applique les priorités : parenthèses d'abord, puis puissance, puis multiplication, enfin soustraction.
$(10+2) \times 3 - 4^2 = 12 \times 3 - 16 = 36 - 16 = 20$.[/reponse]
[reponse motif="$32$"]Non.
Vous avez oublié la puissance $4^2 = 16$. 4 ** 2 ne vaut pas $8$ (qui donnerait $36 - 8 = 28$) ni $4$ (qui donnerait $36-4 = 32$).[/reponse]
[reponse motif="$144$"]Non.
$144 = 12^2$ : vous avez élevé au carré le contenu de la parenthèse, $(10+2)^2 = 12^2 = 144$. Or l'exposant $2$ ne porte que sur le $4$ (4 ** 2), pas sur la parenthèse.[/reponse]
[reponse motif="$28$"]Non.
$28 = 36 - 8$, ce qui correspondrait à $4^2 = 8$. Or $4^2 = 4 \times 4 = 16$.[/reponse]
[reponse statut="incorrect"]Non.
Effectuer dans l'ordre : parenthèse, puis puissance, puis multiplication, puis soustraction.[/reponse]
[/qcm]
[/etape]
Vrai/Faux : Opérateurs numériques Python (niveau 2)
[enonce]
Pour chaque affirmation suivante sur les opérateurs numériques en Python, indiquez si elle est Vraie ou Fausse.
[/enonce]
[etape]
Affirmation : L'expression 8 // 5 vaut $1$.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Exactement !
L'opérateur // calcule le quotient entier (division euclidienne) de $8$ par $5$.
Or $8 = 5 \times 1 + 3$, donc le quotient entier vaut bien $1$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Il ne faut pas confondre // (quotient entier) et / (quotient décimal).
$8 = 5 \times 1 + 3$ donc 8 // 5 renvoie le quotient entier $1$, tandis que 8 / 5 renverrait $1{,}6$.[/reponse]
[/qcm]
[solution]
Cette affirmation est vraie. // est la division euclidienne : $8 = 5 \times 1 + 3$, donc 8 // 5 vaut $1$.
[/solution]
[/etape]
[etape]
Affirmation : L'expression 8 / 5 vaut $1$.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Bonne réponse !
L'opérateur / calcule le quotient décimal : 8 / 5 vaut $1{,}6$.
C'est 8 // 5 (avec deux barres) qui donnerait $1$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Attention à bien distinguer / et // en Python.
/ donne un résultat décimal (type float) : $8 / 5 = 1{,}6$. Seul // donne le quotient entier.[/reponse]
[/qcm]
[solution]
Cette affirmation est fausse. / est la division décimale : 8 / 5 vaut $1{,}6$ (un float).
[/solution]
[/etape]
[etape]
Affirmation : L'expression 2 ** 10 vaut $1024$.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Bravo !
L'opérateur ** calcule une puissance : 2 ** 10 correspond à $2^{10} = 1024$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Rappel : en Python, ** est l'opérateur puissance (et non ^).
2 ** 10 signifie $2^{10}$, soit $1024$.[/reponse]
[/qcm]
[solution]
Cette affirmation est vraie. ** est la puissance en Python : 2 ** 10 $= 2^{10} = 1024$.
[/solution]
[/etape]
[etape]
Affirmation : L'expression 17 % 5 vaut $3$.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]C'est bien ça !
L'opérateur % renvoie le reste de la division euclidienne.
Or $17 = 5 \times 3 + 2$, donc le reste vaut $2$ (et non $3$).[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
Le piège ici est de confondre le quotient entier ($3$) avec le reste ($2$).
% donne le reste : $17 = 5 \times 3 + 2$, donc 17 % 5 vaut $2$.[/reponse]
[/qcm]
[solution]
Cette affirmation est fausse. 17 % 5 vaut $2$ (le reste), et non $3$ (qui est le quotient 17 // 5).
[/solution]
[/etape]
[etape]
Affirmation : L'expression 3 + 2 * 4 vaut $20$.
[qcm]
[option]Vrai[/option]
[option correct="true"]Faux[/option]
[reponse statut="correct"]Tu as raison !
Python respecte l'ordre habituel des priorités : la multiplication s'effectue avant l'addition.
Donc 3 + 2 * 4 $= 3 + 8 = 11$, et non $20$.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est fausse.
L'erreur est de calculer de gauche à droite sans tenir compte des priorités.
Comme en mathématiques, Python effectue d'abord la multiplication : $2 \times 4 = 8$, puis $3 + 8 = 11$.[/reponse]
[/qcm]
[solution]
Cette affirmation est fausse. Python respecte les priorités : $2 \times 4 = 8$ puis $3 + 8 = 11$. Le résultat est $11$.
[/solution]
[/etape]
[etape]
On exécute le programme Python ci-dessous :
x = 6 / 2
print(type(x))
Affirmation : Ce programme affiche class 'float'.
[qcm]
[option correct="true"]Vrai[/option]
[option]Faux[/option]
[reponse statut="correct"]Correct !
Même si le résultat est un nombre entier ($3$), l'opérateur / renvoie toujours un float en Python.
C'est // qui aurait donné un int.[/reponse]
[reponse statut="incorrect"]Non, cette affirmation est vraie.
Le piège est de penser que le type dépend du résultat. Ce n'est pas le cas : c'est l'opérateur qui détermine le type.
/ renvoie toujours un float, même si le résultat numérique est entier (ici $3{,}0$).[/reponse]
[/qcm]
[solution]
Cette affirmation est vraie. L'opérateur / produit toujours un float : 6 / 2 vaut $3{,}0$, de type float.
[/solution]
[/etape]
Python : Types et opérateurs
En mode interactif, on entre chacune des instructions suivantes dans une console Python :
>>> 3+3
>>> 3.0+3
>>> "3"+3
>>> "3"+"3"
>>> 3*3
>>> 3.0*3
>>> "3"*3
>>> "3"*"3"
Pour chacune des lignes ci-dessus, indiquer le résultat renvoyé par l'interpréteur Python.
>>> 3+3
Le résultat de cette instruction est : 6.
Python ajoute les deux entiers et renvoie un entier.
>>> 3.0+3
Le résultat de cette instruction est : 6.0.
Python ajoute les deux nombres. Comme l'un de ces nombres est un décimal (float), le résultat renvoyé est également un décimal (d'où la présence du « .0 » ).
>>> "3"+3
Cette instruction renvoie une erreur.
Python ne peut pas ajouter un entier et une chaine de caractères. Il faut noter que, contrairement à d'autres langages, Python n'effectue pas de conversion de types automatiquement. On dit que Python est fortement typé.
>>> "3"+"3"
Le résultat de cette instruction est : '33'.
Python concatène les chaînes de caractères. À cause des guillemets, « 3 » est considéré comme une chaîne de caractères. L'interpréteur Python n'additionne donc pas les valeurs numériques mais effectue une concaténation.
>>> 3*3
Le résultat de cette instruction est : 9.
Python effectue le produit des deux entiers et renvoie un entier.
>>> 3.0*3
Le résultat de cette instruction est : 9.0.
Python multiplie les deux nombres. Comme l'un de ces nombres est un décimal (float), le résultat renvoyé est un décimal.
>>> "3"*3
Le résultat de cette instruction est : '333'.
Python répète trois fois la chaîne de caractères « 3 ». L'opérateur *, suivi ou précédé d'un nombre entier, permet de répéter une chaîne de caractères.
>>> "3"*"3"
Cette instruction renvoie une erreur.
Python ne peut pas multiplier une chaîne de caractères par une autre chaîne de caractères.
Python : Calcul du volume d’une sphère
Écrire un programme Python qui demande, en entrée, le rayon d'une sphère en cm et affiche, en sortie, le volume de la sphère en cm$ ^3 $.
Indication : Pour utiliser le nombre $ \pi $, on pourra faire appel au module math qui donne accès à différentes fonctions mathématiques comme cosinus (cos), sinus (sin), racine carrée (sqrt), et à certaine constantes mathématiques comme $ \pi $ (pi).
Pour cela, il suffit d'inclure, en tête du programme, la ligne suivante :
from math import pi
Il suffira ensuite de faire appel à la constante pi à chaque fois que l'on souhaitera utiliser la valeur de $ \pi $.
Le volume d'une sphère de rayon $ r $ est donné par la formule :
$ V=\dfrac{4}{3}\pi r^3 $
Voici un programme possible :
from math import pi
r=float(input('Quel est le rayon de la sphere en cm : '))
v=4/3*pi*r**3
print('Le volume de la sphere est ', v, 'cm3')
Remarques :
La ligne :
from math import pi
permet d'importer la valeur de $ \pi $.
À la place, on peut également utiliser la ligne :
from math import *
pour importer toutes les constantes et toutes les fonctions du module math.
- Il ne faut pas oublier de convertir le rayon en float sinon, il sera considéré comme étant une chaine de caractères et Python déclenchera une erreur lors du calcul du volume.