TP4: Boucles non bornées - while
Editeur Python
- Utiliser un notebook. Saisir une ou plusieurs lignes de code Python, puis appuyer simultanement sur Majuscule(Shift) + Entrée pour executer le code.
Ex 1: Diviser sans l’opérateur /
La division entière de a
par b
revient à soustraire N
fois b
à la valeur a
. Ce nombre N
est le résultat de ce que l’on appelle, la division entière de a
par b
.
Le script contient une boucle non bornée. La condition d’éxecution est que le nombre a doit rester supérieur ou égal à b lorsqu’on lui soustrait b
script
a = 20
b = 6
N = 0
while a > b:
a = a - b
N = N + 1
Vous pouvez visualiser les étapes de mise en oeuvre de ce programme en utilisant le lien suivant: pythontutor.com
- Question a: Que vaut
a
à la fin du script? Quelle variable stocke le résultat de la division? Quel est le résultat de la division entière de 20 par 6?
Ex 2: Racine carrée
On va adapter le script suivant pour déterminer la racine carrée de 13. La méthode va permettre d’évaluer à 10-2 près la valeur de $\sqrt {13}$.
# initialisation de la variable x
x = ...
while <condition>:
instruction
La condition d’execution de la boucle non bornée sera x**2 < 13
.
On part d’une variable x que l’on initialise à 3, puisque $3^2 = 9$, donc inférieur à 13.
On incrémente x
de 0.01 à chaque itération, dans le bloc de la boucle bornée.
- Question b: Recopiez le script sur votre feuille de réponse. Quelle est la valeur approchée de $\sqrt {13}$?
Ex 3: compte epargne
Un étudiant ouvre un compte epargne et dépose la somme de 10 euros. Ce compte est remunéré à hauteur de 2% par an. Il oublie complètement l’existance de ce comte. Au bout de combien d’années aura t-il doublé la somme sur ce compte?
Resoudre le problème en completant et en testant le script suivant dans une cellule Python
somme = 10
annee = 0
while somme <= 20:
...
...
...
-
Question c: Quel nombre x d’années se sont écoulées? La somme a t-elle exactement doublé au bout de ces x années? Pourquoi?
-
Question d: Le programme finira-t-il toujours, quelle que soit la valeur de départ pour
somme
? Argumentez.
Ex 4: tirage aleatoire
Le programme suivant utilise la fonction randint
, qui effectue le tirage aleatoire d’une valeur comprise entre 2 bornes:
randint(1,6)
permet d’effectuer un tirage aleatoire d’une valeur entiere entre 1 et 6.
from random import randint
n = 1
nombre = randint(1,6)
while nombre != 7:
n = n + 1
nombre = randint(1,6)
print(n)
Vous pouvez visualiser les étapes de mise en oeuvre de ce programme en utilisant le lien suivant: pythontutor.com
-
Question e: A quoi sert ce programme: (choisir et justifier)
- à compter le nombre d’apparition du nombre 6?
- ou à calculer le nombre de lancers jusqu’à l’apparition du premier 6?
-
Question f: La boucle « Tant que » pourrait en théorie ne jamais s’arrêter. Pourquoi ? Ajouter une condition supplémentaire dans l’instruction
while randint(1,6) != 6 and ... :
pour résoudre ce problème de l’arrêt.