Algorithmique et programmation (Python)
🔴 Expert📝 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
On considère la suite définie par u₀ = 2 et, pour tout n, uₙ₊₁ = 0,5 uₙ + 3.
a) Écris une fonction terme(n) qui renvoie uₙ.
b) Calcule u₁, u₂, u₃ à la main.
c) Écris une fonction seuil() (avec une boucle while) qui renvoie le plus petit entier n tel que uₙ > 5,9.
d) Détermine la valeur de ce seuil et interprète le comportement de la suite.✅ Voir le corrigéoffert
a) On part de u = 2 et on applique n fois la relation :
def terme(n):
u = 2
for i in range(n):
u = 0.5 * u + 3
return u
b) u₀ = 2 ; u₁ = 0,5 × 2 + 3 = 1 + 3 = 4 ; u₂ = 0,5 × 4 + 3 = 2 + 3 = 5 ; u₃ = 0,5 × 5 + 3 = 2,5 + 3 = 5,5.
c) On avance dans la suite tant qu'on n'a pas dépassé 5,9, en comptant les étapes :
def seuil():
u = 2
n = 0
while u <= 5.9:
u = 0.5 * u + 3
n = n + 1
return n
d) Continuons le calcul :
u₃ = 5,5 ; u₄ = 0,5 × 5,5 + 3 = 5,75 ; u₅ = 0,5 × 5,75 + 3 = 5,875 ; u₆ = 0,5 × 5,875 + 3 = 5,9375.
C'est au rang 6 que l'on dépasse 5,9 (5,875 ≤ 5,9 mais 5,9375 > 5,9). Donc seuil() renvoie 6.
Interprétation : la suite est croissante et se rapproche de plus en plus d'une valeur limite L. Cette limite vérifie L = 0,5 L + 3, soit 0,5 L = 3, donc L = 6. La suite grimpe vers 6 sans jamais l'atteindre, ce qui explique qu'elle finisse par dépasser 5,9. ✓ - 2
On veut résoudre en Python l'équation ax² + bx + c = 0 (avec a ≠ 0).
a) Écris une fonction discriminant(a, b, c).
b) Écris une fonction solutions(a, b, c) qui affiche les solutions réelles : deux valeurs, une valeur, ou le message 'pas de solution réelle' selon le signe du discriminant. On pourra obtenir une racine carrée avec l'écriture d ** 0.5.
c) Applique le raisonnement, à la main, à 3x² + 5x − 2 = 0.
d) Applique-le à x² − 6x + 9 = 0.✅ Voir le corrigéoffert
a) def discriminant(a, b, c):
return b * b - 4 * a * c
b) On calcule Δ, puis on distingue les trois cas. Les solutions sont données par x = et x = :
def solutions(a, b, c):
d = discriminant(a, b, c)
if d > 0:
r = d ** 0.5
print((-b - r) / (2 * a))
print((-b + r) / (2 * a))
elif d == 0:
print(-b / (2 * a))
else:
print('pas de solution réelle')
c) Pour 3x² + 5x − 2 = 0 : a = 3, b = 5, c = −2.
Δ = 5² − 4 × 3 × (−2) = 25 + 24 = 49. Comme 49 > 0, il y a deux solutions. √49 = 7.
x₁ = = = −2 ; x₂ = = = .
Les solutions sont −2 et .
d) Pour x² − 6x + 9 = 0 : a = 1, b = −6, c = 9.
Δ = (−6)² − 4 × 1 × 9 = 36 − 36 = 0. Comme Δ = 0, il y a une seule solution (racine double) :
x = = = 3.
Vérification : x² − 6x + 9 = (x − 3)², qui s'annule bien seulement pour x = 3. ✓ - 3
On simule le lancer de deux dés équilibrés à 6 faces et on s'intéresse à la somme obtenue :
import random
def somme_deux_des():
d1 = random.randint(1, 6)
d2 = random.randint(1, 6)
return d1 + d2
a) Quelles sont la plus petite et la plus grande valeur possibles pour la somme ?
b) Combien y a-t-il de couples (d1, d2) possibles au total ?
c) Combien de ces couples donnent une somme égale à 7 ? En déduire la probabilité d'obtenir 7.
d) On répète l'expérience 3600 fois. Autour de quelle valeur devrait se situer le nombre de sommes égales à 7 ?🔒 Corrigé réservé aux abonnésS'abonner → - 4
On dispose d'une liste de notes : notes = [8, 14, 17, 6, 12, 15, 9, 18, 11].
a) Écris une fonction nb_admis(L) qui compte les notes supérieures ou égales à 10.
b) Écris, à l'aide d'une compréhension de liste, la liste des notes strictement inférieures à 10.
c) Écris une fonction moyenne(L) et donne la valeur exacte de la moyenne de notes.
d) Écris une fonction meilleure(L) qui renvoie la meilleure note sans utiliser max(), et donne-la ici.🔒 Corrigé réservé aux abonnésS'abonner → - 5
Léa emprunte 1200 € à un ami, sans intérêt, et rembourse 90 € chaque mois.
a) Écris une fonction dette(n) qui renvoie la somme restant à devoir après n mois.
b) Écris une fonction nb_mois() (avec une boucle while) qui renvoie le nombre de mois nécessaires pour tout rembourser (dette inférieure ou égale à 0).
c) Combien de mois faut-il ? Quelle somme Léa doit-elle réellement payer le dernier mois ?🔒 Corrigé réservé aux abonnésS'abonner → - 6
a) Écris une fonction somme_multiples(N) qui renvoie la somme des entiers de 1 à N (inclus) qui sont multiples de 3 OU de 5.
b) Applique-la à N = 20 en détaillant les termes.
c) Écris une fonction compte_multiples(N) qui, au lieu de les additionner, COMPTE ces entiers ; donne le résultat pour N = 20.🔒 Corrigé réservé aux abonnésS'abonner → - 7
La suite de Fibonacci est définie par F₀ = 0, F₁ = 1 et, pour n ≥ 2, Fₙ = Fₙ₋₁ + Fₙ₋₂ (chaque terme est la somme des deux précédents).
a) Calcule F₂, F₃, F₄, F₅ et F₆ à la main.
b) Écris une fonction fibo(n) qui renvoie Fₙ à l'aide d'une boucle et de deux variables.
c) Que renvoie fibo(7) ?🔒 Corrigé réservé aux abonnésS'abonner → - 8
L'algorithme d'Euclide calcule le PGCD (plus grand commun diviseur) de deux entiers : on remplace le plus grand par le reste de sa division par l'autre, et on recommence jusqu'à obtenir un reste nul.
a) Applique l'algorithme à la main pour 84 et 30.
b) Écris une fonction pgcd(a, b) utilisant une boucle while et l'opérateur reste %.
c) Vérifie que ta fonction donne le bon résultat pour 84 et 30.🔒 Corrigé réservé aux abonnésS'abonner → - 9
On relève la température (en °C) sur 7 jours : temperatures = [12, 8, 15, 5, 9, 5, 11], où l'indice 0 correspond au premier jour.
a) Écris une fonction indice_min(L) qui renvoie l'indice du PREMIER jour où la température est minimale.
b) Applique-la à temperatures : quel indice, et quelle température ?
c) Écris une fonction amplitude(L) qui renvoie la différence entre la plus grande et la plus petite température, et donne sa valeur ici.🔒 Corrigé réservé aux abonnésS'abonner → - 10
Un jeu de dé : on lance un dé équilibré à 6 faces, on gagne la partie si l'on obtient un 5 ou un 6.
import random
def partie():
d = random.randint(1, 6)
if d >= 5:
return 1
else:
return 0
a) Quelle est la probabilité de gagner une partie ?
b) Écris une fonction nb_gagnees(N) qui joue N parties et renvoie le nombre de parties gagnées.
c) On joue 1200 parties : autour de quelle valeur devrait se situer nb_gagnees(1200) ?
d) Le joueur mise 2 € par partie et reçoit 5 € à chaque partie gagnée. Sur 1200 parties, quel bilan (gain ou perte) peut-il espérer ? Détaille.🔒 Corrigé réservé aux abonnésS'abonner →
Comment ça s'est passé ?
Retrouve tout dans Mon suivi.
