Aller au contenu

Boucles finies for⚓︎

L'instruction range()⚓︎

progression d'entiers

L'instruction range() renvoie une progression d'entiers :

  • range(fin) renvoie la progression croissante de fin entiers consécutifs partant de 0 jusqu'à fin-1.
  • range(debut, fin) renvoie la progression croissante de fin-debut entiers consécutifs partant de debut jusqu'à fin-1.
  • range(debut, fin, pas) renvoie la progression d'entiers : debut, debut+pas, debut+2*pas , debut+3*pas etc. strictement inférieurs à fin.

range()

Les plus courantes :

  • range(5) renvoie la progression de 5 entiers consécutifs : 0, 1, 2, 3, 4, (et pas 5 )
  • range(3,8) renvoie la progression de 8-3=5 entiers consécutifs : 3, 4, 5, 6, 7, ( et pas 8 )

Plus rares :

  • range(10,5,-1) renvoie la progression décroissante des entiers : 10, 9, 8, 7, 6 ( et pas 5 )
  • range(-3,6,2) renvoie la progression croissante des entiers : -3, -1, 1, 3, 5 ( et pas 7 )

Je vérifie ma compréhension (bouton en bas pour recommencer)

  1. En langage Python lors de instruction for k in range(2,7) la variable k prend les valeurs :

    • 2 et 7

    • 2; 3; 4; 5 et 6

    • 2; 3; 4; 5; 6 et 7

    • 2; 3; 4; 5; 6; 7 et 8

  2. En langage Python lors de instruction for k in range(5) la variable k prend les valeurs :

    • 0; 1; 2; 3 et 4

    • 0; 1; 2; 3; 4 et 5

    • 1; 2; 3 et 4

    • 1; 2; 3; 4 et 5

  3. La variable k prend toutes les valeurs entières de \(0\) à \(33\) si on utilise :

    • for k in range(0,33)

    • for k in range(0,34)

    • for k in range(33)

    • for k in range(34)

  4. En langage Python, lors de l'instruction for k in range(2,29), la variable k prend

    • 29 valeurs

    • 28 valeurs

    • 27 valeurs

    • 26 valeurs

Les répétitions à l'aide de for⚓︎

parcourir une progression d'entiers

L'instruction for ... in ... parcourt la progression et permet d'exécuter de manière répétée un bloc indenté :

syntaxe d'une boucle finie
1
2
3
4
for entier in  range(<paramètres de la progression>) :      # (1)!
    action1() 
    action2(entier)     # (2)!
action3()       # (3)! 
  1. ⚠ Le in et les deux points sont obligatoires

  2. ⚠ action1() et action2() sont exécutées pour chaque nouvelle valeur de entier

  3. ⚠ action3() sera faite après la fin des répétitions.

Premiers exemples

Les lignes indentés suivants l'instruction for sont les lignes de la boucles.

La variable signalée après l'instruction for est un indice, on utilise parfois la lettre i.

Essayer chacun des exemples

La boucle de la ligne 1 réalise 3 boucles, et celle de la ligne 7 en fait 5.

On utilise end="" pour supprimer le retour de ligne par défaut de l'instruction print().

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

L'indice i de la boucle de la ligne 1 prend les valeurs \(1\), \(2\), \(3\) et enfin \(4\).

L'indice j de la boucle de la ligne 6 prend les valeurs \(3\), \(4\), \(5\) et enfin \(6\).

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

En précisant le paramètre pas, on peut produire des progressions d'entiers non consécutifs croissants ou décroissants !

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

Importance de l'indentation

Dans chacun des exemples ci-dessous, l'indice i de la boucle de la ligne 1 prend les valeurs entières \(0\), à \(5\).

  • La boucle de la ligne 3 est exécutée à la suite de la boucle de la ligne 1.

  • La ligne 4 est exécutée 5 fois. La ligne 5 est exécutée 1 fois.

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

  • Les lignes 2 à 5 font partie de la boucle de la ligne 1 et seront exécutées à chaque passage de la première boucle.
  • La ligne 4 est exécutée un total de 30 fois. La ligne 5 est exécutée 6 fois.

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

