Algorithmique et programmation (Python)
🟠 Difficile📝 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 300 bactéries augmente de 12 % par heure.
p = 300
h = 0
while p <= 600:
p = p * 1.12
h = h + 1
print(h)
a) Déroule la boucle et donne la valeur affichée.
b) Que calcule ce programme, et pourquoi utilise-t-on une boucle « while » plutôt qu'une boucle « for » ?✅ Voir le corrigéoffert
a) On multiplie par 1,12 à chaque tour, tant que p reste inférieur ou égal à 600.
Tour 1 : , .
Tour 2 : , .
Tour 3 : , .
Tour 4 : , .
Tour 5 : , .
Tour 6 : , .
Tour 7 : , .
À ce stade : la boucle s'arrête et le programme affiche 7.
b) Il calcule le nombre d'heures nécessaires pour dépasser 600 bactéries.
Une boucle « for » exige de connaître à l'avance le nombre de tours.
Ici ce nombre est justement l'inconnue : seule une boucle « while » convient.
La condition d'arrêt porte sur la valeur atteinte, pas sur un compteur fixé d'avance.
Attention : la condition est « », donc la boucle continue tant qu'on n'a pas dépassé 600. - 2
On considère la suite définie par et .
def terme(n):
u = 4
for i in range(n):
u = 3 * u - 5
return u
a) Calcule à la main , et , puis vérifie ce que renvoie terme(3).
b) Pourquoi la boucle s'écrit-elle « range(n) » et non « range(n + 1) » ?✅ Voir le corrigéoffert
a) .
.
.
Déroulons terme(3) : u vaut 4 au départ.
Tour 1 (i = 0) : .
Tour 2 (i = 1) : .
Tour 3 (i = 2) : .
La fonction renvoie 43, c'est-à-dire ✓.
b) La variable u contient avant la boucle.
Chaque tour fait passer d'un rang au suivant.
Il faut donc exactement n tours pour aller de à .
« range(n) » produit n valeurs (de 0 à ) : c'est bien le compte voulu.
Avec « range(n + 1) », la fonction renverrait , décalée d'un rang. - 3
On considère le programme suivant.
c = 0
for n in range(1, 61):
if n % 4 == 0:
c = c + 1
print(c)
a) Que compte ce programme ? Donne la valeur finale de c.
b) Que deviendrait le résultat avec « range(1, 60) » ?🔒 Corrigé réservé aux abonnésS'abonner → - 4
On considère la compréhension de liste suivante.
L = [n * n for n in range(1, 13) if n % 3 == 0]
a) Que contient la liste L ?
b) Réécris ce code avec une boucle « for » classique et une liste vide au départ.🔒 Corrigé réservé aux abonnésS'abonner → - 5
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 probabilités ?
b) On appelle lancer() 9 000 fois et on compte les 4. Autour de quelle valeur ce compte devrait-il se situer ?🔒 Corrigé réservé aux abonnésS'abonner → - 6
Écris une fonction nb_solutions(a, b, c) qui renvoie le nombre de solutions réelles de (avec ).
a) Écris la fonction en utilisant le discriminant.
b) Applique le raisonnement à .🔒 Corrigé réservé aux abonnésS'abonner → - 7
Écris une fonction maximum(L) qui renvoie le plus grand élément d'une liste L, SANS utiliser max().
a) Écris la fonction.
b) Déroule-la sur la liste [6, 11, 3, 19, 8].🔒 Corrigé réservé aux abonnésS'abonner → - 8
On considère le programme suivant.
n = 200
c = 0
while n > 1:
n = n // 2
c = c + 1
print(c)
a) Déroule le programme et donne la valeur de c.
b) Que représente c par rapport à n ?🔒 Corrigé réservé aux abonnésS'abonner → - 9
Écris une fonction moyenne(L) qui calcule la moyenne des nombres d'une liste L.
a) Écris la fonction sans utiliser sum().
b) Applique-la à [14, 9, 17, 12, 8].🔒 Corrigé réservé aux abonnésS'abonner → - 10
On considère le programme suivant.
u = 1
n = 0
while u < 500:
u = 2 * u + 3
n = n + 1
print(n, u)
a) Déroule le programme et donne les deux valeurs affichées.
b) Que se passerait-il si l'on remplaçait « 2 * u + 3 » par « u + 3 » ? Et par « u - 1 » ?🔒 Corrigé réservé aux abonnésS'abonner →
Comment ça s'est passé ?
Retrouve tout dans Mon suivi.
