Les polygones

Le but de cette activité est de dessiner des polygones réguliers convexes grâce au module turtle.

Un polygone régulier est un polygone à la fois équilatéral (tous ses côtés ont la même longueur) et équiangle (tous ses angles ont la même mesure).

Un polygone régulier est convexe si ses côtés ne se croisent pas.

Le tableau ci-dessous montre les fonctionnalités du module turtle utilisées :

Fonctionnalité Description
forward(100) fait avancer la tortue de 100 pixels
left(45) fait tourner la tortue de 45° vers la gauche
right(90) fait tourner la tortue de 90° vers la droite
color('red') teint la couleur du pinceau en rouge
Exemple

L'exemple suivant permet de tracer un carré (polygone régulier à 4 côtés) :

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

Votre tracé sera ici

Les questions suivantes peuvent être traitées de manière indépendante. Les fonctions précédentes seront chargées en mémoire.

1. Construire un triangle équilatéral

Créer la procédure triangle_equi qui prend en paramètre la longueur de ses côtés longueur et trace un triangle équilatéral.

Aide

On pourra suivre l'algorithme suivant, écrit en langage naturel :

Fonction triangle_equi(longueur) :
    Répéter 3 fois :
        avancer de longueur
        tourner à gauche de 120°

###(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
Évaluations restantes : 10/10

