Programmer en Python en 2nde

No print

un paramètre.

Écrire une fonction en Python qui respecte la spécification suivante :

Paramètre un nombre réel c
Valeur renvoyée l'aire du carré de côté c

Écrire parallèlement à cette fonction une autre fonction qui sera chargée uniquement d'afficher des résultats. Par exemple avec un message tel que : « L'aire du carré de côté 5 (en unité de longueur) est égale à 25 (en unités d'aire) ».

  • Un code possible
  • Documenter le code
  • print() vs return

def aire_du_carre(c):
    """
    paramètre : c (flottant ou entier)
    contrainte : c positif (c représente la longueur du côté d'un carré)
    valeur calculée : carré de c
    """
    return c*c
	
	
def affiche_aire_du_carre(c):
    print("L'aire du carré de côté {} unités de longueur est égale à {} unités d'aires.".format(c, aire_du_carre(c)))


affiche_aire_du_carre(3)
affiche_aire_du_carre(5)

Un code bien écrit est un code documenté, commenté.

Dans le corrigé de cet exercice, on a par exemple explicité la spécification de la fonction (le cahier des charges) dans la partie placée entre les triple guillemets """ et """ juste après l'en-tête de la fonction et avant le corps de la fonction. L'expression docstring est utilisée dans la documentation Python pour désigner cette documentation de la fonction.

En classe de seconde, on aura assez peu souvent besoin d'ajouter de tels commentaires.
Les programmes en jeu sont très courts et en général déjà très "documentés" dans l'énoncé de l'exercice.

Il est par contre préférable de respecter une autre habitude d'auto-documentation en donnant des noms explicites aux fonctions.
Par exemple, nous n'avons pas appelé f la fonction calculant l'aire du carré mais aire_du_carre. De même, la fonction ne servant qu'à un affichage a été nommée affiche_aire_du_carre, ce qui permet de comprendre avec son seul nom que l'on aura affaire à une fonction à "effet de bord" : son rôle principal n'est pas de calculer une valeur mais de réaliser un affichage.

Il faut faire comprendre au plus tôt la différence entre print et return.

Une différence importante est la réutilisation possible de la sortie. Supposons par exemple que l'on ait besoin, dans la suite de l'exercice, de calculer la somme des aires de deux carrés. Une écriture de fonction telle que ci-dessous serait inutilisable (car on ne peut faire des calculs avec un message !) :


def aire_du_carre(c):
    print(c*c)


print("La somme de l'aire du carré de côté 3 et de l'aire du carré de côté 5 est égale à :")
aire_du_carre(3)+aire_du_carre(5) # erreur !!

C'est bien return que l'on doit utiliser :


def aire_du_carre(c):
    return c*c
 

print("La somme de l'aire du carré de côté 3 et de l'aire du carré de côté 5 est égale à :")
print(aire_du_carre(3)+aire_du_carre(5))

No print.

La différence de rôle entre print() et return semble devoir être souvent expliquée plusieurs fois aux programmeurs débutants.

Pour éviter ce problème, il est possible, avec un langage comme Python, de ne pas présenter la fonction print dans un premier temps, tous les résultats pouvant être obtenus directement dans un interpréteur.

Exemple

  1. Ouvrez le shell de la distribution Python, puis ouvrez un fichier ([File] → [New File]). Définissez ensuite la fonction ci-dessous qui renvoie une chaîne de caractères : définition d'une fonction
  2. Enregistrez le fichier sous le nom noprint.py puis validez-le ([Run] → [Run Module]).
  3. La console a redémarré (RESTART) en prenant en compte le contenu du fichier noprint.py : définition d'une fonction
  4. On peut alors directement lancer l'exécution de la fonction no_print() dans l'interpréteur : le résultat de la fonction s'affiche sans avoir fait appel à print() : définition d'une fonction

No input

De la même façon, l'exemple d'exécution suivant montre que l'on peut se dispenser de input() pour faire une série de tests de sa fonction :

Machine, tu me parles ?

Un autre exemple :

No input, vous dit-on !!