Exo types simples

Identification

Infoforall

11 - Exo types simples


Exercice de l'activité Python Types simples

1 - Instructions avec des entiers

✎ 01° Expliquer ce que référencent les variables a, b et c en fin de programme.

1 2 3 4
a = 10 b = 20 b = b + 10 c = a + b

...CORRECTION...

L1-L2 : On affecte 10 à a et 20 à b.

L3 : On incrémente b de 10 qui référence donc maintenant 30 (20+10).

L4 : on affecte 40 (10+30) à c.

✎ 02° Expliquer ce que référencent les variables a, b et c en fin de programme en comparant avec le programme de l'exercice 1. La seule différence avec l'exercice précédent vient de la ligne 4. Réflechissez bien à ce que fait la machine sur cette ligne : affectation ou pas affectation ? Programme ou console interactive ? Affichage ou pas affichage ?

1 2 3 4 5
a = 10 b = 20 b = b + 10 b * 2 c = a + b

...CORRECTION...

La ligne 4 est une simple demande d'évaluation. Elle ne changera donc pas l'état final en mémoire.

Nus sommes dans un programme, pas dans la console interactive. Il ne fait donc rien de ce résultat. En réalité, dans un programme, une ligne de ce genre ne sert à rien.

Python évalue l'expression b * 2 et trouve 60.

Lorsque arrive en ligne 5, b vaut toujours 30.

AUCUN CHANGEMENT entre l'état final de la mémoire de l'exercice 1.

2 - Instructions avec des strings

✎ 03° Expliquer ce que référence la variable c en fin de programme. Souvenez-vous de la notion de concaténation et répétition.

1 2 3 4 5
a = 3 b = "bon" c = "jour" b = b + c c = b *2

...CORRECTION...

L1-L2-L3 : On affecte 3 à a, "bon" à b et "jour" à c.

L4 : b référence la concaténation de b et c donc "bonjour".

L5 : c référence la répétition de 2 fois b : "bonjourbonjour".

ATTENTION : l'erreur typique dans les copies sur la ligne 5 est de prendre l'ancienne version de b : celle qui ne contient que "bon".

✎ 04° Expliquer ce que référence la variable c en fin de programme.

1 2 3
a = 4 b = "Non !" c = b * a

...CORRECTION...

L1-L2 : On affecte 4 à a, "Non !" à b.

L3 : c référence la répétition de 4 fois "Non !", donc "Non !Non !Non !Non !".

3 - Instructions avec des booléens

✎ 05° Expliquer ce que référence la variable c en fin de programme.

1 2 3
a = "A" b = "R" c = a > b

...CORRECTION...

L'opérateur de comparaison PLUS GRAND QUE compare l'ordre lexicographique (généralisation de l'ordre alphabétique).

La question qu'on pose L3 est donc Le numéro de page de "A" est-il plus grand que le numéro de page de "R" dans un dictionnaire ?".

La réponse est donc Non.

c référence donc False.

✎ 06° Expliquer ce que réference la variable c en fin de programme.

Il faut utiliser le fait que l'opérateur = à la priorité la plus faible. On évalue donc ce qu'il y a à droite PUIS on réalise l'affectation.

1 2 3
a = 10 b = 20 c = (a+50) > (b*2)

...CORRECTION...

En ligne 3, on évalue (10+50) > (20*2).

Donc 60 > 40.

La réponse est donc oui.

c référence donc True.

✎ 07° En évaluant l'expression en mode pas à pas, montrer qu'il n'y a pas de différence avec la question précédente si on utilise l'ordre des priorités ci-dessous :

  • D'abord les parenthèses
  • Ensuite les opérateurs arithmétiques
  • Ensuite les opérateurs de comparaison
  • Enfin l'opérateur d'affectation =
1 2 3
a = 10 b = 20 c = a+50 > b*2

...CORRECTION...

Python doit choisir entre les opérateurs = + > et *. Il choisit *.

3
c = a+50 > b*2
3
c = a+50 > 40

Python doit choisir entre les opérateurs = + et >. Il choisit +.

3
c = a+50 > 40
3
c = 60 > 40

Python doit choisir entre les opérateurs = et >. Il choisit >.

3
c = 60 > 40
3
c = True

Il ne reste que l'opérateur d'affectation.

On réalise l'affectation.

4 - Flottants

✎ 08° Expliquer ce qu'est le problème principal de l'utilisation des flottants. Fournir un exemple basé sur les flootants où l'interpréteur Python ne répondra pas ce qu'un utilisateur humain aurait pu croire qu'il allait répondre.

...CORRECTION...

Certains flottants sont stockés de façon approximative.

Les calculs qui les utilisent seront donc également potentiellemnet approximatifs.

Pour l'exemple, à vous de trouver. Il suffit de faire un calcul qui utilise 0.1 par exemple.

5 - Convertir

✎ 09° Compléter le programme pour qu'il parvienne à donner la moyenne des trois spécialités.

1 2 3 4 5 6 7 8 9 10 11 12 13 14
print("Donner vos trois spécialités, séparées par ENTREE") spe1 = input() spe2 = input() spe3 = input() print("Donner vos notes pour ces spécialités, séparées par ENTREE") print(spe1) note1 = input() print(spe2) note2 = input() print(spe3) note3 = input() moyenne = 0 print("Votre moyenne de spé est : ") print(moyenne)

...CORRECTION...

Il faut d'abord convertir les notes en integers en utilisant la fonction native int().

Ensuite, il reste à faire le calcul. Puisqu'on utilise une division, nous aurons le résultat sous forme d'un flottant, à moins de convertir.

Solution 1

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
print("Donner vos trois spécialités, séparées par ENTREE") spe1 = input() spe2 = input() spe3 = input() print("Donner vos notes pour ces spécialités, séparées par ENTREE") print(spe1) note1 = input() print(spe2) note2 = input() print(spe3) note3 = input() n1 = int(note1) n2 = int(note2) n3 = int(note3) moyenne = (n1 + n2 +n3)/ 3 print("Votre moyenne de spé est : ") print(moyenne)

Solution 2

1 2 3 4 5 6 7 8 9 10 11 12 13 14
print("Donner vos trois spécialités, séparées par ENTREE") spe1 = input() spe2 = input() spe3 = input() print("Donner vos notes pour ces spécialités, séparées par ENTREE") print(spe1) note1 = int(input()) print(spe2) note2 = int(input()) print(spe3) note3 = int(input()) moyenne = (note1 + note2 +note3)/ 3 print("Votre moyenne de spé est : ") print(moyenne)

FIN

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