Aller au contenu
Accueil › Exercices de maths › Algorithmique et programmation Python : exercices de maths 1ère

Algorithmique et programmation Python : exercices de maths 1ère

  • par
Rate this post
Exercices de maths 1ère : Algorithmique et programmation Python

23 exercices classés par difficulté (★ facile, ★★ moyen, ★★★ difficile). Cherche d’abord sans regarder le corrigé !

2 Vrai ou faux ? ★★★

Dis si chaque affirmation est vraie ou fausse, en justifiant.

  1. range(4) contient le nombre 4.
  2. Dans if x = 3:, on teste si x vaut 3.
  3. Une fonction qui exécute return continue ensuite à lire les lignes suivantes.
  4. Si L = [6, 1, 8], alors L[3] vaut 8.
  5. La condition 0.1 + 0.2 == 0.3 est vraie en Python.

3 Écrire une fonction ★★★

Écris en Python une fonction f qui calcule f(x) = 3x² − 5x + 2. Calcule à la main f(4) et f(−1), puis donne ce que doit afficher print(f(4), f(-1)).

4 Parité ★★★

Écris une fonction est_pair(n) qui renvoie True si l’entier n est pair et False sinon. Que renvoie-t-elle pour 14 et pour 7 ?

5 Tableau de suivi ★★★

Complète un tableau de suivi des variables k et s pour le programme suivant, puis donne la valeur affichée.

s = 0
for k in range(1, 6):
    s = s + k * k
print(s)

6 Manipuler une liste ★★★

Qu’affiche chacune des instructions print du programme suivant ?

L = [8, 3, 12, 5]
print(L[2], L[-1], len(L))
L.append(20)
L[1] = 0
print(L)
print(len(L))

7 Tarif de cinéma ★★★

Un cinéma applique le tarif suivant : 5 € pour les moins de 12 ans, 7 € de 12 à 25 ans inclus, 9 € au-delà. Écris la fonction tarif(age) qui renvoie le prix, puis donne les prix pour 10 ans, 12 ans et 30 ans.

8 Suivi d’une boucle while ★★★

Fais le suivi de x et n pour ce programme, puis donne l’affichage final et explique ce que représente n.

x = 100
n = 0
while x > 10:
    x = x / 2
    n = n + 1
print(x, n)

9 Moyenne d’une liste ★★★

Écris une fonction moyenne(L) qui renvoie la moyenne des éléments d’une liste de nombres. Teste-la sur les notes [12, 15, 9, 18] et vérifie à la main.

10 Indice du maximum ★★★

Écris une fonction indice_max(L) qui renvoie l’indice (et non la valeur) du plus grand élément d’une liste. Si le maximum apparaît plusieurs fois, elle renvoie le premier indice. Teste sur [4, 17, 9, 17, 2].

11 Compter les notes ★★★

Écris une fonction compte_reussites(notes) qui renvoie le nombre de notes supérieures ou égales à 10. Que renvoie-t-elle pour [8, 12, 10, 15, 6, 9, 11] ?

12 Une suite récurrente ★★★

On définit la suite (un) par u0 = 1 et un+1 = 2un + 3.

  1. Calcule à la main u1, u2, u3.
  2. Écris une fonction terme(n) qui renvoie un.
  3. On admet que un = 4×2n − 3. Vérifie cette formule pour n = 5.

13 Placement à 2 % ★★★

On place 2500 € à 2 % d’intérêts par an (le capital est multiplié par 1,02 chaque année). Écris un programme qui détermine au bout de combien d’années le capital dépasse 3000 €. Vérifie le résultat avec un calcul.

14 Un village qui se dépeuple ★★★

Un village compte 12000 habitants. Sa population baisse de 5 % chaque année. Écris un programme qui donne le nombre d’années au bout duquel il passe sous 8000 habitants, puis vérifie le résultat avec un calcul.

15 Fréquence du 6 ★★★

