Exercices corrigés — Algorithmique — Listes (1ère spé)

Cette page propose des exercices corrigés de mathématiques en 1ère Spécialité sur Algorithmique — Listes. Tu vas t’entraîner sur variables, conditions, boucles, raisonnement algorithmique avec des questions progressives et des corrections pour vérifier chaque étape.

✏️ Exercices — Algorithmique : Listes

Thèmes : listes Python • indices • génération en extension / par ajouts / en compréhension • parcours • itération • conditions • fonctions • programmation modulaire • suites • dérivation • simulation.
Objectif : écrire, lire, expliquer et justifier des algorithmes au niveau Première Spécialité Mathématiques.

Exercice 1 — Lire une liste et ses indices
1ère Spé

On considère la liste Python L = [12, 5, 8, 21, 7].

  1. (a) Donner le premier élément de L.
  2. (b) Donner l’élément d’indice 2.
  3. (c) Donner le dernier élément en utilisant un indice négatif.
  4. (d) Donner la taille de la liste et préciser les indices valides non négatifs.
Exercice 2 — Modifier, ajouter et supprimer
1ère Spé

On part de L = [4, 9, 3, 6, 9]. Les opérations des questions (a), (b) et (c) sont exécutées dans cet ordre sur la même liste.

  1. (a) Écrire l’instruction qui remplace 3 par 10.
  2. (b) Ajouter 15 à la fin de la liste.
  3. (c) Supprimer la première occurrence de 9.
  4. (d) Donner la liste finale après les trois opérations.
Exercice 3 — Trois façons de générer une liste
1ère Spé

On veut construire la liste des carrés des entiers de 1 à 5.

  1. (a) Donner cette liste en extension.
  2. (b) Écrire un programme qui la construit par ajouts successifs avec append.
  3. (c) Écrire la même liste en compréhension.
  4. (d) Expliquer pourquoi les trois écritures produisent la même liste.
Exercice 4 — Parcours direct, test et accumulateur
1ère Spé

On considère L = [-2, 5, 0, 7, -1].

  1. (a) Dans la boucle for x in L:, quelles valeurs prend successivement x ?
  2. (b) Combien d’éléments de L sont strictement positifs ?
  3. (c) Calculer la somme des éléments strictement positifs.
  4. (d) Écrire un programme qui calcule cette somme sans utiliser sum.
Exercice 5 — Parcours par indices et modification
1ère Spé

On considère L = [3, 7, 2, 9, 4].

  1. (a) Donner les indices parcourus par range(len(L)).
  2. (b) Donner la valeur de L[3].
  3. (c) Écrire un programme qui double uniquement les éléments situés à un indice pair.
  4. (d) Donner la liste obtenue après exécution du programme.
Exercice 6 — Somme, moyenne et programmation modulaire
1ère Spé

On considère L = [7, 11, 9, 13, 10].

  1. (a) Calculer la somme des éléments.
  2. (b) En déduire la moyenne.
  3. (c) Écrire une fonction somme(L) qui renvoie la somme sans utiliser sum.
  4. (d) Écrire une fonction moyenne(L) qui réutilise la fonction somme.
Exercice 7 — Produit d’une liste et factorielle
1ère Spé

On considère L = [1, 2, 3, 4, 5, 6].

  1. (a) Calculer le produit de tous les éléments de L.
  2. (b) Pourquoi un accumulateur de produit doit-il être initialisé à 1 et non à 0 ?
  3. (c) Écrire une fonction produit(L) sans utiliser de fonction prédéfinie de produit.
  4. (d) Relier le résultat à \(6!\) et donner une compréhension qui génère la liste [1,2,3,4,5,6].
Exercice 8 — Minimum, maximum et invariant de parcours
1ère Spé

On considère la liste non vide L = [-5, 12, 3, 12, -9, 7].

  1. (a) Donner le minimum et le maximum de L.
  2. (b) Calculer l’amplitude maximum - minimum.
  3. (c) Écrire une fonction extremes(L) qui renvoie la liste [minimum, maximum] sans utiliser min ni max.
  4. (d) Justifier la correction de l’algorithme en formulant ce que représentent mini et maxi après chaque itération.
Exercice 9 — Recherche de la première occurrence
1ère Spé

On considère L = [4, 7, 2, 7, 9].

  1. (a) La valeur 7 est-elle présente ?
  2. (b) Quel est l’indice de sa première occurrence ?
  3. (c) Écrire une fonction premier_indice(L, a) qui renvoie le premier indice où a apparaît, et -1 si a est absent.
  4. (d) Donner premier_indice(L, 6) et expliquer le rôle du return placé dans la boucle.
