Aller au contenu

Fonctions et paramètres⚓︎

Rajouter des paramètres aux fonctions

Les figures obtenues par les fonctions précédentes ont toujours la même taille. Si on veut changer la taille du triangle obtenu avec triangle, il faut changer la longueur du côté avant d'exécuter à nouveau le code.

Si on veut tracer 3 triangles de tailles différentes sur la même figure, ce n'est pas possible avec cette version de la fonction.

Par contre certaines fonctions prennent des paramètres, comme les fonctions left, right ou forward.

Selon la valeur mise dans les parenthèses, le résultat sera différent.

Ajouter un paramètre à une fonction

Prenons l'exemple de la fonction suivante :

Python
def carre():
    for i in range(4):
        forward(50)
        left(90)

Tous les carrés tracés feront alors 50 pixels de long.

Nous pouvons rajouter un paramètre pour permettre de décider de la taille du carré lors de l'appel de la fonction :

Python
def carre(longueur):
    for i in range(4):
        forward(longueur)
        left(90)

Si on appelle carre(50) on aura un carré de 50 pixels de côté. Ce sera 100 pixels si on appelle carre(100).

Vous pouvez tester ici

###(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

Voici ce qui se passe quand on fait ces deux appels :

Python
carre(50)
carre(100)
Python
for i in range(4):  # premier carré : carre(50)
    forward(50)  # longueur est remplacé par 50
    left(90)
for i in range(4):  # deuxième carré : carre(100)
    forward(100)  # longueur est remplacé par 100
    left(90)
Python
forward(50)  # premier tour de boucle du premier carré
left(90)
forward(50)  # deuxième tour de boucle du premier carré
left(90)
forward(50)  # troisième tour de boucle du premier carré
left(90)
forward(50)  # quatrième tour de boucle du premier carré
left(90)
forward(100)  # premier tour de boucle du deuxième carré
left(90)
forward(100)  # deuxième tour de boucle du deuxième carré
left(90)
forward(100)  # troisième tour de boucle du deuxième carré
left(90)
forward(100)  # quatrième tour de boucle du deuxième carré
left(90)
Exercice 9 (recopier la réponse sur la feuille)

Complétez cette suite d’instructions pour obtenir la figure ci-dessous. Les petits carrés mesurent 50 pixels de côté.

###(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

