Algorithmique et programmation | Seconde générale et technologique | Mathématiques
Dernière mise à jour : 21 octobre 2026
for i in range(a, b) parcourt de a à b-1 ; un accumulateur de somme s'initialise à 0, un accumulateur de produit à 1 ; return renvoie une valeur, print l'affiche ; random.randint(a, b) renvoie un entier de a à b inclus.
1. Indiquer le type Python (int, float, bool, str) de : (a) 15 ; (b) 3.5 ; (c) "maths" ; (d) False. (2 pts)
2. On exécute le programme ci-dessous. Détailler chaque affectation et donner l'affichage. (3 pts)
x = 7
y = 2
x = x + y
y = x - y
print(x, y)
3. Donner la valeur de 13 % 4, de 13 // 4 et de 3 ** 2. (2 pts)
1. (a) int ; (b) float ; (c) str ; (d) bool.
2. Ligne 3 : x = 7 + 2 = 9. Ligne 4 : y = 9 - 2 = 7. Affichage : 9 7.
3. 13 % 4 = 1 (reste) ; 13 // 4 = 3 (quotient entier) ; 3 ** 2 = 9.
1. Écrire une fonction mention(note) renvoyant "admis" si note >= 10, et "recalé" sinon. (2 pts)
2. Écrire une fonction somme_pairs(n) renvoyant la somme des entiers pairs de \(1\) à \(n\). Tester avec \(n = 6\) (attendu : \(2 + 4 + 6 = 12\)). (3 pts)
3. On considère la fonction suivante. Que renvoie mystere(50) ? Expliquer le rôle de la boucle. (2 pts)
def mystere(seuil):
somme = 0
n = 0
while somme <= seuil:
n = n + 1
somme = somme + n
return n
def mention(note):
if note >= 10:
return "admis"
else:
return "recalé"
def somme_pairs(n):
total = 0
for i in range(1, n + 1):
if i % 2 == 0:
total = total + i
return total
print(somme_pairs(6)) # 12
3. La boucle ajoute \(1, 2, 3, \dots\) à somme tant qu'elle ne dépasse pas \(50\). On a \(1+2+\dots+9 = 45 \le 50\) puis \(45+10 = 55 \gt 50\). La fonction renvoie donc n = 10 (le plus petit entier tel que \(1+2+\dots+n\) dépasse \(50\)).
1. Le script suivant doit calculer le produit \(1 \times 2 \times \dots \times n\). Il contient une erreur : la repérer, l'expliquer et la corriger. (3 pts)
def produit(n):
p = 0
for k in range(1, n + 1):
p = p * k
return p
2. Écrire une fonction lancer_de() simulant un lancer de dé à 6 faces (résultat entier de \(1\) à \(6\)). (1,5 pt)
3. Écrire une fonction moyenne_lancers(n) qui effectue n lancers indépendants et renvoie la moyenne des résultats obtenus. Vers quelle valeur doit-elle tendre pour n grand ? (1,5 pt)
1. L'accumulateur d'un produit doit être initialisé à 1 (et non 0) : avec p = 0, tout produit reste nul. Correction :
def produit(n):
p = 1
for k in range(1, n + 1):
p = p * k
return p
2. et 3.
import random
def lancer_de():
return random.randint(1, 6)
def moyenne_lancers(n):
total = 0
for i in range(n):
total = total + lancer_de()
return total / n
print(moyenne_lancers(100000)) # proche de 3.5
Pour n grand, la moyenne tend vers la moyenne théorique d'un dé équilibré : \(\frac{1+2+3+4+5+6}{6} = \textbf{3,5}\).