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)
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)
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)
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

.128013)P=c0hS2sr/n6ko_ev19pf(du8t-bai54y3g l7m:050y0r0B0E0F0M0j0L0e0M0E0j0j0d010B0F0v010406050j0z0O0O0E0k0I040h0p0M0z0*0p0m050l0;0?0^0`0/0v04051a131d0l1a0/0y0F0s0Y0!0$0(0!0m0K0z0E0K0r0C0v0I0B0g110L0g0F0K0g0M1F0g0B0-050T0D0M0r1m0#0%011E1G1I1G0B1O1Q1M0B0k1b1A0Y0}0j0v0E0m0(0i011S1o010w0V0r0m0E0O0r1M1.1:1^1U1{1Q1~200-0a0L0c0k0p0v0p0j0F100m0L0R1,0k0k0r0e2l13230m1b0l1A2y1(1*1)1N0y251p0F0m1}2i1M1j1l0Z1T2I2K0m0p2O1M0v2r1b2w2y2#0:1/2m2Q1_2U0k0@0M1M0E1D2r0w0(030q0q0e2V0r1I2T0p0C0J0C0t0-0t130E2$2)0.2(242+1U2-2/2;2?0r2^012`2|2~302L330C1?040i393b1:3d2w2H013i0E2:1b2=0g2@2_2{2}0R3s2U3u0J0-0J3z2v3c0/3D3g0(3G3I053K3M3o3O3r2J3t340H0-0H3X143Z3e2*1n3h0p2.3H3k3L3m3N3q3Q3:3S340G0-0G3_2#3!2)3E3(433,3p3P2 4932340n0-0n4f3{3#3~3%403j3J3l3n4n3/313u0N0-0N4w3B4h3f4z3F4B424D444F3.484I340A0-0A4N2x4P3}2R4S413)3+453-474p4!0C0u0-0u4)2y2Y0r2y2O2B0y1*2G3$014o2N1k1b502!3c3Y3B054o5f240F0y0(2{2w3u364D5n5p4@3R4r351@290r5w4o5y5s1M0l3a3|3E0o0-0R0w5h2x0L5L580m0w0-0S0p1|5R5l4,1_0,040x0b0P5$0/3`5i3D5v015q2)3u3w3*0L5@4Y4^3;3v5B1 5D5^5x4q5{5I3a0L6d5T4y4-0m0-0v0F0e5$5U4R5*5,5/6n5?5o675r343U5u6v605G6y64205E4H626z3z6e6f4i5V0-0k1J0B6t6O6p0-0x6U4Q4-0O0F4|0f6Z5(1U5*0b6s5;2x5L5 0q6x0C3?6A6H4Z623?0L5C6|614a6_6b046M6o6h6j6l6*3E6q6.6:3d7h6=6B6@5`4b3k6?5F697o7065726D0C4c2y6c6e792,6Q6S7d586q7H4R6$6(7K4-6-6/2%6u5w6^4t6{677r4_4t7u6G7Y6I747W6L7C6g7E046k6m7j7.6,6X7g4g7d6?6^4K7X6C7s0C4K7$66814_7 7,6d7D3h7F1Z7O5)6X8g1U7M040u6)7?6V7P0-7`3{8p5m7l6^4$80684_4$857w828z8a6N6!7/7;8j0(7f7R5g7T6w7n4`7p7l7Z624{8E7(6}744{7A777-8q7/6R8f8v6+8O8i8;3E8l8n8N017Q7h5:2%0l5k1e2Z1353130B55982E2z0E1P51965c5:0R0T0V0j04.

Votre tracé sera ici