Exercice 1
  1. Analyser le script-ci dessous. Vous pouvez lire le script décrit en langage naturel

    1
    2
    3
    for i in range(1,36) :
        if 35 % i == 0 :
            print(i)
    
    1
    2
    pour i allant de 1 à 35
        si le reste de la division de 35 par i est nul, alors imprimer i
    
  2. Corriger les erreurs dans le script ci-dessous et exécuter le.

  3. Modifier le script pour afficher les diviseurs de \(37\). Que peut-on dire du nombre \(37\) ?
  4. Modifier le script pour déterminer si le nombre \(4891\) est premier.

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

Solution
  1. Le script affiche les diviseurs de 36
  2. Attention aux indentations, aux : ainsi qu'aux paramètres de l'instruction range().
  3. Il faut changer la ligne 1 et la ligne 2
    1
    2
    3
    for i in range(1,38) :
        if 37 % i == 0 :
            print(i)
    
    \(37\) est un nombre premier, ses seuls diviseurs sont \(1\) et \(37\).
  4. Il faut utiliser le script :
    1
    2
    3
    for i in range(1,4892) :
        if 4891 % i == 0 :
            print(i)
    
    \(4892\) n'est pas premier.

Principe accumulateur⚓︎

compteurs et accumulateurs dans Python

Un compteur est une variable à laquelle on ajoute 1 à chaque répétition d'une boucle.
Le compteur est incrémenté à chaque répétition d'une boucle.

Un accumulateur est une variable à laquelle on doit ajouter une valeur (ou multiplier par une valeur, ou une combinaison des deux opérations) à chaque répétition d'une boucle.

un compteur simple

Le script ci-dessous défini une fonction nbrdediviseur() de paramètre nbr et qui renvoie la valeur finale de la variable compteur.

  1. Exécuter le script.
  2. Vérifier que l'instruction nbrdediviseur(37) renvoie \(2\).
  3. Que renvoie l'instruction nbrdediviseur(738821) ? Que peut-on en déduire ?

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

un accumulateur pour calculer une somme

L'appel somme() utilise une boucle pour renvoyer l'image la somme \(0+1+2+3+4+\ldots+98+99\).

  1. Exécuter le script ainsi que l'appel somme()
  2. Modifier le script pour que l'appel somme() renvoie la somme des carrés : \(1+2^2+3^2+4^2+\ldots+99^2\).
  3. Modifier à nouveau le script pour que l'appel somme() renvoie la somme des carrés : \(1^2+2^2+3^2+4^2+\ldots+99^2+100^2\).
  4. Valider le script.

###(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 : 5/5

.1280139mt;)v3(à *o0gr/=sedkiwcf:nhpulPyabS4125+050u0t0d0I0w0F0s0k0y0F0I0s0s0r010d0w0D010406050s0E0c0c0I0p0H040K0m0F0E0*0m0B050q0;0?0^0`0/0D04051a131d0q1a0/0u0w0g0Y0!0$0(0C0w0o0C0F1r0C0d0-050T0J0F0t1m0#0%011q1s1u1s0d1A1C1y0d0p1b0d0C0Y0}0s0D0I0B0(0N011E1o010z0V0t0B0I0c0t1y1X1Z1(1G1+1C1.1:0-0a0k0G0p0m0D0m0s0w100B0k0R1V0p0p0t0y28131?0B1b0q1T2l1Q1S1R1z0u1^0(1u0B1-251y1j1l0Z1F2v0w2x0B0m2B1y0D2e1b2j2l2P0:1Y292D1)2I0p0@0F0-0M2i2T0.2S1@2V1G2X2Z0-0N2%1Z2)2j2u012.0I2!040h2=2k0/2^2,0(2{2}0L302@2T2_360-0O391e2N132B2o0u1S2t34010y2J1;1b3k1c3i2R142(053r0R2O3b3p0v0-0R0z390k2*2U1n2-0z0-0s0m0?0t3g333P0(0,040i0f3L3N2_3#0A39060k3:3M3Y2E2`0-0I0y0y0=0E0!0d0t0E0p3)3?1)0m0-0r443F3Z010c0w0-0n3L3;4j4k4l4k3*3p0y0M0-030k2G270w2|0w0s0I282a1D0F02030h0b0e3`3|0c3~4B41433z2?3/3;4o4c3H040z0m4R2P3=4b3@0B0-0w4a2+4c0m0x4,124S2k4(4/4*0J0-0p1Z0o3W4^3E4{1)3#0i3X4)1)4e2#0n2$534W3@3#3(534`3O5i0-3-5l4m5s4V451G4q4s4u0k2M1-2t1C0X0g2|4Q0X0n0k0j0k0b0b3M534U4l5h2W3_3{3}3 4Q4.5n46485#3c5W4M4O40425)3p47040P5:4c4+044-5g5v0(5=0l0l59551G5c042;5r5u5a5w4r044t0I0E0o1:0B400p0k4L5Y4P424D5z3.4j5U1G4Y2e0d424@4%6w355+6p5.4$2(0/0q3C0t2l5B2l3v2m3m132p6V0I1B6O3j1k2)0q0R0T0V0s04.
Exercice 2