Exercice 10 — Compter et sommer au-dessus d’un seuil
1ère Spé

On considère L = [5, 12, 17, 9, 21, 6, 14] et le seuil 10.

  1. (a) Lister les valeurs strictement supérieures à 10.
  2. (b) Combien y en a-t-il ?
  3. (c) Calculer leur somme.
  4. (d) Écrire une fonction bilan_seuil(L, s) qui renvoie [nombre, somme] des valeurs strictement supérieures à s.
Exercice 11 — Filtrer avec une condition logique
1ère Spé

On considère L = [-4, -1, 0, 2, 5, 7, 10]. On veut conserver les valeurs \(x\) telles que \(0\le x<7\).

  1. (a) Donner la liste des valeurs conservées.
  2. (b) Pourquoi 0 est-il conservé alors que 7 ne l’est pas ?
  3. (c) Construire la liste R par ajouts successifs.
  4. (d) Écrire la même construction en compréhension.
Exercice 12 — Liste en compréhension et inéquation
1ère Spé

On exécute L = [n for n in range(-5, 6) if n*n - 4 <= 0].

  1. (a) Résoudre dans \(\mathbb{R}\) l’inéquation \(n^2-4\le0\).
  2. (b) En déduire la liste L.
  3. (c) Expliquer pourquoi -2 et 2 appartiennent à la liste.
  4. (d) On définit R = [2*n + 1 for n in L]. Donner R.
Exercice 13 — Fonction de filtrage réutilisable
1ère Spé

On considère L = [-2, 1, 4, 7, 10, 13].

  1. (a) Écrire une fonction dans_intervalle(L, a, b) qui renvoie les éléments de L appartenant à l’intervalle fermé \([a;b]\).
  2. (b) Donner dans_intervalle(L, 3, 10).
  3. (c) Réécrire le cœur du traitement avec une liste en compréhension.
  4. (d) Donner dans_intervalle(L, 0, 5) et expliquer en quoi cette fonction illustre la programmation modulaire.
Exercice 14 — Suite explicite, liste de valeurs et zéros
1ère Spé

On définit \(u_n=n^2-3n+2\) pour \(n\in\mathbb{N}\). On construit les valeurs pour \(n=0,1,\ldots,6\).

  1. (a) Donner la liste L = [u_n for n in range(7)].
  2. (b) Construire la liste R des indices i tels que L[i] == 0.
  3. (c) Factoriser \(u_n\) et expliquer le lien avec les indices contenus dans R.
  4. (d) Écrire en Python la compréhension qui construit directement R à partir de L.
Exercice 15 — Suite récurrente et recherche d’un seuil
1ère Spé

On définit \(u_0=150\) et, pour tout entier \(n\ge0\), \(u_{n+1}=0{,}8u_n+45\).

  1. (a) Calculer \(u_1\), \(u_2\) et \(u_3\).
  2. (b) Donner la liste des cinq premiers termes \([u_0,u_1,u_2,u_3,u_4]\).
  3. (c) Écrire une boucle while qui détermine le plus petit rang n tel que \(u_n\ge220\).
  4. (d) Donner ce rang et vérifier le caractère minimal du résultat avec \(u_{n-1}\) et \(u_n\).
Exercice 16 — Fibonacci : variables, boucle et liste
1ère Spé

On veut produire les premiers termes de la suite de Fibonacci avec le programme incomplet suivant :

a = 0
b = 1
L = [a, b]
for k in range(6):
    c = ...
    a = ...
    b = ...
    L.append(b)
  1. (a) Compléter les trois affectations manquantes.
  2. (b) Donner la liste finale L.
  3. (c) Quelle est la longueur de L et pourquoi ?
  4. (d) Vérifier sur la liste obtenue que chaque terme à partir du troisième est la somme des deux précédents.
Exercice 17 — Liste de taux de variation et dérivée
1ère Spé

On considère \(f(x)=x^2\), le point d’abscisse \(a=1\) et la liste H = [1, 0.5, 0.1, 0.01]. Pour \(h\ne0\), on définit \(m(h)=\dfrac{f(1+h)-f(1)}{h}\).

  1. (a) Simplifier exactement \(m(h)\).
  2. (b) Construire la liste M des valeurs de \(m(h)\) pour les valeurs de H.
  3. (c) Écrire une compréhension Python qui construit M directement à partir de H.
  4. (d) À quelle valeur les éléments de M semblent-ils se rapprocher lorsque \(h\) se rapproche de 0 ? Interpréter cette valeur.
