Exo Python

Identification

Infoforall

10 - Exercices Expressions


Exercice de l'activité Python Expressions numériques.

A faire en version papier ou numérique.

1 - Expressions numériques

✎ 01° Expliquer étape par étape comment l'interpréteur Python va évaluer cette expression.

1
a = 4 * 3 ** 2 + 8 // 2

...CORRECTION...

a = 4 * 3 ** 2 + 8 // 2 a = 4 * 9 + 8 // 2 a = 36 + 8 // 2 a = 36 + 4 a = 40

✎ 02° Expliquer étape par étape comment l'interpréteur Python va évaluer cette expression.

1
a = 20 + 10 // 2 + 8 * 100

...CORRECTION...

a = 20 + 10 // 2 + 8 * 100 a = 20 + 5 + 8 * 100 a = 20 + 5 + 800 a = 25 + 800 a = 825

✎ 03° Expliquer pourquoi ce programme affiche les nombres 100 et 500.

1 2 3 4 5 6 7 8
somme = 0 v = 10 somme = somme + v**2 print(somme) v = 20 somme = somme + v**2 print(somme)

...CORRECTION...

L1 : somme référence 0.

L2 : v référence 10.

L3 : somme référence 0+102, soit 100.

L'affichage de la ligne 4 provoque donc l'affichage 100.

L6 : v référence 20 maintenant.

L7 : somme référence 100+202, soit 500.

L'affichage de la ligne 8 provoque donc l'affichage 500.

✎ 04° Expliquer pourquoi a et b contiennent 12 et 6 une fois le programme exécuté.

1 2
a = 126 // 10 b = 126 % 10

...CORRECTION...

Division euclidienne de 126 par 10 :

    126 │ 10
   -120 ├────
reste 612

Le quotient vaut 12 et le reste vaut 6.

L'opérateur // correspond au quotient d'une division euclidienne. La variable a référence donc 12.

L'opérateur % correspond au reste d'une division euclidienne. La variable b référence donc 6.

2 - Fonctions et quotient - reste

✎ 05° Sur quelles lignes trouve-t-on des déclarations de fonctions ? Sur quelles lignes trouve-t-on des appels de fonctions ?

1 2 3 4 5 6 7 8 9 10 11 12 13
def chiffre_unite(n): return 0 def chiffre_dizaine(n): return 0 def chiffre_centaine(n): return 0 valeur = 1875 print(chiffre_unite(valeur)) print(chiffre_dizaine(valeur)) print(chiffre_centaine(valeur))

...CORRECTION...

Déclarations sur les lignes : 1-4-7.

Appels sur les lignes : 11-12-13.

✎ 06° Lorsque la fonction chiffre_unite() reçoit 1875 en ligne 11, dans quelle variable de la fonction se retrouve stockée cette valeur ?

...CORRECTION...

Il faut comparer la ligne de l'appel (ligne 11) et la ligne de la déclaration (ligne 1). On constate alors facilement que la valeur référencée par la variable valeur va être stockée dans la variable n de la ligne 1.

1 2 3 4 5 6 7 8 9 10 11 12 13
def chiffre_unite(n): return 0 def chiffre_dizaine(n): return 0 def chiffre_centaine(n): return 0 valeur = 1875 print(chiffre_unite(valeur)) print(chiffre_dizaine(valeur)) print(chiffre_centaine(valeur))

✎ 07° Compléter la fonction chiffre_unite() pour qu'elle fasse le travail demandé : renvoyer le CHIFFRE de l'unité du nombre reçu.

...CORRECTION...

1 2 3 4 5 6 7 8 9 10 11 12 13
def chiffre_unite(n): return n % 10 def chiffre_dizaine(n): return 0 def chiffre_centaine(n): return 0 valeur = 1875 print(chiffre_unite(valeur)) print(chiffre_dizaine(valeur)) print(chiffre_centaine(valeur))

✎ 08° Compléter la fonction chiffre_dizaine() pour qu'elle fasse le travail demandé : renvoyer le CHIFFRE de la dizaine du nombre reçu.

...CORRECTION...

1 2 3 4 5 6 7 8 9 10 11 12 13
def chiffre_unite(n): return n % 10 def chiffre_dizaine(n): return n // 10 % 10 def chiffre_centaine(n): return 0 valeur = 1875 print(chiffre_unite(valeur)) print(chiffre_dizaine(valeur)) print(chiffre_centaine(valeur))

✎ 09° Compléter la fonction chiffre_centaine() pour qu'elle fasse le travail demandé : renvoyer le CHIFFRE de la centaine du nombre reçu.

...CORRECTION...

1 2 3 4 5 6 7 8 9 10 11 12 13
def chiffre_unite(n): return n % 10 def chiffre_dizaine(n): return n // 10 % 10 def chiffre_centaine(n): return n // 100 % 10 valeur = 1875 print(chiffre_unite(valeur)) print(chiffre_dizaine(valeur)) print(chiffre_centaine(valeur))