.128013w)P=c0hS2sr/no_ev1pf(dut-bai54y3g lm050w0q0y0B0C0J0k0I0f0J0B0k0k0e010y0C0t010406050k0x0K0K0B0l0F040i0o0J0x0#0o0n050m0,0.0:0=0*0t0405150~180m150*0w0C0r0T0V0X0Z0V0n0H0x0B0H0q0z0t0F0y0h0|0I0h0C0H0h0J1A0h0y0(050O0A0J0q1h0W0Y011z1B1D1B0y1J1L1H0y0l161v0T0^0k0t0B0n0Z0j011N1j010u0Q0q0n0B0K0q1H1)1+1:1P1?1L1_1{0(0a0I0d0l0o0t0o0k0C0{0n0I0M1%0l0l0q0f2g0~1~0n160m1v2t1Z1#1!1I0w201k0C0n1^2d1H1e1g0U1O2D2F0n0o2J1H0t2m162r2t2W0+1*2h2L1;2P0l0/0J1H0B1y2m0u0Z030p0p0f2Q0q1D2O0o0z0D0z0s0(0s0~0B2X2!0)2Z1 2$1P2(2*2,2.0q2:012=2@2_2{2G2~0z1.040j34361+382r2C013d0B2+162-0h2/2;2?2^0M3n2P3p0G0(0G3u2q370*3y3b0Z3B3D053F3H3j3J3m2E3o2 0E0(0E3S0 37192U0~2J2w0w1#2B3X013K1|163`173^2Y3=3w05412V2!0I0C0w0Z2?2r3p313E4e4g013)3L3+3N2 310I240q4h3l4r2|4k1H0m35392#1i3c0(0f0:2m3T493W4J0Z0%040v4P2s4H3z0K0C320g0g4X4c3a4S014U0c4*0*484Y3y4f4z4j2 3r3#4n4z413M2}4|1/4x503*4C542t4G4R2M3A4L4N0q4*4Z3 4U4W4?4+4I5e4#0(0D4)5o5k4-4/4;5j4^4o4i2!3O3f4_4p4A2`4s530z3P4w1`4y5J515M5G5b5p3z0n0(0u0o0l0b0:0w5B4d5l0(5n2Y5d1;5s040s4(5,4,5e5z5o4=5;4d5I5E1+3p3.4m635K5266555R574B3,0z673S5=4K044M2l5i5w6l4T5/5{5q5?4$045u6v3z5~2W603?0m4b3@0q2t442u3|0~2x6P0B1K6K3_1f380m0M0O0Q0k04.

Votre tracé sera ici

Plusieurs paramètres

Il est possible d’utiliser plusieurs paramètres pour une fonction. Il faut alors séparer les paramètres dans la définition, ou les valeurs lors de l’appel, par des virgules.

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

Complétez le code de la fonction suite_carres qui prend en paramètres longueur et nb, et qui trace nb carrés, tous de longueur longueur pixels. Par exemple, l'appel de suite_carres(50, 5) permet d'obtenir les 5 carrés ci-contre.

Le code de votre fonction doit permettre d'afficher suite_carres(50, 5) et suite_carres(20, 3) à la suite. Vous obtiendrez donc 5 grands carrés suivis de 3 petits carrés.

âš  Vous ne devez pas modifier la ligne def suite_carres(longueur, nb):.

Indications
Indication 1

Vous ne devez mettre aucun nombre dans le code de la fonction, uniquement les variables longueur et nb.

Il faut utiliser chacune des variables au moins une fois.

Indication 2

Vous pouvez compléter le code avec les valeurs permettant d'obtenir la bonne figure pour suite_carres(50, 5) puis par celles correspondant à suite_carres(20, 3).

Vous pouvez ensuire regarder quelles valleurs correspondent Ă  longueur et Ă  nb.

Indication 3

Pour chacun des trous à remplir, vous pouvez vous demander s'il faut mettre une longueur ou le nombre de fois qu'on doit répéter les instructions.

###(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)wP=chS2s,r/n6ko_ev1pf(dut-bai4y3g lm:050y0s0A0D0E0K0j0J0f0K0D0j0j0e010A0E0v010406050j0z0L0L0D0l0G040h0q0K0z0%0q0n050m0.0:0=0@0,0v040517101a0m170,0y0E0t0V0X0Z0#0X0n0I0z0D0I0s0B0v0G0A0g0~0J0g0E0I0g0K1C0g0A0*050Q0C0K0s1j0Y0!011B1D1F1D0A1L1N1J0A0l181x0V0`0j0v0D0n0#0i011P1l010w0S0s0n0D0L0s1J1+1-1=1R1^1N1{1}0*0a0J0d0l0q0v0q0j0E0}0n0J0O1)0l0l0s0f2i10200n180m1x2v1#1%1$1K0y221m0E0n1`2f1J1g1i0W1Q2F2H0n0q2L1J0v2o182t2v2Y0-1,2j2N1?2R0l0;0K1J0D1A2o0w0#030r0r0f2S0s1F2Q0q0B0o0B0u0*0u100D2Z2$0+2#212(1R2*2,2.2:0s2=012@2_2{2}2I300B1:040i36381-3a2t2E013f0D2-182/0g2;2?2^2`0O3p2R3r0H0*0H3w2s390,3A3d0#3D3F053H3J3l3L3o2G3q310F0*0F3U11391b2W102L2y0y1%2D3Z013M1~183|193`2!3@3y05432X2$0J0E0y0#2^2t3r333G4g4i013+3N3-3P31330J260s4j3n4t2~4m1J0m373b2%1k1R0p0*0O0w3V3y0J4J3B0n0w0*0.2h0s2_0=2o0j4R2u4U410)040x4*4e3c4L3!0*0K0~1p0s0z0l4;4,4@014.0k4;4T3Y520n0*0n0C50582O530*0b0M4;0,4a4+3A4h4B4l313t3%4p4B433O2 5t1;4z5x3,4E5B2v370J5K574f414N040w0q4 5n045M4?5g5a040E56515g0q0c0*2G5$5f2)0C0*0l1-1s5e5N524.4:5U5%2)5b5d5}5.1R4.5j5l5^215q4r0r5s0B3R4o6a4s2|4u5A6e5C1|4A6b5y6k3Q4G5J5L6w5~3e0*0f4%0s684K5g5{6E4V4_4{0z4}5T2!630#6567624f6h6c2$3r3:6g4q6i5z6Z6n1}5E4D3.0B6!3w6w6x6Q3C0*5R0l0c0=0y6I4-0*5|6P5_5Y6K1o6M4~6 5`5i6T494d3_0s2v462w3~102z7m0D1M7h3{1h3a0m0O0Q0S0j04.

Votre tracé sera ici

Exercice 11 (répondre sur la feuille)

Complétez le code de la fonction suite_carres2 qui prend en paramètres longueur et nb, et qui trace nb carrés, tous de longueur longueur pixels. L'écart enere deux carrés mesure la moitié de longueur. La figure ci-contre correspond à suite_carres2(50, 5).

Il est possible de mettre une expression contenant des calculs dans les parenthèses, comme 3 * longueur ou longueur + 0.2*longueur.

Recopiez la valeur mise dans les parenthèses de forward sur la feuille.

Indication

La distance qui sépare le coin gauche d'un carré de celui du suivant correspond à une fois et demie la longueur du côté de chaque carré.

###(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)wP=chS2s,r/n6ko_ev1pf(d.ut-*bai54y3g l7m:050y0s0B0F0G0N0j0M0f0N0F0j0j0e010B0G0v010406050j0A0P0P0F0l0J040h0q0N0A0+0q0n050m0=0@0_0{0:0v04051b141e0m1b0:0y0G0t0Z0#0%0)0#0n0L0A0F0L0s0C0v0J0B0g120M0g0G0L0g0N1G0g0B0.050U0E0N0s1n0$0(011F1H1J1H0B1P1R1N0B0l1c1B0Z0~0j0v0F0n0)0i011T1p010w0W0s0n0F0P0s1N1/1;1_1V1|1R1 210.0a0M0d0l0q0v0q0j0G110n0M0S1-0l0l0s0f2m14240n1c0m1B2z1)1+1*1O0y261q0G0n1~2j1N1k1m0!1U2J2L0n0q2P1N0v2s1c2x2z2$0;1:2n2R1`2V0l0^0N1N0F1E2s0w0)030r0r0f2W0s1J2U0q0C0O0C0u0.0u140F2%2*0/2)252,1V2.2:2=2@0s2_012{2}2 312M340C1@040i3a3c1;3e2x2I013j0F2;1c2?0g2^2`2|2~0S3t2V3v0K0.0K3A2w3d0:3E3h0)3H3J053L3N3p3P3s2K3u350I0.0I3Y153!3f2+1o3i0q2/3I3l3M3n3O3r3R3;3T350H0.0H3`2$3#2*3F3)443-3q3Q304a33350o0.0o4g3d1f2!142P2C0y1+2H3%014p2O1l1c2Z0s2#4y3{3C054p4P250G0y0)2|2x3v373K0M4X4Z484q324$1^2a0s4+4p3S4s361N0m3b3}3F0p0.0S0w3Z3C0M4~4H0n0w0.0=2l0s2}0_2s0j3z4R2y573 0)0-040x545l3$5n3G0.0N121t0s0A0l5s4V3~2S015p0k5E565u5H0n0.0n0E5E5m5H5p0b0Q5E0:5k5F4)4Y014!2*3v3x3+5%4?3:4.351@0M4;5:495=3w4{3b0M605M4j4H50040w415L5U2-0.0G695N1`0q0c6c135#623g5v5R0.0l1;1w5T6f1V5p5r5#6a3i5Q5S6z6v5o0.5X5Z6u4j4*5)0r4#353V4(6M3/5{3=0C3V5^204=6N4@4r3U5~04616,6m5G6b040f5g0s6K6n5V0.6y2(6F5w045y1s0A5B5D6E635v5W6J764W5(5*1;3v3@6S7d4,4^7g4:6!5`4-6W7h3A6-616A3(0.0A0v6^6/6w6{0b5L6.3F0f4%030M1R0t0s0l7M1S0j0B0J5y7a6}6L7j6P0C4d7i7p7l4c7n217)6(7+2z5 7u7H580.670l0c0_0y7B3F6x7 4H0P5a040u0z4f7b7C0)0q0.0D826o5x5z735C8g6`047F5#5!7Y7c4+7#4u7(6$5;6W4u6Z7-8y6V4b0C8w7t7?7w6 0y6h6k8s8b5I7E7G8L7J0.7L0E0V0%7P7R0M7T7V0q7X4Q4U4z4O4B4L140B4E8?2F2A0F1Q8:0m4C5!0S0U0W0j04.

Votre tracé sera ici

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

Complétez le code de la fonction carre_de_carres qui prend en paramètres longueur et qui trace un carré composé de 4 carrés, tous de longueur longueur. La tortue rouge indique la position de départ et d'arrivée et les tortues bleues indiquent les positions intermédiaires.

Indication

Pour tracer le grand carré, il faut dessiner les 4 petits carrés. Les points de départ des petits carrés correspondent aux coins du grand carré.

###(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)wP=c0hS2sr/nko_ev19pf(du8t-*bai54y3g lm:050y0r0B0F0G0N0k0M0f0N0F0k0k0e010B0G0v010406050k0z0O0O0F0l0J040i0p0N0z0*0p0n050m0;0?0^0`0/0v04051a131d0m1a0/0y0G0s0Y0!0$0(0!0n0L0z0F0L0r0C0v0J0B0h110M0h0G0L0h0N1F0h0B0-050T0E0N0r1m0#0%011E1G1I1G0B1O1Q1M0B0l1b1A0Y0}0k0v0F0n0(0j011S1o010w0V0r0n0F0O0r1M1.1:1^1U1{1Q1~200-0a0M0d0l0p0v0p0k0G100n0M0R1,0l0l0r0f2l13230n1b0m1A2y1(1*1)1N0y251p0G0n1}2i1M1j1l0Z1T2I2K0n0p2O1M0v2r1b2w2y2#0:1/2m2Q1_2U0l0@0N1M0F1D2r0w0(030q0q0f2V0r1I2T0p0C0A0C0t0-0t130F2$2)0.2(242+1U2-2/2;2?0r2^012`2|2~302L330C1?040j393b1:3d2w2H013i0F2:1b2=0h2@2_2{2}0R3s2U3u0K0-0K3z2v3c0/3D3g0(3G3I053K3M3o3O3r2J3t340I0-0I3X143Z3e2*1n3h0p2.3H3k3L3m3N3q3Q3:3S340H0-0H3_2%1g2Z132O2B0y1*2G3$013P211b4k1c4i4g2%4r2!2)0M0G0y0(2{2w3u363J4C4E013.48314I1@290r4F472 4932344J3X3#3~0(0o0-0R0w3Y3B0M3|3E0n0w0-0f0^2r0q0R2|4`0r0k4.2x4;4p0,040x524A3f4(3F0-0N111s0r0z0l59545c560b0P590/3`3B4;4D4V4H343w3*4L4V4r3R4Z3v4S1 4U4N4W5F3u5A0m3a0M5S4:4%2R014*040w40595U4B4p0n0-0G5$5m5W0p0c5+125t2x5%5b5W0n0E0-0l1:1v5l5V1_56585@5a3}5W0O0G3@625(5n0-5p5r6e245w5L5y0C3U4K6m4O4X4Q343U0M4T5D3/6v6p1M5Q045T6H5_692,4^4 6k6K1U656O4=5e5g0z5i5k675.646h6j6Z3D6s0q6o3?6r4M6t5N3=5I206A4P3;0C6-3z6I5T6!3h0-5!0l0c0^0y6S550-662%631U6b0-3y6(6f5/0-0D785c5*045f1r6W5j7n5W5o6%7c4B6*6o4c6.6^6u6`4c6y5J7F6;0C7D6}6~6J6T7q3m0B7v6#577W7e6c040u0g7Z0(7x675s4g4z1e4i0m4u2z4m132C7_0F1P0r2y4k5s0R0T0V0k04.

Votre tracé sera ici