Exercice 18 — Échantillon simulé : moyenne et fréquence
1ère Spé

Une simulation fournit l’échantillon L = [0, 1, 2, 1, 3, 2, 1, 2].

  1. (a) Donner la taille de l’échantillon et la somme des valeurs.
  2. (b) Calculer la moyenne de l’échantillon, sous forme exacte puis décimale.
  3. (c) Calculer la fréquence d’apparition de la valeur 2, sous forme exacte puis décimale.
  4. (d) Écrire une fonction moyenne_echantillon(L) qui renvoie la moyenne sans utiliser sum.
Exercice 19 — Simulation de Monte-Carlo avec deux listes
1ère Spé

On simule cinq points dans le carré \([-1;1]\times[-1;1]\) à l’aide de deux listes parallèles : X = [0.2, -0.6, 0.8, 0.1, -0.9] et Y = [0.3, 0.4, 0.7, -0.8, 0.3]. Un point est dans le disque unité si \(x^2+y^2\le1\).

  1. (a) Écrire le test Python qui décide si le point d’indice i est dans le disque unité.
  2. (b) Combien des cinq points sont dans le disque ?
  3. (c) L’estimation de \(\pi\) est donnée par \(p=4\dfrac{c}{5}\), où c est le nombre de points dans le disque. Calculer p.
  4. (d) Expliquer pourquoi on augmente en pratique le nombre de points simulés lorsqu’on cherche une meilleure estimation.
Exercice 20 — Synthèse : liste, filtre, moyenne et raisonnement
1ère Spé

On construit L = [k*k - 6*k + 10 for k in range(7)] puis R = [x for x in L if x > 0 and x % 2 == 0].

  1. (a) Calculer la liste L.
  2. (b) Calculer la liste R et expliquer le rôle des deux conditions reliées par and.
  3. (c) Calculer la moyenne des éléments de R.
  4. (d) Déterminer le minimum de L, préciser à quel indice il est atteint, puis justifier ce résultat en écrivant \(k^2-6k+10\) sous forme canonique.
Exercice 21 — Deux modèles de croissance : premier dépassement
1ère Spé

Deux quantités évoluent selon \(A_n=5000+120n\) et \(B_n=4200\times1{,}04^n\), pour \(n\in\mathbb{N}\).

  1. (a) Calculer \(A_9\), \(A_{10}\), \(B_9\) et \(B_{10}\).
  2. (b) Écrire un programme Python utilisant une boucle while pour déterminer le premier rang où \(B_n>A_n\).
  3. (c) Modifier le programme pour mémoriser, dans deux listes LA et LB, toutes les valeurs calculées jusqu’au dépassement.
  4. (d) Donner le premier rang de dépassement et justifier qu’il est minimal.
Exercice 22 — Suite arithmético-géométrique : seuil de proximité
1ère Spé

On définit \(u_0=0\) et \(u_{n+1}=0{,}6u_n+8\).

  1. (a) Calculer \(u_1\), \(u_2\) et \(u_3\).
  2. (b) En posant \(v_n=u_n-20\), montrer que \((v_n)\) est géométrique puis établir \(u_n=20-20\times0{,}6^n\).
  3. (c) Écrire une boucle qui construit la liste des termes jusqu’au premier rang vérifiant \(|u_n-20|<0{,}05\).
  4. (d) Déterminer ce rang et vérifier le caractère minimal avec les deux termes consécutifs concernés.
Exercice 23 — Détecter et corriger une donnée incohérente
1ère Spé

Une suite de valeurs issue d’un modèle quadratique devrait avoir des secondes différences constantes égales à 4. On reçoit pourtant L = [5, 10, 19, 33, 49, 70].

  1. (a) Construire la liste D des premières différences L[i+1]-L[i].
  2. (b) Construire la liste E des secondes différences et expliquer pourquoi les données sont incohérentes.
  3. (c) On sait qu’une seule donnée est fausse et qu’il s’agit de L[3]. Déterminer sa valeur correcte.
  4. (d) Après correction, déterminer l’expression \(u_n=an^2+bn+c\) qui génère la liste.
Exercice 24 — Moyennes glissantes sur une série de mesures
1ère Spé

On dispose de la série L = [18, 20, 19, 25, 26, 27, 21, 20]. Pour chaque indice possible i, on définit la moyenne glissante d’ordre 3 par \(m_i=\dfrac{L[i]+L[i+1]+L[i+2]}{3}\).

  1. (a) Combien de moyennes glissantes peut-on calculer ?
  2. (b) Construire la liste M de ces moyennes, sous forme exacte puis décimale au centième.
  3. (c) Déterminer la plus grande moyenne glissante et les trois mesures qui lui correspondent.
  4. (d) Écrire une fonction moyennes_glissantes(L) qui renvoie la liste M.
