Aller au contenu

Les fonctions en Python⚓︎

DĂ©finir une fonction

Lorsqu’on sait qu’on va utiliser plusieurs fois une figure, on peut créer une nouvelle commande qui permet de dessiner cette figure en une seule ligne.

Les fonctions Python servent à cela. On peut voir une fonction comme une nouvelle commande ajoutée à celles déjà disponibles.

Pour définir une fonction, il faut utiliser la syntaxe :

Python
def nom_de_la_fonction(parametres):  # (1)!
    instruction_1  # (2)!
    instruction_2
    ...
    instruction_n

  1. Sur la première ligne :
    • Le mot-clef def au dĂ©but de la ligne.
    • Le nom de la fonction, avec les mĂŞmes règles syntaxiques que les noms de variables.
    • Les parenthèses qui peuvent ĂŞtre vides ou contenir les noms de paramètres, sĂ©parĂ©s par des virgules s'il y en a plusieurs.
    • Les deux points Ă  la fin de la ligne
  2. Sur les lignes suivantes, les instructions ont toutes la même indentation, c'est-à-dire le décalage vers la droite par rapport à la première ligne. C'est ce qui permet à Python de déterminer à quel moment s'arrête la fonction. Si l'indentation n'est pas correcte, vous aurez un message d'erreur.

    Le code de la fonction s'arrête dès qu'il y a une ligne sans indentation.

Un exemple de fonction

Dans le programme ci-dessous, il y a le code de la fonction pic qui permet de tracer une figure.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Votre tracé sera ici

Si vous ne voyez pas la figure

Si vous exécutez le programme tel qu'il est, il ne va rien se passer.

C'est parce que vous définissez la fonction, mais que vous ne l'appelez pas.

Vous pouvez tester cette fonction de deux façons différentes :

Vous pouvez rentrer les commandes suivantes (ou d'autres) pour tester la fonction :

Python Console Session
>>> pic()
>>> left(90)
>>> pic()

Vous pouvez rajouter les lignes suivantes (ou d'autres) après la fonction, sans indentation :

Python
pic()
left(90)
pic()

Il faut appuyer sur le bouton "Exécuter" pour voir le résultat.

Utilisation dans une autre fonction

À partir de maintenant, la fonction pic est pré-définie pour les exemples et exercices suivants.

Cette fonction peut être utilisée pour écrire une autre fonction.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

Votre tracé sera ici

Exercice 7 (recopier la réponse sur la feuille)

Complétez le code de la fonction etoile() afin d'obtenir la figure ci-contre. Il faut faire attention à l'indentation et appuyer sur le bouton Exécuter après toute modification du fichier pour qu'elle soit prise en compte.

Le triangle rouge indique la position de départ et d'arrivée et les triangles bleus indiquent les positions intermédiaires.

Indications
Indication 1

Vous pouvez comparer la figure attendu avec celle de l'exemple précédent.

Indication 2

Il faut utiliser 4 fois pic et tourner 4 fois, comme dans l'exemple précédent.

Indication 3

Si on ne veut pas faire la croix, il ne faut pas tourner dans le mĂŞme sens.

⚠ Vous devez utiliser la fonction pic qui est pré-définie. Il n'est pas nécessaire de rajouter le code de cette fonction.

Recopiez le code de la fonction etoile sur la feuille.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein Ă©cran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier

.128013mSo73=f5thP(6c9:eg_1)/p8w svai24yru0kdn-bl050M0r0j0D0E0Q0B0A0o0Q0D0B0B0g010j0E0x010406050B0J0b0b0D0I0H040c0d0Q0J0+0d0N050w0=0@0_0{0:0x04051b141e0w1b0:0M0E0C0Z0#0%0)0#0N0s0J0D0s0r0O0x0H0j0k120A0k0E0s0k0Q1G0k0j0.050U0P0Q0r1n0$0(011F1H1J1H0j1P1R1N0j0I1c1B0Z0~0B0x0D0N0)0F011T1p010h0W0r0N0D0b0r1N1/1;1_1V1|1R1 210.0a0A0l0I0d0x0d0B0E110N0A0S1-0I0I0r0o2m14240N1c0w1B2z1)1+1*1O0M261q0E0N1~2j1N1k1m0!1U2J2L0N0d2P1N0x2s1c2x2z2$0;1:2n2R1`2V0I0^0Q1N0D1E2s0h0)030t0t0o2W0r1J2U0d0O0f0O0u0.0u140D2%2*0/2)252,1V2.2:2=2@0r2_012{2}2 312M340O1@040F3a3c1;3e2x2I013j0D2;1c2?0k2^2`2|2~0S3t2V3v0f0.0f3A2w3d0:3E3h0)3H3J053L3N3p3P3s2K3u350G0.0G3Y153!3f2+1o3i0d2/3I3l3M3n3O3r3R3;3T350i0.0i3`2$3#2*3F3)443-3q3Q304a33350n0.0n4g3|3$3 3(413k3K3m3o4o3:323v0e0.0e4x3C4i3g4A3G4C434E454G3/494J350y0.0y4O2y4Q3~2S4T423*3,463.484q4#0O0p0.0p4*2z2Z0r2z2P2C0M1+2H3%014p2O1l1c512#3d3Z3C054p5g250E0M0)2|2x3v374E5o5q4^3S4s361^2a0r5x4p5z5t1N0w3b3}3F0L0.0S0h5i2y5M590z0.0A5S5m4-2-0h0.0T0d1}5Z5U4S0-040m0v0q5Z0:3{5j3E5w015r2*3v3x3+0A5|4Z4_3=3w5C205E5}5y4r605J3b0A6i5Y4z4.0N0.0x0E0o5,6l1`5/5;5@6s4j640t5s353V5v5p6c5G6e6D69215F4I676E3A6j6k4j596n040I1K0j6y4R4.6v6#5#1V0b0E4}0K6)3F5/0v6x5_5T5{6G5~1;3v3@6F6N4!673@0A5D71664b0O6 6R6j5-6m6o6q6:596v6?6^3e7m5M6A6C0O4d706H6O794d756a775H4c6g046S7e2-0.6Y1!7i5.0.0m7M4.6,6.7Q6u0.7l4h6:7q5 4t3l6A6I4`4u7z6M7v72794u2z6h7d6t3i7g6r7o7^0)7k6@2(6`5x7r4L7u657C0O4L7,6b876J897E7G7}3G7J6Z7U1V6(7|6U4S7S040p6/8p6$7V047X3|8w2n7!6}4$7%6{6d4`4%8b7B8e4%7=7F7@8q7f046p7{818T8y6w7m5^8Y5n8I7r4|868J674|8M7.785A8,7c6i7H7_6X8l8C6;7O8m0)8s8u92016=805h0w5l1f2!1454140j569h2F2A0D1Q529f5d5^0S0U0W0B04.

Votre tracé sera ici