QCM : Définition et appel de fonctions en Python
[enonce]
Ce QCM porte sur la définition et l'appel de fonctions en Python : mot-clé def, paramètres, instruction return et différence avec print. Choisissez la bonne réponse parmi les quatre propositions.
[/enonce]
[etape]
Quel mot-clé Python permet de définir une nouvelle fonction ?
[qcm]
[option]function[/option]
[option]fun[/option]
[option correct="true"]def[/option]
[option]return[/option]
[reponse statut="correct"]Exact !
En Python, on utilise le mot-clé def (abréviation de define) pour définir une nouvelle fonction, suivi du nom de la fonction et de ses paramètres.[/reponse]
[reponse motif="function"]Non.
function est utilisé dans d'autres langages (JavaScript par exemple), mais pas en Python. Python utilise un mot-clé plus court.[/reponse]
[reponse motif="fun"]Non.
fun n'existe pas en Python. Le mot-clé est def (abréviation de define).[/reponse]
[reponse motif="return"]Non.
return sert à renvoyer une valeur à l'intérieur d'une fonction, mais pas à la définir. C'est un autre mot-clé qui crée la fonction.[/reponse]
[reponse statut="incorrect"]Non.
Syntaxe : def nom_fonction(paramètres) : suivi du corps indenté.[/reponse]
[/qcm]
[/etape]
[etape]
Quelle est la différence principale entre return et print dans une fonction Python ?
[qcm]
[option]Il n'y a aucune différence[/option]
[option correct="true"]return renvoie une valeur au programme appelant ; print l'affiche à l'écran[/option]
[option]return affiche ; print renvoie[/option]
[option]return est utilisé uniquement avec des entiers ; print avec des chaînes[/option]
[reponse statut="correct"]Bonne réponse !
return met fin à la fonction et transmet une valeur au programme qui l'a appelée (valeur réutilisable). print se contente d'afficher à l'écran, sans rien renvoyer.[/reponse]
[reponse motif="Il n'y a aucune différence"]Non.
La différence est fondamentale : return renvoie une valeur utilisable, print se contente d'afficher. Un print ne peut pas être stocké dans une variable pour être réutilisé.[/reponse]
[reponse motif="return affiche ; print renvoie"]Non.
C'est l'inverse. print affiche à l'écran ; return renvoie une valeur.[/reponse]
[reponse motif="return est utilisé uniquement avec des entiers ; print avec des chaînes"]Non.
Les deux fonctionnent avec tous les types (int, float, str, bool, listes, etc.). Le type n'est pas le critère de distinction.[/reponse]
[reponse statut="incorrect"]Non.
Retenir : print affiche, return renvoie. Seule la valeur renvoyée par return peut être stockée et réutilisée.[/reponse]
[/qcm]
[/etape]
[etape]
On définit la fonction Python ci-dessous :
def f(x) :
return x + 1
Que vaut f(5) ?
[qcm]
[option]$5$[/option]
[option]$1$[/option]
[option correct="true"]$6$[/option]
[option]Rien (la fonction n'affiche rien)[/option]
[reponse statut="correct"]Bravo !
Lors de l'appel f(5), le paramètre x reçoit la valeur $5$. La fonction renvoie alors $x + 1 = 5 + 1 = 6$.[/reponse]
[reponse motif="$5$"]Non.
$5$ est la valeur passée en paramètre, pas la valeur renvoyée. La fonction effectue une opération : elle ajoute $1$.[/reponse]
[reponse motif="$1$"]Non.
$1$ est la constante ajoutée, pas le résultat. Il faut faire la somme $x + 1$ avec $x = 5$.[/reponse]
[reponse motif="Rien (la fonction n'affiche rien)"]Non.
La fonction ne fait pas de print, mais elle renvoie une valeur grâce à return. f(5) produit donc bien une valeur utilisable.[/reponse]
[reponse statut="incorrect"]Non.
Remplacer x par la valeur passée en paramètre, puis appliquer la formule du return.[/reponse]
[/qcm]
[/etape]
[etape]
On considère la fonction Python ci-dessous :
def saluer() :
print("Bonjour")
Laquelle des instructions suivantes appelle correctement cette fonction ?
[qcm]
[option]saluer[/option]
[option]def saluer()[/option]
[option correct="true"]saluer()[/option]
[option]call saluer()[/option]
[reponse statut="correct"]Exactement !
Pour appeler une fonction sans argument, on écrit son nom suivi de parenthèses vides. Les parenthèses sont obligatoires, même s'il n'y a pas de paramètre.[/reponse]
[reponse motif="saluer"]Non.
Sans les parenthèses, on ne lance pas la fonction : on y fait simplement référence. Les parenthèses sont nécessaires pour exécuter la fonction.[/reponse]
[reponse motif="def saluer()"]Non.
def sert à définir la fonction, pas à l'appeler. Une fois définie, on l'appelle en écrivant simplement son nom suivi de parenthèses.[/reponse]
[reponse motif="call saluer()"]Non.
Le mot-clé call n'existe pas en Python. Pour appeler une fonction, il suffit d'écrire son nom suivi de parenthèses.[/reponse]
[reponse statut="incorrect"]Non.
Appel d'une fonction : nom_fonction(arguments). Les parenthèses sont obligatoires, même vides.[/reponse]
[/qcm]
[/etape]
[etape]
On exécute le programme Python ci-dessous :
def f(x) :
print(x * x)
a = f(3)
print(a)
Que s'affiche-t-il à l'écran (en deux lignes) ?
[qcm]
[option]9 puis 9[/option]
[option]9 puis 3[/option]
[option correct="true"]9 puis None[/option]
[option]Une erreur est provoquée[/option]
[reponse statut="correct"]Parfait !
La fonction f affiche $9$ (avec print) mais ne renvoie rien avec return. Elle renvoie donc la valeur spéciale None. La variable a contient None, et print(a) l'affiche.[/reponse]
[reponse motif="9 puis 9"]Non.
print affiche à l'écran mais ne renvoie pas la valeur : la fonction f ne renvoie rien. Par conséquent, a ne contient pas $9$.[/reponse]
[reponse motif="9 puis 3"]Non.
$3$ est la valeur du paramètre, pas celle renvoyée par la fonction. La fonction ne renvoie d'ailleurs rien explicitement.[/reponse]
[reponse motif="Une erreur est provoquée"]Non.
On peut parfaitement affecter à une variable le résultat d'une fonction sans return : elle contiendra simplement None.[/reponse]
[reponse statut="incorrect"]Non.
Distinction importante : une fonction sans return renvoie None, même si elle utilise print.[/reponse]
[/qcm]
[/etape]
[etape]
On définit la fonction Python ci-dessous :
def moyenne(a, b, c) :
return (a + b + c) / 3
Que vaut moyenne(4, 6, 8) ?
[qcm]
[option]$18$[/option]
[option correct="true"]$6.0$[/option]
[option]$6$[/option]
[option]$4.0$[/option]
[reponse statut="correct"]C'est bien ça !
$(4 + 6 + 8) / 3 = 18 / 3 = 6.0$. L'opérateur / renvoie toujours un float en Python, même si la division tombe juste.[/reponse]
[reponse motif="$18$"]Non.
$18$ est le total des trois nombres, pas la moyenne. Il faut diviser par $3$ (le nombre de valeurs).[/reponse]
[reponse motif="$6$"]Non.
La valeur est juste, mais pas exactement le type attendu : Python affiche 6.0 (avec un point décimal) car / renvoie toujours un float.[/reponse]
[reponse motif="$4.0$"]Non.
$4$ est le plus petit des trois nombres, pas leur moyenne. La moyenne est plus grande, elle tombe « au milieu » des valeurs.[/reponse]
[reponse statut="incorrect"]Non.
Moyenne = somme divisée par le nombre de valeurs. Attention : / en Python renvoie un float.[/reponse]
[/qcm]
[/etape]