Devoirs Première

Liste des fichiers Notebook

Devoir maison — Parcours séquentiel

Corrigé — Première NSI

Consignes

Exercice 1 — Comprendre un parcours

On considère le programme suivant :


valeurs = [6, 2, 9, 2, 5]

total = 0

for i in range(len(valeurs)):

    if valeurs[i] >= 5:

        total = total + valeurs[i]

1. Suivre l'exécution

Sans exécuter le programme, complétez le tableau ci-dessous. La dernière colonne donne la valeur de total à la fin de chaque tour de boucle.

| Indice i | Élément valeurs[i] | total à la fin du tour |

| --- | --- | --- |

| 0 | 6 | 6 |

| 1 | 2 | 6 |

| 2 | 9 | 15 |

| 3 | 2 | 15 |

| 4 | 5 | 20 |

Le programme additionne les valeurs supérieures ou égales à 5. À la fin, total vaut 20.

2. Changer la façon de parcourir le tableau

Réécrivez ce programme en parcourant directement les éléments avec for valeur in valeurs. Le résultat doit être identique.

valeurs = [6, 2, 9, 2, 5]

total = 0

for valeur in valeurs:

    if valeur >= 5:

        total = total + valeur

Test

assert total == 20

Exercice 2 — Rechercher et compter une valeur

Les fonctions de cet exercice doivent fonctionner avec des tableaux de nombres ou de chaînes de caractères. Le tableau peut être vide.

1. Première occurrence

Écrivez la fonction rechercher(tableau, valeur) qui renvoie l'indice de la première occurrence de valeur dans tableau.

Si la valeur est absente, la fonction renvoie -1.

Par exemple, rechercher([6, 2, 9, 2, 5], 2) doit renvoyer 1.

def rechercher(tableau, valeur):

    for i in range(len(tableau)):

        if tableau[i] == valeur:

            return i

    return -1

La fonction s'arrête dès la première égalité. Le return -1 est placé après la boucle : il est atteint lorsque tout le tableau a été parcouru sans trouver la valeur.

Tests

assert rechercher([6, 2, 9, 2, 5], 2) == 1

assert rechercher([6, 2, 9, 2, 5], 6) == 0

assert rechercher([6, 2, 9, 2, 5], 5) == 4

assert rechercher([6, 2, 9, 2, 5], 8) == -1

assert rechercher(["Lina", "Noé", "Lina"], "Lina") == 0

assert rechercher(["Lina", "Noé", "Lina"], "Adam") == -1

assert rechercher([], 2) == -1

assert rechercher([4], 4) == 0

2. Nombre d'occurrences

Écrivez la fonction compter_occurrences(tableau, valeur) qui renvoie le nombre de fois où valeur apparaît dans tableau.

Par exemple, compter_occurrences([6, 2, 9, 2, 5], 2) doit renvoyer 2.

def compter_occurrences(tableau, valeur):

    nombre = 0

    for element in tableau:

        if element == valeur:

            nombre = nombre + 1

    return nombre

Le compteur commence à 0. On ajoute 1 à chaque égalité et on renvoie le compteur après le parcours complet.

Tests

assert compter_occurrences([6, 2, 9, 2, 5], 2) == 2

assert compter_occurrences([6, 2, 9, 2, 5], 8) == 0

assert compter_occurrences([4, 4, 4], 4) == 3

assert compter_occurrences(["Lina", "Noé", "Lina"], "Lina") == 2

assert compter_occurrences([], 2) == 0

assert compter_occurrences([4], 4) == 1

Exercice 3 — Rechercher des extrema

Dans cet exercice, les tableaux contiennent des nombres et sont non vides.

1. Minimum et maximum

Écrivez la fonction extrema(tableau) qui renvoie le couple (minimum, maximum).

Les deux valeurs doivent être recherchées pendant un seul parcours du tableau.

Par exemple, extrema([6, 2, 9, 2, 5]) doit renvoyer (2, 9).

def extrema(tableau):

    minimum = tableau[0]

    maximum = tableau[0]

    for valeur in tableau:

        if valeur < minimum:

            minimum = valeur

        if valeur > maximum:

            maximum = valeur

    return minimum, maximum