Compléter le script de la fonction d'appel produit() qui renvoie le produit \(1\times 2\times 3\times 4\times \ldots \times 50\).

###(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 : 5/5

.1280139mt;)v3(à ,o*0gr/=sedkiwcf:nhpulPyabS4125050v0u0d0J0x0G0t0k0z0G0J0t0t0s010d0x0E010406050t0F0c0c0J0q0I040L0m0G0F0*0m0C050r0;0?0^0`0/0E04051a131d0r1a0/0v0x0g0Y0!0$0(0D0x0p0D0G1r0D0d0-050T0K0G0u1m0#0%011q1s1u1s0d1A1C1y0d0q1b0d0D0Y0}0t0E0J0C0(0O011E1o010A0V0u0C0J0c0u1y1X1Z1(1G1+1C1.1:0-0a0k0H0q0m0E0m0t0x100C0k0R1V0q0q0u0z28131?0C1b0r1T2l1Q1S1R1z0v1^0(1u0C1-251y1j1l0Z1F2v0x2x0C0m2B1y0E2e1b2j2l2P0:1Y292D1)2I0q0@0G0-0N2i2T0.2S1@2V1G2X2Z0-0O2%1Z2)2j2u012.0J2!040h2=2k0/2^2,0(2{2}0M302@2T2_360-0P391e2N132B2o0v1S2t34010z2J1;1b3k1c3i2R142(053r0R2O3b3p0w0-0R0A390k2*2U1n2-0A0-2M2J0F273g333P0(0,040i0f3L3N2_3#0B39060k3:3M3Y2E2`0-0J0z0z0=0F0!0d0u0F0q3)3?1)0m0-0s443F3Z010c0x2#3L3;4i4j4k4i3*3p0z0N0-030k2G270x2|0x0t0J282a1D0G02030h0b0e3`3|0c3~4A41433z2?3/3;4n4c3H040A0m4Q2P3=4b3@0C0-0G0m234a2+4c0m0y0-2G4/3O4)0K0-0q1Z0p0u3X4(1)3#0i524:3@4e4g4R2k4V3@3#0l574`1)5a040P2$5c3E58540-3(5p4%5r1G3,4h4l5B5e1)4p4r4t0k2M1-2t1C0X0g2|4P0X0N0k0j0k0P0o3M5p4T4k5D2-3_3{3}3 4P4_2_4704495v5$355(4L4N40425-3p5/0n5}4c4*040x5A5w5j1G5F044s4M0G0*0E1u0u0q0k4E4G4I4K5*4O425I0^5H3.4m451G4X2e0d42125=6x5@046o6d6q4#2(0/0r3C0u2l5J2l3v2m3m132p6X0J1B6Q3j1k2)0r0R0T0V0t04.
Exercice 3

