Devoir Surveillé 2 : Listes et Dictionnaires en Python
Exercice 1 : Relevés de températures (6 points)
Moyenne des températures
def moyenne(temperatures: list) -> float:
if len(temperatures) == 0:
return 0
total = 0
for temp in temperatures:
total += temp
return total / len(temperatures)
Maximum et jour
def max_temperature(temperatures: list) -> tuple:
temp_max = temperatures[0]
jour = 1
for i in range(len(temperatures)):
if temperatures[i] > temp_max:
temp_max = temperatures[i]
jour = i + 1
return (temp_max, jour+1)
Jours au-dessus du seuil
def jours_au_dessus_de(temperatures: list, seuil: float) -> list:
jours = []
for i in range(len(temperatures)):
if temperatures[i] > seuil:
jours.append(i + 1)
return jours
Liste sans valeur
def liste_sans_valeur(temperatures: list, valeur: float) -> list:
nouvelle_liste = []
for t in temperatures:
if t != valeur:
nouvelle_liste.append(t)
return nouvelle_liste
Recherche de voiture
def recherche_voiture(concessionnaire: list, modele: str) -> list:
voitures_trouvees = []
for voiture in concessionnaire:
if voiture["modele"] == modele:
voitures_trouvees.append(voiture)
return voitures_trouvees
Soldes par énergie
def soldes_prix_energie(concessionnaire: list, energie: str) -> None:
for voiture in concessionnaire:
if voiture["energie"] == energie:
voiture["prix"] -= 2500
Prix moyen
def prix_moyen(concessionnaire: list, energie: str) -> float:
total = 0
count = 0
for voiture in concessionnaire:
if voiture["energie"] == energie:
total += voiture["prix"]
count += 1
if count == 0:
return 0
return total / count
Modèle le plus cher
def modele_le_plus_cher(concessionnaire: list) -> str:
plus_cher = concessionnaire[0]
for voiture in concessionnaire:
if voiture["prix"] > plus_cher["prix"]:
plus_cher = voiture
return plus_cher["modele"]
Exercice 3 : Gestion d'un Refuge de Renards (6 points)
Ajouter un renard
def ajouter_renard_listes(renards: list, nouveau_renard: list) -> None:
renards.append(nouveau_renard)
Modifier un renard
def modifier_renard_listes(renards: list, id: int, nom: str, race: str) -> None:
for renard in renards:
if renard[0] == id:
renard[1] = nom
renard[3] = race
Afficher les renards rouges
def afficher_renards_rouges(renards: list) -> None:
for renard in renards:
if renard[3] == "Rouge":
print(renard)
Explication liste vs dictionnaire
Dans une liste de listes, il faut connaître l'indice exact de chaque information (nom à l'indice 1, race à l'indice 3, etc.).
Cela rend le code moins lisible et plus sujet aux erreurs. De plus, si on veut ajouter une nouvelle information,
il faut modifier tous les endroits où on manipule ces listes.
Avec un dictionnaire, on accède aux informations par leur nom ("nom", "race", etc.), ce qui rend le code plus
lisible et plus facile à maintenir. On peut aussi facilement ajouter de nouvelles informations sans impacter
le code existant.
Conversion en dictionnaires
def listes_listes_vers_listes_dict(renards: list) -> list:
cles = ['id', 'nom', 'espece', 'race', 'sexe']
resultat = []
for renard in renards:
nouveau_dict = {}
for i in range(len(cles)):
nouveau_dict[cles[i]] = renard[i]
resultat.append(nouveau_dict)
return resultat
Modification version dictionnaire
def modifier_renard_dict(renards_dict: list, id: int, nom: str, race: str) -> None:
for renard in renards_dict:
if renard['id'] == id:
renard['nom'] = nom
renard['race'] = race