Fonction à plusieurs paramètres

Denis Dréano
PROG2-02

Fonction à plusieurs paramètres

Objectifs cantonaux : O1.6.

Cours complet sur la plateforme Runestone de Cédric Donner : Fonction à plusieurs paramètres.

Une fonction peut définir plusieurs paramètres, séparés par des virgules, pour influencer plusieurs aspects différents de son exécution (par exemple la taille et la couleur d’un dessin).

Syntaxe

◈ Syntaxe — Plusieurs paramètres

def nom_de_la_fonction(parametre1, parametre2):
    ...

nom_de_la_fonction(valeur1, valeur2)

L’ordre compte : la première valeur de l’appel est transmise au premier paramètre, la deuxième valeur au deuxième paramètre, etc.

→ Exemple 1 — carré coloré
from gturtle import *

def carre(taille, couleur):
    setPenColor(couleur)
    for _ in range(4):
        forward(taille)
        right(90)

carre(100, "red")
carre(200, "green")

Une fonction avec paramètres qui en appelle une autre

→ Exemple 2 — un cercle construit à partir d’un polygone
from gturtle import *
from math import pi

def polygone(nombre_cotes, longueur_cotes):
    for _ in range(nombre_cotes):
        forward(longueur_cotes)
        right(360 / nombre_cotes)

def cercle(rayon):
    perimetre = 2 * pi * rayon
    longueur_cotes = perimetre / 36
    # transmission de la valeur calculée au paramètre longueur_cotes de polygone
    polygone(36, longueur_cotes)

cercle(30)

L’idée : un cercle n’est qu’un polygone régulier à beaucoup de côtés (ici 36). La fonction cercle(rayon) calcule la longueur de chaque côté à partir du rayon (périmètre ÷ nombre de côtés), puis transmet cette valeur calculée en paramètre à polygone.

Attention à l’ordre des paramètres

! Erreur fréquente — inverser l’ordre des arguments

from gturtle import *

def triangle_couleur(taille, couleur):
    setPenColor(couleur)
    for _ in range(3):
        forward(taille)
        left(360 / 3)

triangle_couleur("red", 100)

Ce programme plante. La commande est appelée avec "red" en premier et 100 en second, mais elle attend l’ordre inverse (taille puis couleur). Python transmet donc la chaîne "red" au paramètre taille — impossible à utiliser dans forward(taille) — et 100 à couleur — invalide pour setPenColor. L’ordre des valeurs lors de l’appel doit toujours correspondre à l’ordre des paramètres dans la définition.