.128013s3o_bcdufvg/0lyq napSr1me(P2=4:twkih)050h0z0G0t0J0o0b0r0g0o0t0b0b0D010G0J0u010406050b0i0y0y0t0w0p040v0d0o0i0$0d0s050m0-0/0;0?0+0u040 1605190m191b160+0h0J0k0U0W0Y0!0K0J0l0K0o1p0K0G0)050P0f0o0z1k0X0Z011o1q1s1q0G1y1A1w0G0f0d0h0?1x0w170G0K0U0_0b0u0t0s0!0C011C1m010j0R0z0s0t0y0z1w1!1$1+1E1.1A1;1?0)0a0r0B0w0d0u0d0b0J0|0s0r0N1Y0w0w0z0g2b0 1_0s170m1W2o0G1U1T1V0h1{0!1s0s1:281w1h1j0V1D2y0J2A0s1Q1i1w0u2h172m2o2S0,1#2c2G1,2L0w0:0o0)0x2l2W0*2V1`2Y1E2!2$0)0C2*1$2,2m2x012;0t2%040c2^2n0+2{2/0!2~300E332o2P0z2o2E2r0h2v2|0g1Q1@173h1a2Q2-2n3c053m0N2R2W2|0I0)0N0j3v361l1E0H0)0r3G3A372}0j0)2s0J1$0l1A0e0z0q0i0J3N2.3I0!0(040A3%2X3)2}0)0o0}0l0i0z0i0w3.2|3+0L0F3c060r443M3H2H013C040j0d3|102+463O3:0s0)3$4f2_4h3(480d3K042J3c4p3/480s0f0)0w3V0z3}3P3+3-4n3u471,0y0J0)324K3z4q1,3 414S43454!3t2|4k4b4d0H0;0h4G3:4I4.4z3=3@3_3{4;4V0)0L424!4#4M2:3=0z0j0G4`1E4:4S4$3P4O2(0C0n573*4|420 3x3f183s0m3q2p3j0 2s2r1P1R2r0t1z5n5q1i2,5q0O0Q0S04.
Votre figure

Votre tracé sera ici

2. Calcul de l'angle de construction

On souhaite maintenant construire un polygone régulier quel que soit le nombre de ses côtés. La tortue doit donc, dans chaque cas, tourner d'un angle différent. On appelle angle de construction cet angle.

Créer une fonction angle_poly qui renvoie l'angle de construction en fonction du nombre de côtés n du polygone.

Aide 1

La somme totale des angles de construction d'une figure convexe est égale à \(360°\).

polygone

Aide 2

On pourra suivre l'algorithme suivant, écrit en langage naturel :

Fonction angle_poly(n):
    angle = 360 / n
    Renvoyer angle

###(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
Évaluations restantes : 10/10

.128013s3o_bcdufvg/0ly napSr1me(P2=:twkih)6050h0y0E0s0H0o0b0q0g0o0s0b0b0C010E0H0t010406050b0i0x0x0s0v0p040u0d0o0i0#0d0r050m0,0.0:0=0*0t040~1505180m181a150*0h0H0k0T0V0X0Z0I0H0l0I0o1o0I0E0(050O0f0o0y1j0W0Y011n1p1r1p0E1x1z1v0E0f0d0h0=1w0v160E0I0T0^0b0t0s0r0Z0B011B1l010j0Q0y0r0s0x0y1v1Z1#1*1D1-1z1:1=0(0a0q0A0v0d0t0d0b0H0{0r0q0M1X0v0v0y0g2a0~1^0r160m1V2n0E1T1S1U0h1`0Z1r0r1/271v1g1i0U1C2x0H2z0r1P1h1v0t2g162l2n2R0+1!2b2F1+2K0v0/0o0(0w2k2V0)2U1_2X1D2Z2#0(0B2)1#2n2O0y2n2D2q0h2u2w010g1P1?162}192P2,2m2@3b330M2Q2V310G0(0M0j3c3g2-1k1D0F0(0q3n3a310r0j0(1#0l1z0e260o0p3v2l310%040z3I3h2.0Z0r0(0}0 2*3w3Q013L0J0D3n060q3)3u3J3Y3j042g0E0i0v3U2R3+3P3q0Z0x0H0(0c0K0n3n3_3p2G010d0(0m433X3{013S043@2*0*0m3e2{17390m372o2 0~2r2q1O1Q2q0s1y4m4p1h2+4p0N0P0R04.
3. Construire un polygone régulier à n cotés

Créer une procédure poly_reg qui construit un polygone régulier en prenant comme paramètres la longueur et le nombre de côtés n.

La fonction angle_poly pourra être réutilisée car déjà chargée en mémoire.

Aide

On pourra suivre l'algorithme suivant, écrit en langage naturel :

Fonction poly_reg(longueur, n) :
    angle = angle_poly(n)
    Répéter n fois :
        avancer de longueur
        tourner à gauche de angle

###(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
Évaluations restantes : 10/10

.128013s3o_bcdufvg/ly napSr1me,(P2=4:twki5h)050h0x0F0r0I0n0b0p0g0n0r0b0b0C010F0I0s010406050b0i0w0w0r0u0o040t0d0n0i0$0d0q050m0-0/0;0?0+0s040 1605190m191b160+0h0I0k0U0W0Y0!0K0I0l0K0n1p0K0F0)050P0f0n0x1k0X0Z011o1q1s1q0F1y1A1w0F0f0d0h0?1x0u170F0K0U0_0b0s0r0q0!0B011C1m010j0R0x0q0r0w0x1w1!1$1+1E1.1A1;1?0)0a0p0A0u0d0s0d0b0I0|0q0p0N1Y0u0u0x0g2b0 1_0q170m1W2o0F1U1T1V0h1{0!1s0q1:281w1h1j0V1D2y0I2A0q1Q1i1w0s2h172m2o2S0,1#2c2G1,2L0u0:0n0)0v2l2W0*2V1`2Y1E2!2$0)0B2*1$2,2m2x012;0r2%040c2^2n0+2{2/0!2~300D332`2W2|390)0J3c182Q0 2E2r0h2v2|0g1Q1@173n1a3l2U102+053s0N2R3e37010H0)0N0j3j361l1E0G0)0p3N3G3P380j0)270n0o0e2h0l3U2.3W010(040z3*2X3,0q0)0n0}0l0i0x0i0u3;2|3.0y3c3T3O2H2}0)0~3A2_2-3=473.0L0E3c060p4l453V473@041$0l1A444d2|0d0)0C4v462Z0)4s1A0e3!0o403H3.3:4b2n4w3H4q4a2U4C1E4g4j4m4n3+473J040j0d3 4O044!4e4D040I4B4o1,0d3R4;4T2+4.3f0f0)0u4s0x4K3,4M554p49581,4g4i4,4k4Z4m4Q3?0)4)0u0G0;0h5b4W0)4N4U4@2:3^3`3|3~5r0!4X5f5h5i4V383^0x0j0F5C3-5t5O4q4F544,5j4f0)0L4j0 3D0x2o2P5%3m1i3o2r2t2p1P1R2r0r1z5*0m3n0+5`0O0Q0S04.
Votre figure

Votre tracé sera ici

4. Construire un polygone régulier à n cotés colorés

Modifier la procédure poly_reg pour tracer en bleu les polygones dont le nombre de côtés est pair et en rouge les autres.

La fonction angle_poly pourra être réutilisée car déjà chargée en mémoire.

L'opérateur modulo : %

L'opérateur % permet de trouver le reste de la division euclidienne entre deux nombres.

a % b vaut le reste de la division euclidienne de a par b.

Par exemple Le reste de la division euclidienne de \(13\) par \(3\) est \(1\) car \(13=3 \times 4 + 1\)

>>> 13 % 3
1
Aide

On pourra suivre l'algorithme suivant, écrit en langage naturel :

Fonction poly_reg(longueur, n) :
    angle = angle_poly(n)
    Si n est pair alors :
        couleur : bleue
    Sinon :
        couleur : rouge
    Répéter n fois
        avancer de longueur
        tourner à gauche de angle

###(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
Évaluations restantes : 10/10

.128013s3o_8bcdufvg/0ly n7apSr1me,(P2=4:twk%i95h)6050i0A0I0u0M0p0b0r0h0p0u0b0b0F010I0M0v010406050b0j0z0z0u0x0q040w0d0p0j0,0d0s050n0?0^0`0|0;0v04151c051f0n1f1h1c0;0i0M0l0!0$0(0*0P0M0m0P0p1v0P0I0/050V0g0p0A1q0%0)011u1w1y1w0I1E1G1C0I0g0d0i0|1D0x1d0I0P0!0 0b0v0u0s0*0E011I1s010k0X0A0s0u0z0A1C1*1,1;1K1@1G1`1|0/0a0r0D0x0d0v0d0b0M120s0r0T1(0x0x0A0h2h151 0s1d0n1$2u0I1!1Z1#0i210*1y0s1_2e1C1n1p0#1J2E0M2G0s1W1o1C0v2n1d2s2u2Y0=1+2i2M1=2R0x0_0p0/0y2r2$0:2#202(1K2*2,0/0E2:1,2=2s2D012`0u2-040c2~2t0;312^0*34360G39302$323f0/0O3i3b3k3d330d2+350/0R3p2?2%1r2_3u2{040t3z3c3C3e3E3w040f3I3r3K3t3v360N3i1e2W152K2x0i2B320h1W1}1d3#1g3Z2!162;053*0T2X3R2N010K0/0T0k3X3J3|0J0/0r423{2)0k0/2d0p0q0e2n0m482@3S0.040C4j3B3|0s0/0p130m0j0A0j0x4p324m0B3i47432)0/143=2 3A4C0/0Q0H3p0r4T4G492_0/1,0m1G4F4N3s0d0/0F4$4H4X044Z1G0e4d0q4B3s4m4o4L2t4%3S4s044K2!4-0*4m0Q4S4U4~3|3~040M414|044V4k4r4J4^3S4)040L5m3|0z0M2|4,4W0*5o0F4+5g5i4q1=5t0/0o5r1=4m4R5g064U5P5D3l0/3*4u4A5g5a5K0/4{535x010b0y0/001F4x005J1K56584T5Y1K5c0A0Y0A5w5j5Z045M2Y0r5O5Q5@54335T0 3u5:555!6d5(5*04002n0i5/5X685=5N5P5^0*5c0k6c5C6t695d5~5E1K0d455d522;5R3s0s0g0/0x4Z5}6o5%4`6g506I4M6p4P622;65666z506w0x0J0`0i6g6U6S5 4.4u0s4w4y5W5$6?6e04576r666K4 4t0A0k0I6:6f6=6D3e4Y6_4#7c4O703z0n3^0A2u2V7o3!1o3$2x2z2v1V1X2x0u1F7r0n3#0;7E0U0W0Y04.
Votre figure

Votre tracé sera ici

5. Construire un polygone régulier aléatoire

Créer la fonction poly_aleatoire qui construit un polygone régulier avec un nombre aléatoire de côtés. La fonction prend comme paramètre la longueur des côtés et renvoie True si le polygone créé est un triangle, False sinon.

Le nombre aléatoire de côtés sera choisi entre 3 et 10, inclus l'un et l'autre.

La fonction angle_poly pourra être réutilisée car déjà chargée en mémoire.

Fonction randint(a, b)

La fonction randint(a, b) du module random renvoie un entier aléatoire compris entre les nombres a et b compris l'un et l'autre.

🐍 Console Python
>>> from random import randint
>>> randint(0, 5)
3
Aide

On pourra suivre l'algorithme suivant, écrit en langage naturel :

Fonction poly_aleatoire(longueur) :
    n = entier aléatoire entre 3 et 10
    poly_reg(longueur, n)
    Si n égale 3 :
        Renvoyer Vrai
    Sinon  :
        Renvoyer Faux

###(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
Évaluations restantes : 10/10

.128013s3o_bcdufvg/0ly napSr1me,(P2=4:twkih)050h0y0G0s0J0o0b0q0g0o0s0b0b0D010G0J0t010406050b0i0x0x0s0v0p040u0d0o0i0$0d0r050m0-0/0;0?0+0t040 1605190m191b160+0h0J0k0U0W0Y0!0K0J0l0K0o1p0K0G0)050P0f0o0y1k0X0Z011o1q1s1q0G1y1A1w0G0f0d0h0?1x0v170G0K0U0_0b0t0s0r0!0C011C1m010j0R0y0r0s0x0y1w1!1$1+1E1.1A1;1?0)0a0q0B0v0d0t0d0b0J0|0r0q0N1Y0v0v0y0g2b0 1_0r170m1W2o0G1U1T1V0h1{0!1s0r1:281w1h1j0V1D2y0J2A0r1Q1i1w0t2h172m2o2S0,1#2c2G1,2L0v0:0o0)0w2l2W0*2V1`2Y1E2!2$0)0C2*1$2,2m2x012;0s2%040c2^2n0+2{2/0!2~300E332o2P0y2o2E2r0h2v2|0g1Q1@173h1a2Q2-2n3c053m0N2R2W2|0I0)0N0j3v361l1E0H0)0q3G3A372}0j0)270o0p0e2 0y0s0G0d0J2h3N2.3I0!0(040A3(2X3*2}0)0o0}0l0i0y0i0v3/2|3,0L0F3c060q453M3H2H3=040~102+473O3;0d0)0D3c4f3)490r0)0v1$1h0r0G3~3P3,3.4d2_3t2|0x0J0)324A3u481,3,0z4l4C3P4E2(0n4w3;4043464m3:4o3S0_3V2h0l4U494y4+2Z3?3^3`3|4.1E4M4O4K2:0)4c2U4{3+0)0L4X464P3;3C042h0G3|4~4e564#4b4`4g494i040D4k4I044Z4D4F31430 3x3f183s0m3q2p3j0 2s2r1P1R2r0s1z5y5B1i2,5B0O0Q0S04.
Votre figure

Votre tracé sera ici

6. Construire un nombre aléatoire de polygones réguliers

Écrire un programme qui construit des polygones aléatoires de côté mesurant 100 pixels jusqu'à construire un triangle.

Le nombre aléatoire de côtés sera choisi entre 3 et 10, inclus l'un et l'autre.

Fonction randint(a, b)

La fonction randint(a, b) du module random renvoie un entier aléatoire compris entre les nombres a et b compris l'un et l'autre.

🐍 Console Python
>>> from random import randint
>>> randint(0, 5)
3

Les fonctions angle_poly et poly_aleatoire pourront être réutilisées car déjà chargées en mémoire.

Aide

On pourra suivre l'algorithme suivant, écrit en langage naturel :

est_triangle = Faux
Tant que est_triangle est Faux Faire :
    est_triangle = poly_aleatoire(100)

###(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
Évaluations restantes : 10/10

.128013s3o_bcdufvg/0ly napSr1Fme(P2=:twkih)050h0z0F0s0I0o0b0q0g0o0s0b0b0D010F0I0t010406050b0i0y0y0s0v0p040u0d0o0i0#0d0r050m0,0.0:0=0*0t040~1505180m181a150*0h0I0k0T0V0X0Z0J0I0l0J0o1o0J0F0(050O0f0o0z1j0W0Y011n1p1r1p0F1x1z1v0F0f0d0h0=1w0v160F0J0T0^0b0t0s0r0Z0C011B1l010j0Q0z0r0s0y0z1v1Z1#1*1D1-1z1:1=0(0a0q0B0v0d0t0d0b0I0{0r0q0M1X0v0v0z0g2a0~1^0r160m1V2n0F1T1S1U0h1`0Z1r0r1/271v1g1i0U1C2x0I2z0r1P1h1v0t2g162l2n2R0+1!2b2F1+2K0v0/0o0(0w2k2V0)2U1_2X1D2Z2#0(0C2)1#2+2l2w012:0s2$040c2@2m172P0~2D2q0h2u2{0g1P1?163719352T0 2*053c0M2Q2V2{0r0(0z0b0F0e2r0I1#0l1z32040q2,2W1k1D0d0(0D3D3F2`2.0Z0H0g0(0x2~0b0z3D0*3P3I3R0(0G1n3C3k2^3O3q3Q2|3t3v3x0v3z0r3B3Y3,2m3.2-3$013K040D3M3}3E3G2{3S3U3W3|2R3 3H2G010%040E3Z0q4o4g3r3=3w3y3A3+4f493:43464x3#4i3s04260o0p0e2~0z0s0F0d0I2g3D4y414k0A4S4D1+0y0I2%0n0n4X3/4U0(0K3Z0~3n0z2n2O4;361h382q2s2o1O1Q2q0s1y4@0m370*540N0P0R04.
Votre figure

Votre tracé sera ici