`return` : renvoyer un résultat
Une fonction qui répond
Jusqu'ici, nos fonctions affichaient des choses. Mais regarde len : len("Douala") n'affiche rien, elle donne 6, et on peut ranger ce 6 dans une variable ou faire un calcul avec.
def prix_ttc(prix_ht):
return round(prix_ht * 1.1925)
total = prix_ttc(1000) # total vaut 1192
print(total + 500) # 1692
print(prix_ttc(2500)) # 2981
Ce qui se passe à la ligne total = prix_ttc(1000) :
- Python appelle la fonction, avec
prix_ht = 1000; - il calcule
round(1000 * 1.1925), soit 1192 ; returnrenvoie 1192 : l'appelprix_ttc(1000)est remplacé par 1192 ;- la ligne devient
total = 1192.
`return` contre `print` : la confusion numéro un
C'est la confusion de tous les débutants. Compare :
def double_affiche(n):
print(n * 2)
def double_renvoie(n):
return n * 2
double_affiche(5) |
double_renvoie(5) |
|
|---|---|---|
| Ce qui s'affiche | 10 |
rien |
| La valeur obtenue | None |
10 |
x = ...(5) + 1 |
erreur : None + 1 |
x vaut 11 |
printmontre une valeur à l'humain, à l'écran. Le programme, lui, ne peut rien en faire ensuite.returndonne une valeur au programme, qui peut la ranger, la calculer, la comparer.
return arrête la fonction
Dès que Python rencontre return, il sort de la fonction immédiatement. Les lignes suivantes ne s'exécutent pas. C'est pratique avec des conditions :
def mention(note):
if note >= 16:
return "Très bien"
if note >= 10:
return "Passable"
return "Insuffisant"
Pas besoin de elif ni de else : si la note est 17, le premier return sort de la fonction, et le reste n'est jamais lu.
Exercice : Le prix TTC
Définis une fonction prix_ttc(prix_ht) qui renvoie le prix augmenté de la TVA de 19,25 %, arrondi à l'entier.
Le correcteur va appeler ta fonction avec plusieurs prix : elle ne doit rien afficher, seulement renvoyer.
Voir une solution
def prix_ttc(prix_ht):
return round(prix_ht * 1.1925)Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : La mention, en fonction
Définis mention(note) qui renvoie la mention : "Très bien" (16 et plus), "Bien" (14 et plus), "Assez bien" (12 et plus), "Passable" (10 et plus), "Insuffisant" sinon.
Utilise plusieurs return, sans elif si tu veux : return sort de la fonction.
Voir une solution
def mention(note):
if note >= 16:
return "Très bien"
if note >= 14:
return "Bien"
if note >= 12:
return "Assez bien"
if note >= 10:
return "Passable"
return "Insuffisant"Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Réutiliser une fonction dans une autre
Une fonction peut en appeler une autre. La fonction moyenne(notes) est donnée.
Définis est_admis(notes) qui renvoie True si la moyenne des notes est d'au moins 10, et False sinon. Utilise moyenne au lieu de refaire le calcul.
Voir une solution
def moyenne(notes):
return sum(notes) / len(notes)
def est_admis(notes):
return moyenne(notes) >= 10Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Exercice : Répare : print au lieu de return
Ce programme devrait afficher Total : 2192 FCFA (le TTC de 1000, plus 1000 FCFA de livraison). Il plante. Lis l'erreur, comprends pourquoi, et corrige la fonction.
Voir une solution
def prix_ttc(prix_ht):
return round(prix_ht * 1.1925)
total = prix_ttc(1000) + 1000
print(f"Total : {total} FCFA")Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice
Teste-toi
Que vaut x ?
python def carre(n): print(n * n) x = carre(4)
16None(bonne réponse)4- Une erreur
La fonction affiche 16 mais n'a pas de return : elle renvoie None, qui est rangé dans x. Il fallait return n * n.
Qu'affiche ce code ?
python def test(n): return "positif" print("jamais") print(test(5))
positif(bonne réponse)jamaispuispositifpositifpuisjamais- Rien
return sort immédiatement de la fonction : la ligne print("jamais") n'est jamais exécutée. Le print extérieur affiche ce que la fonction renvoie.