Le minimum et le maximum sont initialisés avec le premier élément du tableau. Cette initialisation permet aussi de traiter les tableaux dont toutes les valeurs sont négatives.

Tests

assert extrema([6, 2, 9, 2, 5]) == (2, 9)

assert extrema([-9, -2, -7]) == (-9, -2)

assert extrema([5]) == (5, 5)

assert extrema([4, 4, 4]) == (4, 4)

assert extrema([3.5, -1.5, 2.5]) == (-1.5, 3.5)

2. Indice du premier maximum

Écrivez la fonction indice_maximum(tableau) qui renvoie l'indice du plus grand élément.

Si le maximum apparaît plusieurs fois, la fonction doit renvoyer l'indice de sa première occurrence.

Par exemple, indice_maximum([4, 9, 2, 9]) doit renvoyer 1.

def indice_maximum(tableau):

    maximum = tableau[0]

    indice = 0

    for i in range(1, len(tableau)):

        if tableau[i] > maximum:

            maximum = tableau[i]

            indice = i

    return indice

On mémorise à la fois le maximum et son indice. La comparaison stricte > permet de conserver le premier indice lorsque le maximum apparaît plusieurs fois.

Tests

assert indice_maximum([4, 9, 2, 9]) == 1

assert indice_maximum([7, 4, 7]) == 0

assert indice_maximum([-9, -2, -2, -7]) == 1

assert indice_maximum([5]) == 0

assert indice_maximum([2, 9, 4]) == 1

assert indice_maximum([4, 4, 4]) == 0

Exercice 4 — Une semaine de températures

On a relevé les températures suivantes, en degrés Celsius, pendant sept jours :

temperatures = [12, 14, 10, 16, 13, 11, 15]

1. Calculer une moyenne

Écrivez la fonction moyenne(tableau) qui renvoie la moyenne des nombres du tableau.

Le tableau est non vide. La fonction doit fonctionner pour n'importe quel nombre d'éléments.

def moyenne(tableau):

    somme = 0

    for valeur in tableau:

        somme = somme + valeur

    return somme / len(tableau)

Tests

assert moyenne(temperatures) == 13.0

assert moyenne([2, 4, 6]) == 4.0

assert moyenne([7]) == 7.0

assert moyenne([-6, -3, -9]) == -6.0

assert moyenne([1, 2]) == 1.5

2. Compter les valeurs au-dessus de la moyenne

Écrivez la fonction nombre_au_dessus_moyenne(tableau) qui renvoie le nombre d'éléments strictement supérieurs à la moyenne du tableau.

Le tableau est non vide.

Appelez la fonction moyenne une seule fois, avant la boucle de comptage, et conservez son résultat dans une variable.

Pour la semaine donnée, la fonction doit renvoyer 3.

def nombre_au_dessus_moyenne(tableau):

    seuil = moyenne(tableau)

    nombre = 0

    for valeur in tableau:

        if valeur > seuil:

            nombre = nombre + 1

    return nombre

La moyenne de la semaine est 13 °C. Les trois températures strictement supérieures à cette moyenne sont 14 °C, 16 °C et 15 °C.

Tests

assert nombre_au_dessus_moyenne(temperatures) == 3

assert nombre_au_dessus_moyenne([5, 5, 5]) == 0

assert nombre_au_dessus_moyenne([7]) == 0

assert nombre_au_dessus_moyenne([-6, -3, -9]) == 1

assert nombre_au_dessus_moyenne([1, 3]) == 1

3. Construire un tableau en compréhension

Calculez la moyenne de temperatures et stockez-la dans moyenne_semaine.

Construisez ensuite par compréhension le tableau ecarts. Chaque élément doit être la température du jour moins la moyenne de la semaine, dans le même ordre que les températures.

Un écart négatif correspond à une température inférieure à la moyenne.

moyenne_semaine = moyenne(temperatures)

ecarts = [temperature - moyenne_semaine for temperature in temperatures]

Tests

assert moyenne_semaine == 13.0

assert ecarts == [-1, 1, -3, 3, 0, -2, 2]

assert len(ecarts) == len(temperatures)

assert temperatures == [12, 14, 10, 16, 13, 11, 15]