2: Fonctions

Nous avons déja vu une fonction, print(), qui écrit un message. Pour utiliser une fonction, vous écrivez son nom, suivi par des arguments entre parenthèses (). Le mot argument signifie entrée de la fonction. Ensuite, la fonction s'exécute en fonction de ces arguments. Quand il y a plusieurs arguments pour une fonction, vous les séparez par des virgules (,). Par exemple, vous pouvez donner plusieurs arguments à la fonction print; cela aura pour effet de les écrire dans l'ordre avec des espaces comme séparateurs. Voici un exemple ci-dessous.

Exemple
Ecrire trois nombres
Les espaces supplémentaires dans l'extrait de programme ci-dessus n'ont aucun effet sur la sortie. Les espaces supplémentaires sont sans effet dans la plupart des situations. Cependant, l'espace supplémentaire au début de la ligne, que l'on appelle indentation, a une signification particulière qui peut  causer des erreurs (cliquez ici pour un exemple) si on ne l'utilise pas correctement. Vous verrez des indentations correctes dans quelques leçons.

Une fonction peut aussi renvoyer une valeur (comme une sortie). Par exemple, la fonction max() (raccourci pour maximum) renvoie le plus grand de tous ses arguments qui doivent être des nombres.

Exemple
Essayez de prédire la sortie du programme suivant avant de l'exécuter.
Le nom valeur de retour signifie la valeur qu'une fonction retourne. Par exemple dans max(42, 17), on dit que la "fonction max retourne la valeur 42".

La fonction max a un ami qui se comporte de la même manière: la fonction min qui retourne le minimum (plus petit) de ses arguments.

Exercice à choix multiple : Min et Max I
Quelle est la sortie du programme suivant?

x = 13
y = 7
a = max(x+y, x*2)
b = min(x, y)
print(a, b)
Correct !

Les fonctions peuvent être combinées pour créer des expressions plus compliquées.

Exercice à réponse courte : Min et Max II
Quelle est la sortie du programme suivant? Indice

x = min(max(13, 7), 9)
print(x)
Correct !

Vous n'êtes pas limité à utiliser les fonctions qui sont pré-définies en Python. Dans quelques leçons, vous apprendrez comment définir de nouvelles fonctions!

Erreurs courantes

Si vous appelez une fonction en omettant certains arguments (entrée) ou en en mettant trop, vous obtiendrez une erreur. Par exemple, max nécessite au moins une entrée:

Exemple
Appel de max avec trop peu d'arguments.

Il est important de bien lire l'erreur qui est générée quand votre code ne fonctionne pas. Python vous donne en général des indications utiles sur ce qui ne s'est pas passé correctement. Cependant, quelque fois il faut investiguer un peu plus pour identifier le problème — voici un exemple.

Exemple
Appuyez sur Exécuter le programme et regardez l'erreur qui est générée.

Python dit qu'il y a une erreur de syntaxe, ce qui veut dire qu'il ne comprend pas ce que vous essayez de faire :

 Traceback (most recent call last):
   In line 2 of the code you submitted:
     plusgrand = max(3, 4)
             ^
 SyntaxError: invalid syntax
Cependant, la ligne plusgrand = max(3, 4) est correcte. Le problème vient en fait de la ligne précédente: vous avez oublié de fermer la parenthèse ) après pluspetit = min(14, 99 et Python cherche la ) sur la ligne suivante. Pensez donc à vérifier les lignes qui se situent avant et après ce que Python vous suggère si vous êtes bloqué dans le débogage de vos programmes.

Exercice

Voici un exercice en deux parties sur l'utilisation des fonctions min et max. Il y a des connections entre les villes de Maxime et Miniac avec plusieurs ponts. Il y a différentes limites sur le poids qui peut être transporté sur chacun des ponts.

Exercice de code : Une route
Pour la première partie, il y a une seule route entre les deux villes. La route a trois ponts avec des limites de poids abc, comme indiqué sur le dessin ci-dessous:

Pour pouvoir conduire sur cette route, le camion doit d'abord passer la pont avec avec une limite de poids a, puis celui avec avec une limite de poids b, et enfin celui avec avec une limite de poids c. Votre camion aura un accident s'il dépasse l'une des trois limites. Ecrivez un programme qui affiche le poids maximum qui peut être transporté sur cette route. Votre code utilisera le fait que les variables ab, and c contiennent déjà les valeurs des poids limites pour les ponts.

Exercice de code : Deux routes
Voici la deuxième partie de l'histoire. Il y a également une seconde route constituée de deux ponts, le premier avec une limite de poids d, et le second avec une limite de poids e, comme indiqué ci-dessous.

Votre camion prend l'une des deux routes. Ecrivez un programme qui indique le poids maximum qui peut être transporté entre les deux villes. Votre code utilisera le fait que les variables abc,d et e contiennent déjà les valeurs des poids limites pour les ponts. Indice

Exercice : Code mêlé

Voici un autre code mêlé. Vous devez déplacer les lignes de code afin de les réarranger en un programme correct.

Exercice mêlé : Trier sur le volet
Réarrangez le code afin qu'il écrive les trois nombres xy and z triés en ordre croissant, de manière à ce que le plus petit soit écrit d'abord, puis celui du milieu et enfin le plus grand.
Déplacez les lignes avec la souris pour les réarranger.
  • print(max(x, y, z))
  • print(min(x, y, z))
  • print(x+y+z-min(x, y, z)-max(x, y, z))

Une fois que vous avez terminé cet exerice, vous avez deux choix:

  • Aller directement à la Leçon 3, ou
  • (conseillé) faire plus d'exercices d'entraînement sur les fonctions à la Leçon 2X.