Adloun

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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →