NSI (première) · Chapitre 3 · Application directe du cours
La méthode du cours signale que random.randint(1, 6) peut renvoyer 6…
Langages et programmation · Spécifier, tester, consulter une documentation · niveau 2
Énoncé
La méthode du cours signale que random.randint(1, 6) peut renvoyer alors que range(1, 6) s'arrête à . Vérifier expérimentalement cette différence de convention, en disant ce que l'expérience prouve et ce qu'elle ne prouve pas.
Corrigé
import random
tirages = [random.randint(1, 6) for _ in range(10000)]
print(min(tirages), max(tirages)) # 1 6
print(sorted(set(tirages))) # [1, 2, 3, 4, 5, 6]
print(list(range(1, 6))) # [1, 2, 3, 4, 5]
print(6 in list(range(1, 6))) # False
Les six faces sortent, compris : randint inclut ses deux bornes. range, lui, exclut la seconde.
Ce que l'expérience prouve. Que peut sortir — un seul tirage à suffisait. Une observation positive suffit à établir une possibilité.
Ce qu'elle ne prouve pas. Que ne sortira jamais. Ne pas l'avoir observé sur tirages est un indice, pas une preuve : c'est encore « le succès d'un jeu de tests ne garantit pas la correction ». Seule la documentation — help(random.randint), qui énonce « Return random integer in range [a, b], including both end points » — l'affirme.
La leçon pratique : deux fonctions voisines, deux conventions opposées, aucune erreur visible en cas de confusion. Un dé écrit random.randint(1, 7) donnerait un environ un jet sur sept, et le programme continuerait sans rien dire.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.