3 - Si

✎ 10° Expliquer l'affichage obtenu.

1 2 3 4 5 6 7
nb = 10 achat = 12 if nb - achat < 0: achat = nb nb = nb - achat print("Vous avez pu acheter ", achat, " objets") print("Il reste ", nb, " objets dans le stock")

...CORRECTION...

Voici la séquence de lignes suivies par l'interpréteur :

L1-L2- L3(True) donc L4 -L5-L6-L7

1 2 3 4 5 6 7
nb = 10 achat = 12 if nb - achat < 0: <-- True puisque 10-12 = -2 achat = nb --> achat référence donc 10 nb = nb - achat --> nb référence donc 10-10 soit 0 print("Vous avez pu acheter ", achat, " objets") print("Il reste ", nb, " objets dans le stock")

✎ 11° Expliquer l'affichage obtenu avec ces nouvelles valeurs.

1 2 3 4 5 6 7
nb = 20 achat = 8 if nb - achat < 0: achat = nb nb = nb - achat print("Vous avez pu acheter ", achat, " objets") print("Il reste ", nb, " objets dans le stock")

...CORRECTION...

Voici la séquence de lignes suivies par l'interpréteur :

L1-L2- L3(False) donc L5-L6-L7

1 2 3 4 5 6 7
nb = 20 achat = 8 if nb - achat < 0: <-- False puisque 20 - 8 = 12 achat = nb --> Ligne non exécutée ! nb = nb - achat --> nb référence donc 20-8 soit 12 print("Vous avez pu acheter ", achat, " objets") print("Il reste ", nb, " objets dans le stock")

4 - Boucle

✎ 12° Ecrire les numéros de lignes que va suivre l'interpréteur Python.

1 2 3 4 5
s = 0 for k in range(10): s = s + k print("Pour l'instant, la valeur de s est ", s) print("La valeur finale de s est ", s)

...CORRECTION...

L1

L2(avec k=0)-L3-L4

L2(avec k=1)-L3-L4

L2(avec k=2)-L3-L4

L2(avec k=3)-L3-L4

L2(avec k=4)-L3-L4

L2(avec k=5)-L3-L4

L2(avec k=6)-L3-L4

L2(avec k=7)-L3-L4

L2(avec k=8)-L3-L4

L2(avec k=9)-L3-L4

L5 - fin

✎ 13° Recopier et compléter les affirmations suivantes pour chaque tour que va réaliser l'interpréteur :

L1 (s = 0)

L2 (k = 0) - L3 (s = 0+0 = 0) - L4

L2 (k = 1) - L3 (s = 0+1 = 1) - L4

L2 (k = 2) - L3 (s = 1+2 = 3) - L4

...

...CORRECTION...

L1 (s = 0)

L2 (k = 0) - L3 (s = 0+0 = 0) - L4

L2 (k = 1) - L3 (s = 0+1 = 1) - L4

L2 (k = 2) - L3 (s = 1+2 = 3) - L4

L2 (k = 3) - L3 (s = 3+3 = 6) - L4

L2 (k = 4) - L3 (s = 6+4 = 10) - L4

L2 (k = 5) - L3 (s = 10+5 = 15) - L4

L2 (k = 6) - L3 (s = 15+6 = 21) - L4

L2 (k = 7) - L3 (s = 21+7 = 28) - L4

L2 (k = 8) - L3 (s = 28+8 = 36) - L4

L2 (k = 9) - L3 (s = 36+9 = 45) - L4

L5 - fin

✎ 14° Recopier et compléter les affirmations suivantes pour chaque tour que va réaliser l'interpréteur sur ce nouveau programme :

1 2 3 4 5 6 7
s = 0 k = 1 while s < 20: s = s + k ** 2 k = k + 1 print("Pour l'instant, la valeur de s est ", s) print("La valeur finale de s est ", s)

L01 (s=0) - L02(k=1)

L03 (condition True car s=0) - L04 (s=0+1**2=1) - L05(k=1+1=2) - L06

L03 (condition True car s=1) - L04 (s=1+2**2=5) - L05(k=2+1=3) - L06

...

...

L03 (condition False car s=30) : Le TANT QUE s'arrête.

L07

...CORRECTION...

L01 (s=0) - L02(k=1)

L03 (condition True car s=0) - L04 (s=0+1**2=1) - L05(k=1+1=2) - L06

L03 (condition True car s=1) - L04 (s=1+2**2=5) - L05(k=2+1=3) - L06

L03 (condition True car s=5) - L04 (s=5+3**2=14) - L05(k=3+1=4) - L06

L03 (condition True car s=14) - L04 (s=14+4**2=30) - L05(k=4+1=5) - L06

L03 (condition False car s=30) : Le TANT QUE s'arrête.

L07

FIN

Activité publiée le 15 09 2023
Dernière modification : 15 09 2023
Auteur : ows. h.