Devoirs Première

Liste des fichiers Notebook

Contrôle - Première NSI - Correction

Consignes :

Question 1

Écrire une fonction trouver_maximum qui retourne le maximum d'une liste donnée.

Exemple d'entrée :

trouver_maximum([3, 7, 2, 9, 4]) # retourne 9

À compléter ci-dessous :


def trouver_maximum(liste):
    max_val = liste[0]
    for val in liste:
        if val > max_val:
            max_val = val
    return max_val

# Test
trouver_maximum([3, 7, 2, 9, 4])  # retourne 9

Question 2

Utiliser la fonction trouver_maximum pour implémenter une fonction tri_inverse qui trie une liste par ordre décroissant.

Exemple d'entrée :

tri_inverse([3, 7, 2, 9, 4]) # retourne [9, 7, 4, 3, 2]

À compléter ci-dessous :


def tri_inverse(liste):
    resultat = []
    while liste:
        max_val = trouver_maximum(liste)
        resultat.append(max_val)
        liste.remove(max_val)
    return resultat

# Test
tri_inverse([3, 7, 2, 9, 4])  # retourne [9, 7, 4, 3, 2]

Question 3

Écrire une fonction tri_insertion_inverse qui trie une liste par ordre décroissant en utilisant la méthode du tri par insertion.

Exemple d'entrée :

tri_insertion_inverse([3, 7, 2, 9, 4]) # retourne [9, 7, 4, 3, 2]

À compléter ci-dessous :


def tri_insertion_inverse(liste):
    for i in range(1, len(liste)):
        cle = liste[i]
        j = i - 1
        while j >= 0 and cle > liste[j]:  # Note: condition inversée pour ordre décroissant
            liste[j + 1] = liste[j]
            j -= 1
        liste[j + 1] = cle
    return liste

# Test
tri_insertion_inverse([3, 7, 2, 9, 4])  # retourne [9, 7, 4, 3, 2]

Question 4

À partir du dictionnaire suivant :

donnees = [
    {"produit": "Pomme", "prix": 1.2},
    {"produit": "Banane", "prix": 0.8},
    {"produit": "Orange", "prix": 1.5},
    {"produit": "Mangue", "prix": 2.0}
]

Créer une fonction tri_par_prix qui trie la liste donnees par prix croissant.

Exemple d'entrée :

tri_par_prix(donnees) # trie par prix croissant

À compléter ci-dessous :


def tri_par_prix(liste):
    for i in range(len(liste)):
        min_index = i
        for j in range(i + 1, len(liste)):
            if liste[j]['prix'] < liste[min_index]['prix']:
                min_index = j
        liste[i], liste[min_index] = liste[min_index], liste[i]
    return liste

# Test
donnees = [
    {"produit": "Pomme", "prix": 1.2},
    {"produit": "Banane", "prix": 0.8},
    {"produit": "Orange", "prix": 1.5},
    {"produit": "Mangue", "prix": 2.0}
]

tri_par_prix(donnees)

Question 5

À partir du nouveau dictionnaire suivant :

codes_barres = [  {"produit": "Pomme", "code_barre": "1234567890123"},
                  {"produit": "Banane", "code_barre": "9876543210987"},
                  {"produit": "Orange", "code_barre": "2345678901234"},
                  {"produit": "Mangue", "code_barre": "5678901234567"} ]

Créer une fonction def fusionner_listes qui réalise une jointure entre la liste donnees de la question 4 et la liste codes_barres , en utilisant la clé commune "produit" pour fusionner les informations des deux listes dans une nouvelle liste ?

def fusionner_listes(liste1, liste2):
    liste = []
    for item1 in liste1:
        for item2 in liste2:
            if item1["produit"] == item2["produit"]:
                fusion = {}
                # Copier les clés et valeurs de item1
                for key, value in item1.items():
                    fusion[key] = value
                # Copier les clés et valeurs de item2 (les valeurs de item2 écrasent celles de item1 en cas de conflit)
                for key, value in item2.items():
                    fusion[key] = value
                liste.append(fusion)
    return liste

# Test
codes_barres = [  {"produit": "Pomme", "code_barre": "1234567890123"},
                  {"produit": "Banane", "code_barre": "9876543210987"},
                  {"produit": "Orange", "code_barre": "2345678901234"},
                  {"produit": "Mangue", "code_barre": "5678901234567"} ]

fusionner_listes(donnees, codes_barres)