TP - Boucles☘
Rappels importants☘
Rédiger un programme (ou un script), c'est saisir plusieurs instructions dans l'éditeur pour les exécuter toutes d'un coup :
- Le programme Python peut être sauvegardé sous forme de fichier texte avec
l'extension
.py
. - Pour exécuter le programme il suffit de le sauvegarder puis d'appuyer sur
la touche
[F5]
.
Rappels - Sauvegarder ses programmes
Vous allez devoir écrire de très nombreux programmes cette année. Pour s'y retrouver, vous devez organiser vos fichiers en leur donnant un nom explicite et en les « rangeant » correctement. Pour cela :
- Dans le répertoire
[NSI]
, créez le dossier[F01-Bases de programmation]
. - Dans ce dossier, enregistrez vos fichiers avec le nom donné à l'exercice
(
TPF01.31.py
,TPF01.32.py
, ...).
TPF01.31 : Boucler☘
En mathématiques, on appelle « factorielle n » le produit des entiers de 1 à n.
En d'autres termes, la factorielle 5 est 1 × 2 × 3 × 4 × 5 = 120.
-
Dans un nouveau script (que vous prendrez soin de sauvegarder au bon endroit, avec le bon nom), copiez/collez et complétez le corps de la fonction
facto()
en respectant ses spécifications.1 2 3 4 5
def facto(n): """ n – int, entier strictement positif Sortie : int – la factorielle de n """
-
Vérifiez et corrigez si besoin votre travail avec l'aide des tests suivants :
>>> facto(5) 120 >>> facto(12) 479001600
Hasard et programmation☘
Le module random
contient des fonctions qui permettent de générer des
nombres pseudo-aléatoires. Parmi ces fonctions, on trouve :
randint(a, b)
génère un entier compris entrea
(inclus) etb
(inclus).random()
génère un flottant compris entre0
(inclus) et1
(exclus).
On peut importer toutes les fonctions incluses dans le module random
en
début de programme grâce à l'instruction :
1 |
|
TPF01.32 : Les petits chevaux☘
Dans le jeu des « petits chevaux », on ne peut pas sortir le cheval de son camp tant qu'on n'a pas obtenu « 6 » en lançant un dé équilibré à 6 faces.
- Ouvrez et sauvegardez un nouveau script.
-
Complétez le corps de la fonction
attente()
qui n'a pas de paramètre.1 2 3 4 5 6 7
from random import randint def attente(): """ Sortie : int – le nombre de lancers nécessaires pour obtenir un « 6 » avec un dé à 6 faces. """
Une piste
Voici une version « à trous » pour vous aider :
1 2 3 4 5 6 7 8 9 10 11 12 13
from random import randint def attente(): """ Sortie : int – le nombre de lancers nécessaires pour obtenir un « 6 » avec un dé à 6 faces. """ nb = ... lancer = ... while ...: nb = ... lancer = ... return nb
-
Voici un exemple d'exécution où il a fallu 4 lancers de dé avant d'obtenir un « 6 » :
>>> attente() 4
TPF01.33 : Somme aléatoire☘
- Ouvrez et sauvegardez un nouveau script.
-
Complétez le corps de la fonction
somme_hasard(n)
qui doit générer successivement des entiers aléatoires entre0
etn
et renvoie la somme totale des entiers générés. La boucle s'arrête lorsque l'entier généré est0
.1 2 3 4 5 6 7 8
from random import randint def somme_hasard(n): """ n – int, entier strictement positif Sortie : int – somme des entiers aléatoires générés entre 0 et n. On renvoie la somme dès que 0 est généré. """
Une piste
Voici une version « à trous » pour vous aider :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
from random import randint def somme_hasard(n): """ n – int, entier strictement positif Sortie : int – somme des entiers aléatoires générés entre 0 et n. On renvoie la somme dès que 0 est généré. """ somme = ... genere = ... while ... : ... ... return ...
-
Voici un exemple d'exécution :
>>> somme_hasard(10) 97
Problème : que s'est-il passé ? Y a-t-il eu neuf nombres 10
générés,
un nombre 7
puis un 0
? On ne sait pas. Une manière le savoir est
d'afficher dans la consoles les étapes intermédiaires de calcul.
- En ajoutant l'instruction
print()
aux endroits judicieux de votre programme, essayez d'obtenir une exécution qui ressemble à la suivante :>>> somme_hasard(10) Nombre généré : 9, somme : 9 Nombre généré : 1, somme : 10 Nombre généré : 8, somme : 18 Nombre généré : 4, somme : 22 Nombre généré : 8, somme : 30 Nombre généré : 2, somme : 32 Nombre généré : 7, somme : 39 Nombre généré : 2, somme : 41 Nombre généré : 5, somme : 46 Nombre généré : 2, somme : 48 Nombre généré : 10, somme : 58 Nombre généré : 1, somme : 59 59
Remarque très importante
Ce print()
dans le programme permet de vérifier son travail.
Cependant, dans le cas d'un travail rendu à l'enseignant et noté, il
faudra « nettoyer son code » de tous ces affichages qui ne
correspondent pas aux spécifications (au cahier des charges) du
programme.