Compléter le script de la fonction d'appel sominv() qui renvoie la somme \(1+\dfrac{1}{2}+\dfrac{1}{3}+\dfrac{1}{4}+\ldots+\dfrac{1}{20}\)

###(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 : 5/5

.1280139mt;)v3(à ,o0gr/=sedkiwcf:nhpulPyabS4125+050u0t0d0I0w0F0s0k0y0F0I0s0s0r010d0w0D010406050s0E0c0c0I0p0H040K0m0F0E0*0m0B050q0;0?0^0`0/0D04051a131d0q1a0/0u0w0g0Y0!0$0(0C0w0o0C0F1r0C0d0-050T0J0F0t1m0#0%011q1s1u1s0d1A1C1y0d0p1b0d0C0Y0}0s0D0I0B0(0N011E1o010z0V0t0B0I0c0t1y1X1Z1(1G1+1C1.1:0-0a0k0G0p0m0D0m0s0w100B0k0R1V0p0p0t0y28131?0B1b0q1T2l1Q1S1R1z0u1^0(1u0B1-251y1j1l0Z1F2v0w2x0B0m2B1y0D2e1b2j2l2P0:1Y292D1)2I0p0@0F0-0M2i2T0.2S1@2V1G2X2Z0-0N2%1Z2)2j2u012.0I2!040h2=2k0/2^2,0(2{2}0L302@2T2_360-0O391e2N132B2o0u1S2t34010y2J1;1b3k1c3i2R142(053r0R2O3b3p0v0-0R0z390k2*2U1n2-0z0-0s0m0c2G0g3g333P0(0,040i0f3L3N2_3$0A39060k3;3M3Z2E2`0-0I0y0y0=0E0!0d0t0E0p3*3@1)0m0-0r453F3!013V0-0n3L3=4j4k4l4j3+3p0y0M0-030k2G270w2|0w0s0I282a1D0F02030h0b0e3{3}0c3 4B42443z2?3:3=4o4d3H040z0m4R2P3?4c3^0B0-0F0m234b2+4d0m0x0-2G4:3O4*0J0-0p1Z0o0t3Y4)1)3$0i534;3^4f042$4S2k4W3^3$0l584{1)5b0N5d2R461G3$3)5e044(59550-3.5v4m5D3;5g1)4q4s4u0k2M1-2t1C0X0g2|4Q0X0M0k0j0k0N0n3M5v4U4l5G2-3`3|3~404Q4`2_48044a5C5)355+4M4O41435:3p5=0P604d5b5p3A5r0(5=0q5k3c4,4.0D4i5F693q4r044t4N0F0*0D1u0t0p0k4F4H4J4L5-4P435L0^5K3/4n6k4Y2e0d43125^6k4+046A6p6C4$2(0/0q3C0t2l5M2l3v2m3m132p6,0I1B6#3j1k2)0q0R0T0V0s04.
Exercice 4

Compléter le script de la fonction d'appel s() de paramètre n qui renvoie la somme \(1+\dfrac{1}{2}+\dfrac{1}{2^2}+\dfrac{1}{2^3}+\ldots+\dfrac{1}{2^n}\)

###(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 : 5/5

.1280139mt;)v3(à ,o*0gr/=sedkiwcf:nhpulPyabS4125+050v0u0d0J0x0G0t0k0z0G0J0t0t0s010d0x0E010406050t0F0c0c0J0q0I040L0m0G0F0+0m0C050r0=0@0_0{0:0E04051b141e0r1b0:0v0x0g0Z0#0%0)0D0x0p0D0G1s0D0d0.050U0K0G0u1n0$0(011r1t1v1t0d1B1D1z0d0q1c0d0D0Z0~0t0E0J0C0)0O011F1p010A0W0u0C0J0c0u1z1Y1!1)1H1,1D1/1;0.0a0k0H0q0m0E0m0t0x110C0k0S1W0q0q0u0z29141@0C1c0r1U2m1R1T1S1A0v1_0)1v0C1.261z1k1m0!1G2w0x2y0C0m2C1z0E2f1c2k2m2Q0;1Z2a2E1*2J0q0^0G0.0N2j2U0/2T1^2W1H2Y2!0.0O2(1!2*2k2v012/0J2#040h2?2l0:2_2-0)2|2~0M312^2U2`370.0P3a1f2O142C2p0v1T2u35010z2K1=1c3l1d3j2S152)053s0S2P3c3q0w0.0S0A3a0k2+2V1o2.0A0.0t3h343Q0)0-040i3V3G3X2{0.133A2@3O2`3Z0f3M3.3q3Z0B3a060k3|3N3W2F3)040J0z0z0?0F0#0d0u0F0q3=3 1*0m0.0s4d3%400c0x0.0o3M3}4r4s4t4r3?3(0z0N0.030k2H280x2}0x0t0J292b1E0G02030h0b0e43450c474J4a4c3,324v4e1H3I040A0m4Z2Q3~4k2X0.0G0m244j2,3(0m0y0.2H4_3P400C0K0.0q1!0p0u3$4`403Z3#4!3F5b1*4m2$5a511*3Z0l5l3d3*5q3q4g040Q5t3(5j042%5f4w5c0.3;5f4/5h1H3^4q4u5O5E1*4y4A4C0k2N1.2u1D0Y0g2}4Y0Y0N0k0j0k0O0o3N5f3{4u5Q2.0.4T46484Y502`5v4i5I5?365^445`4X4b5}5u0.5x614%0)5A5C2S6e015v0r5y4l4n042=5D6j5v0n0n6n4;044?4^5I3}623r4z044B4V0G0+0E1v0u0q0k4N4P4R5_6J676P1Z6P0x5/2Q5;3|6E4)2f0d4b3+4.6E0C644U4W49685:143D0u2m5W2m3w2n3n142q740J1C6}3k1l2*0r0S0U0W0t04.
Exercice 5 : Ascii Art
  1. Analyser les scripts des fonctions carre(), triangle() et diagonale().
  2. Exécuter le script ci-dessous.
  3. Qu'affiche les appels carre(5), triangle(5) et diagonale(5) ?

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

  4. Proposer un script d'une fonction d'appel triangle1() et de paramètre n tel que l'appel triangle1(5) affiche :

    >>> triangle1(5)
    @@@@@
     @@@@
      @@@
       @@
        @
    

  5. Proposer un script d'une fonction d'appel diagonale2() et de paramètre n tel que l'appel diagonale1(5) affiche :

    >>> diagonale1(5)
          /
         /
        /
       /
      /
    
    ###(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 : 5/5

    .128013m@t;)v3( *o,0gr7/=sedkiw-6cf:nhpulPyabS41q25050v0u0d0L0x0I0t0j0B0I0L0t0t0s010d0x0G010406050t0H0b0b0L0p0K040N0l0I0H0-0l0E050r0@0_0{0}0=0G04051d161g0r1d0=0v0x0g0#0%0)0+0F0x0o0F0I1u0F0d0:050W0M0I0u1p0(0*011t1v1x1v0d1D1F1B0d0p1e0d0F0#100t0G0L0E0+0R011H1r010C0Y0u0E0L0b0u1B1!1$1+1J1.1F1;1?0:0a0j0J0p0l0G0l0t0x130E0j0U1Y0p0p0u0B2b161_0E1e0r1W2o1T1V1U1C0v1{0+1x0E1:281B1m1o0$1I2y0x2A0E0l2E1B0G2h1e2m2o2S0?1#2c2G1,2L0p0`0I0:0P2l2W0;2V1`2Y1J2!2$0:0R2*1$2,2m2x012;0L2%040h2^2n0=2{2/0+2~300O332`2W2|390:0S3c353e372}0l2#2 0:0A3j2-2X1q2:3o2=040q3c1h2Q162E2r0v1V2w3m0B2M1@1e3G1f3E2U172+053M0U2R3l3w0+0w0:0U0C3c0j3u3f0C0:1T0x1$0o1F2)3U2_3-3m0/040i3C363#2}0:153`2n3|433~0f3+492H013~0D3+0j4k4l4m0j064m4e1,3%040C3o4d424f0E0:0x4x3!4f0l0y4B462S3,4y2Z0M0:0p3?0u414E1,3~40473Z2.434A044J3V4M1J4b4D4!4f4h3j4n4l4r2:4O042P2J0d4T4.4V0:4X2U4*0+0t1)04020Q0H0l0d0e0j595b5d4~3v4F0:0k5j3f4B5o3}0:0m4-5k1,560:5g5c0e0c5A5i4Y4@0+0l5m5r4a515L4z455O1,5J040z5R2:5q5G544g0:4c4Y4L4U4+5$3+063k4 1J4t3)5v3.3(3=0o142 0u3_535*0+4W5W385Q5Z615#045%4K5H694i5(4=4n4p4?5!4t4v0p5@3m4$4C5(6d4G4I6p4#4_4Q0E0o4S675:625N6E5w5X4%64695u6I2|0b0x0:0n6M3~6O606F015T5V6P3m6R2(6V5,6t5!4:4Y6j4=6d0E4_4{0E4}6%5M3 6M5y585a5B5f725F6Y6J5I5K6|4/6H775p046s7e5s6a6X4)68705E0e0r7p6+6a3t0r3X0u2o2P7y3F1n3H2r2u2p0L1E7B0r3G0=7L0V0X0Z04.
  6. Défi : propoer le script d'une fonction d'appel pyramide() et de paramètre n tel que l'appel pyramide(10) affiche les 10 lignes suivantes :

    >>> pyramide(10)
             *
            ***
           *****
          *******
         *********
        ***********
       *************
      ***************
     *****************
    *******************
    
    ###(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 : 5/5

    .128013mt;)v3( *o,gr/=sedkiw-cf:nhpulPyabS1q2+050s0r0c0H0u0E0q0i0x0E0H0q0q0p010c0u0C010406050q0D0b0b0H0n0G040J0k0E0D0(0k0A050o0/0;0?0^0-0C040518111b0o180-0s0u0f0W0Y0!0$0B0u0m0B0E1p0B0c0+050R0I0E0r1k0Z0#011o1q1s1q0c1y1A1w0c0n190c0B0W0{0q0C0H0A0$0M011C1m010y0T0r0A0H0b0r1w1V1X1$1E1)1A1,1.0+0a0i0F0n0k0C0k0q0u0~0A0i0P1T0n0n0r0x26111;0A190o1R2j1O1Q1P1x0s1?0$1s0A1+231w1h1j0X1D2t0u2v0A0k2z1w0C2c192h2j2N0.1W272B1%2G0n0=0E0+0K2g2R0,2Q1=2T1E2V2X0+0M2#1X2%2h2s012,0H2Y040g2:2i1c2L112z2m0s1Q2r2*0$0x2H1/19331a312P122$053a0P2M2R2@0t0+0P0y2~040i2(2S1l2+0y0+0C0G0n1-0u0P3u3x2@0*040h3J2?382^0+103i2;3K3R3M0e3u3w3Q3z0$3M0z3#0i060i3/3$3o3R3q040y0k0n3#3X3(3S040u3|3%2C010k0v0+2E423=3~0A0I0+3F0A0m0r3P4b443M3O3V2 432U3T4k2)3~3Z4a4v4m0+3+4p0,3:4F3;4z2U4e042K2E0c4u3y4A3N4y4Q1%0q1!04020L0D0k0c0d0i4Z4#4%4P2@0k0+0j4-3Y0+4o2P4r2+4t4D3}444/040w4=4c48534R0e0l4T2@4W0+4*4$0d0j5e4,4}4`0$504;5k4l1%4n561%0b0u2Z5t1E500N5y0$5v2.5C454:5G0A555p4I1E4x4D4H4U5O0+3!4D0-0o3l0r2j2K5!321i342m2p2k0H1z5%0o335X0P0R0T0q04.