Algorithmique et programmation (Python)
🟡 Moyen📝 Les énoncés sont gratuits, et les 2 premiers corrigés sont offerts. Les autres corrigés détaillés sont réservés aux abonnés.
- 1
Une population de bactéries compte 200 individus et augmente de 15 % chaque heure. On veut savoir au bout de combien d'heures elle dépasse 500 :
p = 200
h = 0
while p <= 500:
p = p * 1.15
h = h + 1
print(h)
Déroule la boucle et donne la valeur affichée.✅ Voir le corrigéoffert
Augmenter de 15 % revient à multiplier par 1,15. La boucle continue TANT QUE p ≤ 500 ; à chaque tour p est multiplié par 1,15 et le compteur h augmente de 1.
Suivons p (arrondi) et h :
h = 1 : p = 200 × 1,15 = 230
h = 2 : p = 230 × 1,15 = 264,5
h = 3 : p = 264,5 × 1,15 ≈ 304,18
h = 4 : p ≈ 349,80
h = 5 : p ≈ 402,27
h = 6 : p ≈ 462,61
h = 7 : p ≈ 532,01 → cette fois p > 500, la condition p ≤ 500 devient fausse : on sort.
print(h) affiche 7.
Interprétation : il faut 7 heures pour que la population dépasse 500 bactéries. - 2
On considère la suite définie par u₀ = 5 et uₙ₊₁ = 2uₙ − 3.
a) Écris une fonction terme(n) qui renvoie uₙ.
b) Utilise-la (à la main) pour calculer u₁, u₂ et u₃.✅ Voir le corrigéoffert
a) On part de u = u₀ = 5, puis on applique n fois la relation uₙ₊₁ = 2uₙ − 3 :
def terme(n):
u = 5
for i in range(n):
u = 2 * u - 3
return u
La boucle tourne n fois : après n passages, u contient uₙ.
b) Calculons pas à pas :
u₀ = 5
u₁ = 2 × 5 − 3 = 10 − 3 = 7
u₂ = 2 × 7 − 3 = 14 − 3 = 11
u₃ = 2 × 11 − 3 = 22 − 3 = 19
Ainsi terme(1) = 7, terme(2) = 11, terme(3) = 19.
Vérification : terme(0) doit renvoyer u₀ = 5, ce qui est le cas car la boucle ne s'exécute alors pas. ✓ - 3
En France, une année est bissextile si elle est divisible par 4, sauf les années multiples de 100 qui ne sont pas multiples de 400.
a) Écris une fonction bissextile(a) qui renvoie True ou False.
b) Que renvoie bissextile(2100) ? Explique.🔒 Corrigé réservé aux abonnésS'abonner → - 4
Que compte ce programme ? Donne la valeur finale de c.
c = 0
for n in range(1, 51):
if n % 3 == 0:
c = c + 1
print(c)🔒 Corrigé réservé aux abonnésS'abonner → - 5
Que contient la liste L construite par cette compréhension ?
L = [n * n for n in range(1, 11) if n % 2 == 0]🔒 Corrigé réservé aux abonnésS'abonner → - 6
On simule le lancer d'un dé équilibré à 6 faces :
import random
def lancer():
return random.randint(1, 6)
a) Quelles valeurs peut renvoyer lancer(), et avec quelles chances ?
b) On appelle lancer() 6000 fois et on compte le nombre de 4 obtenus. Autour de quelle valeur ce compte devrait-il se situer ? Justifie.🔒 Corrigé réservé aux abonnésS'abonner → - 7
Écris une fonction nb_solutions(a, b, c) qui renvoie le nombre de solutions réelles de l'équation ax² + bx + c = 0 (avec a ≠ 0), en utilisant le discriminant. Applique ensuite le raisonnement à l'équation 2x² − 7x + 3 = 0.
🔒 Corrigé réservé aux abonnésS'abonner → - 8
Écris une fonction maximum(L) qui renvoie le plus grand élément d'une liste L de nombres, SANS utiliser la fonction max(). Applique-la à la liste [4, 9, 2, 15, 7].
🔒 Corrigé réservé aux abonnésS'abonner → - 9
Déroule ce programme : que vaut c à la fin ?
n = 100
c = 0
while n > 1:
n = n // 2
c = c + 1
print(c)🔒 Corrigé réservé aux abonnésS'abonner → - 10
Écris une fonction moyenne(L) qui calcule la moyenne des nombres d'une liste L, puis applique-la à la liste [12, 15, 9, 14, 10].
🔒 Corrigé réservé aux abonnésS'abonner →
Comment ça s'est passé ?
Retrouve tout dans Mon suivi.