Exercice 25 — Produit scalaire : filtrer des points
1ère Spé

Dans un repère orthonormé, on donne \(A(1;2)\), \(B(5;-1)\) et la liste de points C = [[4,6], [-2,-2], [7,7], [10,14]].

  1. (a) Calculer les coordonnées du vecteur \(\overrightarrow{AB}\).
  2. (b) Construire la liste des produits scalaires \(\overrightarrow{AB}\cdot\overrightarrow{AC_i}\) pour les quatre points.
  3. (c) En déduire les points \(C_i\) pour lesquels le triangle \(ABC_i\) est rectangle en \(A\).
  4. (d) Déterminer une équation cartésienne de la droite contenant tous ces points et passant par \(A\).
Exercice 26 — Probabilité exacte par énumération des issues
1ère Spé

On lance deux dés équilibrés à six faces. On représente une issue par une liste [a,b], où a et b sont les résultats des deux dés.

  1. (a) Que contient issues = [[a,b] for a in range(1,7) for b in range(1,7)] et quelle est sa longueur ?
  2. (b) Construire la liste fav des issues pour lesquelles la somme des deux dés est supérieure ou égale à 10, puis donner sa longueur.
  3. (c) En déduire la probabilité de l’événement \(S\) : « la somme est au moins 10 ».
  4. (d) Sachant que \(S\) est réalisé, calculer la probabilité d’obtenir un double.
Exercice 27 — Optimisation discrète et dérivée
1ère Spé

Pour un entier \(x\) compris entre 0 et 60, un bénéfice est modélisé par \(B(x)=-2x^2+120x-1000\).

  1. (a) Écrire une compréhension Python qui construit la liste P des bénéfices pour x allant de 0 à 60.
  2. (b) Écrire un algorithme, sans utiliser max ni index, qui renvoie le bénéfice maximal et la valeur de x correspondante.
  3. (c) Donner le résultat de l’algorithme et vérifier les valeurs pour \(x=29,30,31\).
  4. (d) Retrouver et justifier ce maximum par l’étude de la dérivée de \(B\) sur \([0;60]\).
Exercice 28 — Probabilité conditionnelle à partir de deux listes
1ère Spé

Sur 20 individus, on code par 1 la réalisation d’un événement et par 0 son absence. La liste M = [1,0,1,0,1,0,0,1,0,1,0,0,1,0,0,1,0,0,1,0] code l’événement « malade » et T = [1,0,1,1,1,0,0,1,0,1,1,0,1,0,0,0,1,0,1,0] code l’événement « test positif ».

  1. (a) Déterminer les effectifs de \(M\), de \(T\) et de \(M\cap T\).
  2. (b) En déduire \(P(M)\) et \(P(T)\) dans cet échantillon.
  3. (c) Calculer \(P_T(M)\) et \(P_M(T)\).
  4. (d) Écrire une fonction proba_conditionnelle(A, B) qui renvoie la fréquence de A==1 parmi les positions où B==1.
Exercice 29 — Intersection droite-cercle par compréhension
1ère Spé

On cherche les points à coordonnées entières qui appartiennent simultanément à la droite \(y=x+1\) et au cercle \(x^2+y^2=25\).

  1. (a) En remplaçant \(y\) par \(x+1\), résoudre l’équation obtenue.
  2. (b) Donner les deux points d’intersection.
  3. (c) Écrire une compréhension Python qui construit directement la liste de ces points pour x entier de -5 à 5.
  4. (d) Vérifier par le calcul que les deux points obtenus satisfont bien les deux équations.
Exercice 30 — Synthèse : capital soumis à des taux variables
1ère Spé

Un capital initial de 10 000 € subit successivement les taux annuels taux = [3, -2, 5, 4, -1, 6], exprimés en pourcentage. Après un taux \(t\), le capital est multiplié par \(1+\dfrac{t}{100}\).

  1. (a) Écrire une fonction capitaux(C0, taux) qui renvoie la liste contenant le capital initial puis le capital après chacune des six années.
  2. (b) Calculer les sept capitaux, arrondis au centime pour la présentation.
  3. (c) Construire la liste des gains algébriques annuels et déterminer l’année du gain le plus élevé.
  4. (d) Calculer le taux d’évolution global sur les six années et expliquer pourquoi il n’est pas égal à la somme des six taux annuels.
Suivez votre progression
Connectez-vous pour enregistrer votre progression et vos tentatives de quiz.