ParcoursOuvrir l'appli

`return` : renvoyer un résultat

Python, les fonctions · 45 min

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) :

  1. Python appelle la fonction, avec prix_ht = 1000 ;
  2. il calcule round(1000 * 1.1925), soit 1192 ;
  3. return renvoie 1192 : l'appel prix_ttc(1000) est remplacé par 1192 ;
  4. 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

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) >= 10

Dans 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)
  1. 16
  2. None (bonne réponse)
  3. 4
  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))
  1. positif (bonne réponse)
  2. jamais puis positif
  3. positif puis jamais
  4. 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.