= range une valeur : x = x + 1 augmente x de 1. == compare et vaut True ou False. / donne un float ($9 / 3$ vaut 3.0), // le quotient, % le reste, ** la puissance. input renvoie un str : on écrit int(input(…)).Ex. 1★★★Automatismes : types et affectations — Réponds sans ordinateur.
-4 ; 4.0 ; "4" ; False.15 / 5 ? Quel est son type ?n = n + 1 ?p == 4 ? Que vaut p ensuite ?prix = 3,75 pour ranger $3{,}75$ dans prix. Corrige son instruction.a = 10 puis a = 4, la variable a contient $10$ et $4$. Justifie.Ex. 2★★★Automatismes : les opérations — Réponds sans calculatrice.
print(23 // 4) et print(23 % 4) ? Écris l'égalité de la division euclidienne qui le justifie.print(10 / 4) affiche 2, comme print(10 // 4). A-t-il raison ? Justifie.2 + 5 * 3 et (2 + 5) * 3 en Python ?3 ^ 4 pour calculer $3^4$. A-t-il raison ? Justifie et donne la bonne instruction.Ex. 3★★★Places de cinéma — Un groupe achète des places de cinéma. Voici le script de la caisse : prix = 9 places = 4 total = prix * places prix = prix - 2 total = total + places print(total) print(prix)
| Ligne | prix | places | total |
|---|---|---|---|
| 1 | 9 | – | – |
| 2 | ? | ? | – |
| 3 | ? | ? | ? |
| 4 | ? | ? | ? |
| 5 | ? | ? | ? |
total = prix * places. A-t-elle raison ? Justifie.Ex. 4★★★Températures inversées — Ben a saisi à l'envers les températures du jour : il faisait $19$ °C le matin et $12$ °C le soir, après un orage. Pour échanger les deux valeurs, il écrit : matin = 12 soir = 19 matin = soir soir = matin print(matin) print(soir)
| Étape | matin | soir |
|---|---|---|
| Ligne 2 | 12 | 19 |
| Ligne 3 | ? | ? |
| Ligne 4 | ? | ? |
ecart = matin - soir. Que vaut ecart ? Quel écart de température attendait-il ?Ex. 5★★★Les points d'un jeu — Dans un jeu, Inès marque des points en deux manches. Elle veut afficher son total avec ce script : a = input("Points manche 1 : ") b = input("Points manche 2 : ") print(a + b)
Ex. 6★★★Le chrono du trail — Sur un trail, le chronomètre de Ben donne la durée de course en secondes. Ben veut l'afficher en heures, minutes et secondes. Voici son programme à compléter : duree = int(input("Durée en secondes : ")) heures = ... reste = ... minutes = ... secondes = ... print(heures, minutes, secondes)
// et %. Qu'affiche le programme si l'on tape 5000 ?// par /. Qu'affiche son programme si l'on tape 8000 ? Explique son erreur.int(…) à la ligne 1. Que se passe-t-il à la ligne 2 ? Justifie à l'aide du type de duree.duree = duree + 30 juste après la ligne 1. Un camarade dit : « Cette équation n'a pas de solution. » Réponds-lui, puis donne l'affichage obtenu si l'on tape 8000.Ex. 7★★★Soldes : l'ordre compte — Une veste coûte $80$ €. Le magasin propose une remise de $25\,\%$ et un bon de $10$ €. La caisse peut appliquer les deux réductions dans un ordre ou dans l'autre : # Programme A prix = 80 prix = prix * 0.75 prix = prix - 10 print(prix) # Programme B prix = 80 prix = prix - 10 prix = prix * 0.75 print(prix)
prix_a et prix_b, puis affiche ces deux prix et le booléen prix_a == prix_b.80 * 0.75 ^ 2. Explique son erreur, corrige-la et donne la valeur obtenue.Ex. 8★★★La rotation au volley — Au volley, Lina, Tom et Sami occupent trois postes. À chaque rotation, le joueur du poste 2 passe au poste 1, celui du poste 3 passe au poste 2 et celui du poste 1 passe au poste 3. Zoé programme une rotation : poste1 = "Lina" poste2 = "Tom" poste3 = "Sami" poste1 = poste2 poste2 = poste3 poste3 = poste1 print(poste1, poste2, poste3)
| Ligne | poste1 | poste2 | poste3 |
|---|---|---|---|
| 3 | Lina | Tom | Sami |
| 4 | ? | ? | ? |
| 5 | ? | ? | ? |
| 6 | ? | ? | ? |
aux. Donne l'affichage obtenu.%, qui occupe le poste 1 après $10$ rotations.capitaine = poste1 juste après la ligne 3. Que contient capitaine après la rotation ? Justifie.print(poste3 == "Lina") ? Quel est le type de cette valeur ? Pourquoi print(poste3 = "Lina") ne convient-il pas ?==. Avec elif, seul le premier test vrai s'exécute : le cas le plus restrictif d'abord. « À partir de 16 » : $n \geqslant 16$, soit n >= 16.Ex. 9★★★Valeur d'une condition — On a exécuté a = 9 puis b = -2. Donne la valeur (True ou False) de chaque condition.
a > 9a >= 9a > 5 and b > 0a > 5 or b > 0not (b < 0)a % 2 == 0-5 <= b <= 0Ex. 10★★★Écrire un test sans erreur — Réponds à chaque question en une ligne.
if x = 5: est-elle correcte ? Corrige-la si besoin.if vitesse >= 90 est-elle correcte ? Corrige-la si besoin.if a > 0:, la ligne print("positif") est écrite sans décalage. Que se passe-t-il ?if doit toujours être suivi d'un else. Justifie.n est pair ».Ex. 11★★★Tarif de cinéma — Un cinéma affiche : « moins de 14 ans : 5 € ; de 14 à 23 ans : 7 € ; à partir de 24 ans : 10 € ». Ben écrit cette fonction. def tarif(age): if age < 14: return 5 elif age < 24: return 7 else: return 10
tarif(9), tarif(19) et tarif(40). Combien paient deux jeunes de 9 et 19 ans avec deux adultes de 40 ans ?tarif(14) et tarif(24). La fonction respecte-t-elle l'affiche aux frontières ?age < 24 par age <= 24. Pour quel âge le résultat change-t-il ? Conclus.Ex. 12★★★Badge de marche : trouver l'erreur — Une appli donne un badge selon le nombre de pas de la journée : « or » à partir de 10 000, « argent » à partir de 7 000, « bronze » à partir de 4 000, « aucun » sinon. Lina écrit : def badge(pas): if pas >= 4000: return "bronze" elif pas >= 7000: return "argent" elif pas >= 10000: return "or" else: return "aucun"
badge(12500) ? Quel badge devrait-on obtenir ? Justifie.badge(3999), badge(4000), badge(7000) et badge(10000).Ex. 13★★★Jeu de deux dés — On lance deux dés. Si les deux faces sont égales (double), on rejoue ; sinon, si la somme est paire, on gagne 2 points ; sinon, on perd. Complète ce programme. de1 = 3 de2 = 5 if ...: print("rejoue") elif ...: print("gagne 2 points") else: print("perd")
de1 = 3 et de2 = 5 ?de1 = 4 et de2 = 4 ? La somme 8 est paire : explique le rôle du elif pour ces valeurs.%.Ex. 14★★★Années bissextiles : corriger et réordonner — Une année est bissextile si elle est divisible par 4 mais pas par 100, ou si elle est divisible par 400. Tom écrit cette fonction. def bissextile(annee): if annee % 4 == 0: return True elif annee % 100 == 0: return False elif annee % 400 == 0: return True else: return False
bissextile(2032), bissextile(2025) et bissextile(1800) ? Quel résultat est faux ?elif ne sont jamais vrais quand Python les examine.if / elif / else en plaçant le cas le plus restrictif en premier.return et qui utilise and, or et not.Ex. 15★★★Serre : and ou or ? — Dans une serre, la température t (en °C) est correcte si elle est comprise entre 18 et 25, bornes comprises. Sinon, une alerte doit se déclencher. Lou écrit cette fonction.
def etat(t):
if t < 18 and t > 25:
return "alerte"
else:
return "normal"
etat(12), etat(21) et etat(31) ? Compare avec les résultats attendus.t la condition t < 18 and t > 25 est-elle vraie ? Justifie, puis corrige la ligne du test.not. Vérifie-le pour $t = 12$ et $t = 25$.else qui commence par t = 25 et affiche "chauffage" si $t < 18$, "ventilation" si $t > 25$, rien sinon. Qu'affiche-t-il ?< par <= et > par >=. Pour quelles valeurs affectées à t les deux scripts affichent-ils des résultats différents ? Justifie.Ex. 16★★★Jeu des cartes numérotées — Dans un jeu, on tire une carte numérotée de 1 à 50. Si son numéro n est un multiple de 6, on gagne 10 points. Sinon, si n est pair, on gagne 3 points. Sinon, si n est un multiple de 3, on gagne 2 points. Sinon, on gagne 0 point.
points(n) qui renvoie le nombre de points gagnés, avec if / elif / else.points(42), points(34), points(27) et points(35).elif de ta fonction par if. Que renvoie sa fonction pour 42 ? Pour quels numéros de 1 à 50 diffère-t-elle de la tienne ? Justifie.n est impair, points(n) vaut 0. »manche(a, b) qui appelle points et renvoie "A gagne", "B gagne" ou "égalité". Que renvoie manche(30, 44) ?range(a, b) donne a, a + 1, …, b − 1 : $b - a$ tours, borne de droite exclue (range(2, 5) → 2, 3, 4) ; range(n) part de 0. Somme et compteur à 0, produit à 1, AVANT la boucle. Un print indenté s'exécute à chaque tour.Ex. 17★★★Lire un range — Automatismes. Réponds sans écrire le programme en entier.
for k in range(5):.for k in range(3, 8): ?for k in range(2, 15, 4):.for k in range(10, 0, -3):, k prend la valeur 0. Justifie.for k in range(1, 100):. A-t-elle raison ? Justifie.for k in range(0, 20, 5):, quelle est la dernière valeur de k ? Combien de tours fait la boucle ?Ex. 18★★★Choisir le bon range — Automatismes. Pour chaque cas, écris la ligne for k in range(…): qui convient.
Ex. 19★★★Trace d'une boucle qui utilise k — On considère le programme suivant. a = 2 for k in range(1, 5): a = 2 * a - k print(a)
| Tour | k | a |
|---|---|---|
| Avant | — | 2 |
| 1 | ? | ? |
| 2 | ? | ? |
| 3 | ? | ? |
| 4 | ? | ? |
print(a) de 4 espaces vers la droite, sous le for. Qu'affiche alors le programme ?Ex. 20★★★Le programme de pompes de Noé — Noé s'entraîne pendant 20 jours : le jour k, il fait $3 \times k$ pompes (3 le jour 1, 6 le jour 2, etc.). Pour calculer le nombre total de pompes, il écrit ce programme. for k in range(1, 20): total = 0 total = total + 3 * k print(total)
Ex. 21★★★Population d'une ville sur 10 ans — Une ville compte 8 000 habitants en 2026, et sa population augmente de 4 % par an. Ben veut connaître la population en 2036 et compter les années, de 2027 à 2036, où elle dépasse 10 000 habitants. pop = 8000 c = ... for annee in range(..., ...): pop = ... if pop > 10000: c = ... print(round(pop)) print(c)
Ex. 22★★★Les tickets gagnants de la tombola — Pour la tombola du lycée, les tickets sont numérotés de 1 à 200. Un ticket gagne si son numéro est un multiple de 3 mais pas un multiple de 5. Lina veut compter les tickets gagnants avec Python.
%, ==, != et and.for et un compteur pour afficher le nombre de tickets gagnants.for k in range(1, 200):. Elle dit : « Mon programme affiche le même nombre, donc il est juste. » A-t-elle raison ? Justifie.for k in range(3, 201, 3):. Quelle condition reste-t-il à tester dans le if ? Combien de tours fait cette boucle ?Ex. 23★★★La carte de cinéma à tarif dégressif — Avec la carte d'un cinéma, les places n° 1 à 5 coûtent 8 €, les places n° 6 à 10 coûtent 6 € et les suivantes 4 €. Ben écrit une fonction qui renvoie le prix total de n places. def prix_total(n): S = ... for k in range(...): if k <= 5: S = S + 8 elif ...: S = S + 6 else: S = S + 4 return S
if k <= 5: par if k < 5:. Que renvoie alors prix_total(12) ? Explique l'écart.for par for k in range(n):. Que renvoie prix_total(12) ? Explique.Ex. 24★★★L'élevage de lapins — Un éleveur modélise le nombre de couples de lapins mois après mois. Chaque mois, le nouveau nombre de couples est la somme des nombres des deux mois précédents. Ben écrit ce programme. a = 1 b = 1 for k in range(6): c = a + b a = b b = c print(b)
| Tour | k | c | a | b |
|---|---|---|---|---|
| Avant | — | — | 1 | 1 |
| 1 | 0 | ? | ? | ? |
| 2 | 1 | ? | ? | ? |
| 3 | 2 | ? | ? | ? |
| 4 | 3 | ? | ? | ? |
| 5 | 4 | ? | ? | ? |
| 6 | 5 | ? | ? | ? |
a = b puis b = a + b. Qu'affiche son programme ? Explique pourquoi le résultat change.range(6) pour que le programme affiche 144 ? Justifie.while contient la condition pour CONTINUER, contraire de l'arrêt : arrêt dès que $v < 50$ → while v >= 50:. Le bloc modifie la variable testée ; le compteur part de 0 et augmente de 1. Jamais != avec des flottants.Ex. 25★★★Automatismes : écrire la bonne condition — Réponds en une ou deux lignes et justifie.
s dépasse 500. Écris la ligne while.t baisse. On veut s'arrêter dès que $t < 20$. Écris la ligne while.score atteint 100, un élève écrit while score <= 100:. A-t-il raison ? Justifie.for ou while ? Justifie.while n > 0:, la variable n vaut 0. Combien de fois le bloc est-il exécuté ?x = 0, on écrit while x != 1: x = x + 0.1. Le programme s'arrête-t-il ? Justifie.Ex. 26★★★Automatismes : nombre de tours et valeur à la sortie — Chaque boucle est écrite sur une seule ligne. Réponds sans ordinateur.
a = 3, on exécute while a < 50: a = a * 2. Quelle est la valeur de a à la sortie ?n = 100, on exécute while n >= 30: n = n - 25. Combien de tours fait la boucle ?m = 13, on exécute while m % 4 != 0: m = m + 1. Quelle est la valeur de m à la sortie ?c = 0, on exécute while c != 7: c = c + 2. Que se passe-t-il ?t = 3, on exécute while t < 10: print(t). Que se passe-t-il ?p = 1, on exécute while p <= 1000: p = p * 10. Combien de tours fait la boucle ? Et si on remplace <= par < ?Ex. 27★★★Épargne : trace d'un seuil — Ben place 2 500 € sur un livret qui rapporte 4 % par an. Il cherche au bout de combien d'années son capital atteint 3 000 €.capital = 2500 annees = 0 while capital < 3000: capital = capital * 1.04 annees = annees + 1 print(annees)
capital par 1.04.capital < 3000 après l'étape).| Étape | capital | annees | Test |
|---|---|---|---|
| Début | 2500 | 0 | Vrai |
| Tour 1 | 2600 | 1 | Vrai |
| Tour 2 | ? | ? | ? |
| Tour 3 | ? | ? | ? |
| Tour 4 | ? | ? | ? |
| Tour 5 | ? | ? | ? |
capital, arrondi au centime ?capital = 2800. Qu'affiche le programme ? Vérifie par deux calculs.while faut-il écrire ? L'affichage change-t-il ?Ex. 28★★★Voiture d'occasion : programme à compléter — Une voiture achetée 18 000 € perd 15 % de sa valeur chaque année. On cherche au bout de combien d'années elle vaut moins de 6 000 €.valeur = 18000 annees = ... while ...: valeur = ... annees = ... print(annees)
while qui convient.annees = 1 à la ligne 2. Qu'affiche son programme ? Explique son erreur.Ex. 29★★★Jeu de dés : attendre le 6 — On lance un dé équilibré jusqu'à obtenir un 6. Un élève écrit cette fonction, qui doit renvoyer le nombre de lancers effectués.from random import randint def attente_six(): de = randint(1, 6) lancers = 1 while de != 6: lancers = lancers + 1 return lancers
lancers vaut 1 avant la boucle.de != 6 convient. Pourtant, avec x = 0, la boucle while x != 1: x = x + 0.1 ne s'arrête jamais. Explique la différence.Ex. 30★★★Tasse de thé : corriger un programme de seuil — Une tasse de thé sort à 85 °C. On admet que sa température baisse de 6 % chaque minute. Lina cherche au bout de combien de minutes le thé passe sous 40 °C. Elle écrit ce programme.temp = 85 minutes = 1 while temp < 40: minutes = minutes + 1 print(minutes)
temp à chaque tour ? Justifie.Ex. 31★★★Course à pied : un objectif jamais atteint — Ben prépare une course. La première semaine, il court 4 km, puis il ajoute 3 km chaque semaine. Il veut savoir au bout de combien de semaines il court 20 km. Il écrit ce programme.distance = 4 semaines = 0 while distance != 20: distance = distance + 3 semaines = semaines + 1 print(semaines, distance)
| Tour | distance | semaines | Condition |
|---|---|---|---|
| Début | 4 | 0 | True |
| 1 | ? | ? | ? |
| 2 | ? | ? | ? |
| 3 | ? | ? | ? |
| 4 | ? | ? | ? |
| 5 | ? | ? | ? |
| 6 | ? | ? | ? |
nb_semaines(objectif) qui renvoie le nombre de semaines d'ajouts nécessaires pour que la distance atteigne au moins objectif km. Que renvoie nb_semaines(42) ? Justifie.Ex. 32★★★Deux villes : quand A dépasse-t-elle B ? — La ville A compte 12 000 habitants et gagne 3 % par an. La ville B compte 18 000 habitants et en perd 2 % par an. On modélise leurs populations après n années par ces fonctions.def ville_a(n): return 12000 * 1.03 ** n def ville_b(n): return 18000 * 0.98 ** n
ville_a(1) et ville_b(1). Explique les nombres 1.03 et 0.98.depassement(), sans paramètre, qui appelle ville_a et ville_b et renvoie le premier nombre d'années où A est plus peuplée que B.depassement() ? Justifie par deux calculs de populations!= dans la condition du while. Explique pourquoi c'est une erreur grave.print(...) au lieu de return ..., puis exécute x = depassement() et print(x). Qu'affiche son programme ? Explique.def nom(paramètres): puis un bloc indenté terminé par return, qui renvoie la valeur et arrête la fonction. On donne les arguments dans l'ordre des paramètres. Avec print à la place de return, la fonction renvoie None. $f(x) = 2x^2$ s'écrit return 2 * x ** 2.Ex. 33★★★Lire un appel de fonction — Automatismes. On a défini les deux fonctions ci-dessous. Réponds sans ordinateur.def g(x): return 5 - 2 * x def h(a, b): return a * 10 + b
g(4) ?g(-1) ?h(3, 7) ?h(7, 3) ? Compare avec la réponse précédente.g(h(0, 2)) ?y après l'instruction y = g(1) + h(1, 1) ?h(5) provoque-t-il une erreur ?Ex. 34★★★Fonction mathématique et fonction Python — Automatismes. Dans chaque fonction Python, le paramètre s'appelle x.
return qui traduit $f(x) = 4x^2 - 5$.return qui traduit $g(x) = \frac{x + 1}{2}$.return 3x - 1. Corrige son erreur.return (x - 2) ** 2 traduit-elle ?f(3) ?return 6 / x + 1. Que renvoie son k(2) ? Et le bon k(2) ?Ex. 35★★★Tarif de cinéma : print ou return — Un cinéma fait payer 8 € par place, plus 5 € de frais de réservation. Ben écrit deux versions d'une fonction qui calcule le prix pour n places.def tarif_a(n): return 8 * n + 5 print("Bon film") def tarif_b(n): print(8 * n + 5)
print(tarif_a(3)) ? La ligne print("Bon film") est-elle exécutée ? Justifie.tarif_b(3) seule ? Et l'instruction print(tarif_b(3)) ?total = tarif_b(3) + 2 provoque une erreur, puis corrige tarif_b.Ex. 36★★★Admis ou non : compléter un programme — Un élève est admis si sa note est supérieure ou égale à 10. La fonction est_admis renvoie un booléen et la fonction resultat renvoie un texte. Complète le programme.def est_admis(note): return ... def resultat(note): if ...: return "admis" ... return "non admis"
est_admis(note) doit renvoyer True si la note est supérieure ou égale à 10, et False sinon.est_admis(9.5) et resultat(7.5 + 2.5) ?if note >= 10: puis return True, puis hors du if return False, sans else. A-t-il raison ? Justifie.Ex. 37★★★Vitesse moyenne d'un coureur — La vitesse moyenne d'un coureur (en km/h) est égale à la distance parcourue (en km) divisée par la durée de la course (en h). On veut une fonction qui marche pour toutes les courses.
vitesse(distance, duree) qui renvoie la vitesse moyenne. Teste-la sur un cas que tu calcules de tête.vitesse(15, 1.25) ?vitesse(1.25, 15). Que renvoie cet appel (arrondi au centième) ? Pourquoi ce résultat n'a-t-il aucun sens ?temps_en_heures(h, m) qui convertit h heures et m minutes en heures. Que renvoie vitesse(25, temps_en_heures(2, 30)) ?Ex. 38★★★Location de kayaks — Une base de loisirs loue des kayaks. Le prix par personne est de 12 € pour 2 heures ou moins, puis de 5 € par heure au-delà de 2 heures. Pour un groupe de 4 personnes ou plus, le prix total baisse de 10 €. Le nombre d'heures est un entier.
prix_kayak(heures) qui renvoie le prix pour une personne. Utilise un if et deux return. Vérifie à la main prix_kayak(2) et prix_kayak(5).prix_groupe(heures, personnes) qui appelle prix_kayak et renvoie le prix total du groupe. Calcule prix_groupe(3, 4).prix_groupe(4, 3). Quelle valeur obtient-il ? Explique son erreur.print(prix_groupe(3)). Que se passe-t-il ? Justifie.Ex. 39★★★Températures : corriger le programme de Noé — Pour convertir une température de degrés Celsius (°C) en degrés Fahrenheit (°F), on calcule $F = 1{,}8 \times C + 32$. Noé écrit le programme ci-dessous. La fonction ecart doit renvoyer la différence, en °F, entre deux températures données en °C.def fahrenheit(c): f = 1.8 * (c + 32) print(f) def ecart(c1, c2): return fahrenheit(c2) - fahrenheit(c1)
fahrenheit(0). L'écran affiche 57.6, alors que 0 °C correspond à 32 °F. Explique l'erreur de la ligne 2, puis corrige-la.print(fahrenheit(25)). Qu'affiche l'écran ? Justifie chaque ligne affichée.print(ecart(10, 30)) et obtient une erreur. Explique pourquoi, puis corrige la fonction fahrenheit.ecart(10, 30) ? Vérifie le résultat par un calcul à la main.print("Conversion faite") à la fin du corps de la fonction corrigée. Il dit que y = fahrenheit(-40) affichera Conversion faite. Vrai ou faux ? Justifie.Ex. 40★★★Années bissextiles — Une année est bissextile si elle est divisible par 400, ou si elle est divisible par 4 sans l'être par 100. Complète le programme ci-dessous.def divisible(n, d): return ... def est_bissextile(annee): if divisible(annee, 400): return True elif divisible(annee, 100): return ... else: return ...
divisible(n, d) doit renvoyer True si d divise n, et False sinon. Que renvoie divisible(2026, 4) ?est_bissextile(1900), est_bissextile(2000) et est_bissextile(2028) ? Justifie.nb_bissextiles(debut, fin) qui utilise un compteur et renvoie le nombre d'années bissextiles de debut à fin, fin comprise. Calcule nb_bissextiles(1901, 2000).range(debut, fin) dans sa boucle. Que renvoie alors nb_bissextiles(1901, 2000) ? Explique l'écart.randint(1, 6) inclut 6, alors que range(1, 6) s'arrête à 5 ; random() < p est vrai avec la probabilité $p$. Fréquence $= \frac{c}{n}$ ($c$ compteur) : elle fluctue, mais pour $n$ grand elle approche la probabilité, ex. $\frac{1}{6} \approx 0{,}167$.Ex. 41★★★Lire les instructions du module random — Automatismes. Réponds sans exécuter de programme.
randint et random.randint(3, 7).k dans la boucle for k in range(3, 7):.random() peut renvoyer 1. » Justifie.random(), puis celui de la valeur renvoyée par randint(3, 7).random() >= 0.35 est-elle vraie ?Ex. 42★★★Fréquence, moyenne et fluctuation — Automatismes. Lina simule 300 lancers d'un dé équilibré : le compteur des six vaut c = 46.
points() est appelée 400 fois et la somme des résultats vaut s = 1090. Calcule la moyenne de cette série.Ex. 43★★★Lancers francs au basket — Au basket, Yanis réussit un lancer franc avec la probabilité $0{,}72$. Ben commence un programme qui simule un lancer franc (1 s'il est réussi, 0 sinon), puis la fréquence de réussite sur n lancers.
from random import random
def lancer_franc():
if random() < ...:
return 1
return 0
def frequence(n):
c = ...
for i in range(...):
c = c + lancer_franc()
return ...
lancer_franc pour que le lancer soit réussi avec la probabilité $0{,}72$.frequence pour qu'elle renvoie la fréquence des réussites sur n lancers.return c. Que renvoie alors frequence(500) ? Est-ce une fréquence ?frequence(20), puis 0.7183 avec frequence(10000). Quelle valeur estime le mieux la probabilité $0{,}72$ ? Justifie.Ex. 44★★★La somme de deux dés — Dans un jeu de société, on lance deux dés et on gagne un bonus si la somme vaut 7. Noé veut estimer la probabilité du bonus et écrit ce programme. from random import randint def somme_des(): return randint(2, 12) def frequence_sept(n): c = 0 for i in range(n): if somme_des() == 7: c = c + 1 return c / n
somme_des() renvoie 7 ?somme_des.frequence_sept(n) est-elle proche avant correction ? Et après correction ?Ex. 45★★★Le stand de la kermesse — À la kermesse, on lance un dé : on gagne 2 points si on obtient un nombre pair, sinon on perd 3 points. Jade simule une partie ainsi. from random import randint def partie(): d = randint(1, 6) if d % 2 == 0: print(2) else: print(-3)
5 % 2 ? Explique pourquoi d % 2 == 0 teste si le dé donne un nombre pair.s = s + partie() et Python affiche une erreur. Explique pourquoi, puis corrige la fonction partie.moyenne(n) qui renvoie la moyenne des points obtenus sur n parties.moyenne(n) est-elle proche pour $n$ grand ? Explique si le jeu est favorable au joueur.Ex. 46★★★Sortir de prison au jeu de plateau — Dans un jeu de plateau, le pion de Malik sort de prison s'il obtient 5 ou 6 avec un dé équilibré. Malik veut estimer la probabilité de sortir en un lancer. Il écrit ce programme. from random import randint def lancer(): return randint(1, 6) def frequence_sortie(n): c = 0 for i in range(1, n): if lancer() == 5 or lancer() == 6: c = c + 1 return c
frequence_sortie(500) ? Explique pourquoi la valeur renvoyée n'est pas une fréquence, puis corrige ces deux défauts.lancer() == 5 or lancer() == 6 ne simule pas un seul lancer. Écris le programme entièrement corrigé.lancer() et $b$ celui du 2e. Parmi les 36 couples $(a\,;b)$, combien font compter un tour ? Déduis-en la probabilité qu'un tour soit compté.frequence_sortie(500) renvoie 0.342. Malik en conclut que son dé est truqué. A-t-il raison ? Justifie.Ex. 47★★★Les sachets de graines de tomate — Ben sème des graines de tomate par sachets de 5. Chaque graine germe avec la probabilité 0,8, indépendamment des autres. Il veut estimer par simulation le nombre moyen de graines qui germent dans un sachet. Il utilise la fonction random du module random.
random() renvoie un flottant de $[0\,;1[$. Explique pourquoi le test random() < 0.8 est vrai avec la probabilité $0{,}8$.germe() qui renvoie 1 si une graine germe et 0 sinon.semis() qui appelle germe() pour les 5 graines d'un sachet et renvoie le nombre de graines qui ont germé.moyenne(n) qui simule $n$ sachets et renvoie la moyenne du nombre de graines germées par sachet.moyenne(10000) et obtient 3.9952, puis 4.0031. Explique pourquoi ces valeurs diffèrent et justifie la valeur dont elles s'approchent.Ex. 48★★★En attendant le six aux petits chevaux — Aux petits chevaux, Inès doit obtenir un 6 pour sortir un cheval. La fonction attente renvoie le nombre de lancers d'un dé équilibré qu'il faut pour obtenir le premier 6. from random import randint def attente(): nb = 1 while randint(1, 6) != 6: nb = nb + 1 return nb
| Étape | tirage | tirage != 6 | nb |
|---|---|---|---|
| Début | aucun | aucun | 1 |
| Test 1 | 2 | ? | ? |
| Test 2 | 5 | ? | ? |
| Test 3 | 6 | ? | ? |
import random en 1re ligne et randint(1, 7), « car 7 est exclu comme dans range ». Explique ses deux erreurs.moyenne_attente(10000). Explique cet écart et relie ces résultats à la probabilité $\frac{1}{6}$ d'obtenir un 6.