Kala te souhaite la bienvenueKalaMaths

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.

S'abonner ✨
  1. 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 : p=336p = 336, h=1h = 1.
    Tour 2 : p=376,3p = 376{,}3, h=2h = 2.
    Tour 3 : p=421,5p = 421{,}5, h=3h = 3.
    Tour 4 : p=472,1p = 472{,}1, h=4h = 4.
    Tour 5 : p=528,7p = 528{,}7, h=5h = 5.
    Tour 6 : p=592,1p = 592{,}1, h=6h = 6.
    Tour 7 : p=663,2p = 663{,}2, h=7h = 7.
    À ce stade p>600p > 600 : 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 « 600\le 600 », donc la boucle continue tant qu'on n'a pas dépassé 600.

  2. 2

    On considère la suite définie par u0=4u_0 = 4 et un+1=3un5u_{n+1} = 3u_n - 5.
    def terme(n):
    u = 4
    for i in range(n):
    u = 3 * u - 5
    return u
    a) Calcule à la main u1u_1, u2u_2 et u3u_3, 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) u1=3×45=7u_1 = 3 \times 4 - 5 = 7.
    u2=3×75=16u_2 = 3 \times 7 - 5 = 16.
    u3=3×165=43u_3 = 3 \times 16 - 5 = 43.
    Déroulons terme(3) : u vaut 4 au départ.
    Tour 1 (i = 0) : u=7u = 7.
    Tour 2 (i = 1) : u=16u = 16.
    Tour 3 (i = 2) : u=43u = 43.
    La fonction renvoie 43, c'est-à-dire u3u_3 ✓.

    b) La variable u contient u0u_0 avant la boucle.
    Chaque tour fait passer d'un rang au suivant.
    Il faut donc exactement n tours pour aller de u0u_0 à unu_n.
    « range(n) » produit n valeurs (de 0 à n1n - 1) : c'est bien le compte voulu.
    Avec « range(n + 1) », la fonction renverrait un+1u_{n+1}, décalée d'un rang.

  3. 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. 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. 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. 6

    Écris une fonction nb_solutions(a, b, c) qui renvoie le nombre de solutions réelles de ax2+bx+c=0ax^{2} + bx + c = 0 (avec a0a \neq 0).
    a) Écris la fonction en utilisant le discriminant.
    b) Applique le raisonnement à 3x28x+4=03x^{2} - 8x + 4 = 0.

    🔒 Corrigé réservé aux abonnésS'abonner →
  7. 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. 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. 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. 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.