Fonctions avec valeur de retour#
Qu'est-ce qu'une valeur de retour ?#
Jusqu'à présent, le code d'une fonction était totalement indépendant du reste du programme. De ce fait, une valeur calculée dans une fonction ne pouvait pas être réutilisée dans une autre partie du programme. Par exemple, avec la fonction suivante, il n'est pas possible de trouver l'aire de deux triangles combinés.
def aire_triangle(base, hauteur):
aire = base * hauteur
print(aire)
#Impossible d'additionner ces deux résultats
aire_triangle(5, 10)
aire_triangle(10, 13)
Avec une valeur de retour et le mot-clef return, il sera maintenant possibler de retourner une valeur calculée dans une fonction vers le programme principal. Celle-ci pourra ensuite être récupérée par exemple dans une variable comme ci-dessous.
def aire_triangle(base, hauteur):
aire = base * hauteur
return aire
#Les valeurs de retour sont récupérées dans des variables
aire1 = aire_triangle(5, 10)
aire2 = aire_triangle(10, 13)
#On peut utiliser ces variables pour obtenir l'aire total
aire_totale = aire1 + aire2
print("Aire totale :", aire_totale)
Exercices#
Exercice 15#
Chacun des programmes suivant comporte au moins une erreur. Parfois, cette erreur fait directement buguer le programme avec un message d'erreur rouge. D'autres fois, le programme s'exécute correctement, mais son résultat n'est pas logique.
Corrigez chacun de ces codes de manière à ce qu'ils s'exécutent correctement et affichent un résultat logique.
1def périmètre_carré(côté): 2 périmètre = côté * 4 3 print(périmètre) 4 5p1 = périmètre_carré(5) 6p2 = périmètre_carré(7) 7total = p1 + p2 8print(total)
1def maximum(liste): 2 maximum = -99999 3 for n in liste: 4 if n > maximum: 5 maximum = n 6 return maximum 7 8#Doit afficher le maximum de la liste ci-dessous 9ma_liste = [4, 6, 2, 8, -4, 3, 10, 9, 4, 7, -3] 10maximum(ma_liste)
def applique_réduction(prix, code): if code == "STX": return prix * 0.8 elif code == "JANM": return prix * 0.65 elif code == "FRI": return prix * 0.9 else: return prix prix_de_base_1 = 67 prix_de_base_2 = 45 applique_réduction(prix_de_base_1, "JANM") applique_réduction(prix_de_base_2, "STX") prix_réduit_total = prix_de_base_1 + prix_de_base_2 print(prix_réduit_total)
def ajoute_s(mot, nombre): if nombre > 1: mot + "s" else: mot n_chat = int(input("Combien de chats as-tu ?")) n_chien = int(input("Combien de chiens as-tu ?")) txt_chat = ajoute_s("chat", n_chat) txt_chien = ajoute_s("chien", n_chien) print("Tu as", n_chat, txt_chat, "et", n_chien, txt_chien )
Solution
1def périmètre_carré(côté): 2 périmètre = côté * 4 3 return périmètre 4 5p1 = périmètre_carré(5) 6p2 = périmètre_carré(7) 7total = p1 + p2 8print(total)
1def maximum(liste): 2 maximum = -99999 3 for n in liste: 4 if n > maximum: 5 maximum = n 6 return maximum 7 8#Doit afficher le maximum de la liste ci-dessous 9ma_liste = [4, 6, 2, 8, -4, 3, 10, 9, 4, 7, -3] 10m = maximum(ma_liste) 11print(m)
1def applique_réduction(prix, code): 2 if code == "STX": 3 return prix * 0.8 4 elif code == "JANM": 5 return prix * 0.65 6 elif code == "FRI": 7 return prix * 0.9 8 else: 9 return prix 10 11prix_de_base_1 = 67 12prix_de_base_2 = 45 13réduit_1 = applique_réduction(prix_de_base_1, "JANM") 14réduit_2 = applique_réduction(prix_de_base_2, "STX") 15prix_réduit_total = réduit_1 + réduit_2 16print(prix_réduit_total)
1def ajoute_s(mot, nombre): 2 if nombre > 1: 3 return mot + "s" 4 else: 5 return mot 6 7n_chat = int(input("Combien de chats as-tu ?")) 8n_chiens = int(input("Combien de chiens as-tu ?")) 9txt_chat = ajoute_s("chat", n_chat) 10txt_chien = ajoute_s("chien", n_chien) 11print("Tu as", n_chat, txt_chat, "et", n_chien, txt_chien )
Exercice 16#
La fonction ci-dessous permet de calculer et de retourner le périmètre d'un cercle. Appelez cette fonction 2x en récupérant la valeur de retour pour déterminer le périmètre total d'un cercle de rayon 3 et de rayon 5
def périmètre_cercle(rayon):
périmètre = 2 * 3.14159 * rayon
return périmètre
#Complétez le code ici
Exercice 17#
Le code ci-dessous fait appel à une fonction calculant et retournant un prix réduit de 20%. Définissez cette fonction et écrivez son corps.
prix = 56
prix_réduit = réduction_20(prix)
print("Prix réduit :", prix_réduit, "CHF")
Exercice 18#
Définissez une fonction nommée sanctions_STX permettant de déterminer les sanctions à STX en fonction du nombre de retard et du nombre d'absences injustifiées. Pour rappel les sanctions sont les suivantes :
Au moins 3 retards ou 2 absences injustifiées :
retenueAu moins 6 retards ou 4 absences injustifiées :
retenue samedi matinAu moins 9 retards ou 6 absences injustifiées :
avertissement écritAu moins 12 retards ou 8 absences injustifiées :
menace d'exclusionAu moins 15 retards ou 10 absences injustifiées :
exclusionEn dessous de tout cela :
rien
Utilisez ensuite la fonction pour déterminer les sanctions de 2 élèves : un ayant 4 retards et 0 absences injustifiées et l'autre avec 2 retards et 2 absences injustifiées.
Si les deux sanctions sont pareilles, votre programme affichera en plus : Deux mêmes sanctions...
def sanctions_STX(n_retards, n_absences_inj):