Écris une fonction frequence_six(N) qui simule N lancers d’un dé équilibré et renvoie la fréquence d’apparition du 6. Compare le résultat à la probabilité théorique.

16 Dichotomie à la main ★★★

Soit f(x) = x² − 5. On cherche une valeur approchée de √5.

  1. Vérifie que f(2) < 0 et f(3) > 0.
  2. Applique trois étapes de dichotomie à partir de [2 ; 3], en donnant à chaque fois le milieu, le signe de f(milieu) et le nouvel intervalle.
  3. Quelle est l’amplitude de l’intervalle obtenu ? Donne un encadrement de √5.

17 Compléter un programme ★★★

On veut résoudre x³ + x − 1 = 0 sur [0 ; 1] avec une précision de 0,001.

  1. Montre que h(x) = x³ + x − 1 change de signe sur [0 ; 1].
  2. Complète les pointillés pour que la fonction renvoie l’intervalle final et le nombre d’étapes :
def dichotomie(f, a, b, e):
    n = 0
    while ........ :
        m = (a + b) / 2
        if f(a) * f(m) <= 0:
            b = ........
        else:
            a = ........
        n = n + 1
    return a, b, n
  1. Exécute-la et interprète le résultat.

18 Combien d’étapes ? ★★★

On applique la dichotomie à une fonction sur un intervalle d’amplitude 1.

  1. Quelle est l’amplitude après n étapes ?
  2. Combien d’étapes faut-il pour obtenir une précision de 10−6 ?
  3. Et si l’intervalle de départ a une amplitude de 8 ?

19 Tri par sélection à la main ★★★

Applique le tri par sélection à la liste [7, 3, 9, 1, 5] : donne la liste obtenue après chaque tour de la boucle extérieure.

20 Coût du tri par sélection ★★★

Le programme ci-dessous compte les comparaisons faites par le tri par sélection.

def comparaisons_selection(L):
    L = L[:]
    n = len(L)
    compte = 0
    for i in range(n - 1):
        imin = i
        for j in range(i + 1, n):
            compte = compte + 1
            if L[j] < L[imin]:
                imin = j
        L[i], L[imin] = L[imin], L[i]
    return compte

print(comparaisons_selection([7, 3, 9, 1, 5]))
print(comparaisons_selection(list(range(10, 0, -1))))
print(comparaisons_selection(list(range(100))))
  1. Qu’affiche-t-il ?
  2. Montre que pour une liste de n éléments, le nombre de comparaisons vaut n(n − 1)/2, quel que soit l’ordre initial.

21 Suite de Syracuse ★★★

Partant d’un entier n > 0, on applique : si n est pair on le divise par 2, sinon on le remplace par 3n + 1. On répète jusqu’à obtenir 1 (on conjecture que cela arrive toujours). Le « temps de vol » est le nombre d’étapes.

  1. Écris la suite obtenue à partir de 7 et compte les étapes.
  2. Écris une fonction vol(n) qui renvoie le temps de vol et utilise-la pour trouver le plus long temps de vol pour n entre 1 et 30.

22 Estimer π par simulation ★★★

On choisit au hasard un point (x ; y) dans le carré [0 ; 1] × [0 ; 1]. La probabilité qu’il soit dans le quart de disque de rayon 1 (c’est-à-dire x² + y² ≤ 1) est égale à l’aire de ce quart de disque.

  1. Calcule cette aire en fonction de π.
  2. Écris une fonction estime_pi(N) qui simule N points et renvoie une estimation de π.
  3. Pourquoi le résultat n’est-il pas toujours le même ?

23 Deuxième plus grand ★★★

Sans trier la liste, écris une fonction deuxieme_max(L) qui renvoie le deuxième plus grand élément d’une liste d’au moins deux éléments (avec un seul parcours). Teste-la sur [4, 17, 9, 12, 2] et sur [17, 4, 9, 12, 2].

Voir le corrigé des exercices