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

    🐍 Script Python
    1
    2
    3
    for i in range(1,36) :
        if 35 % i == 0 :
            print(i)
    
    📋 Texte
    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
    🐍 Script Python
    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 :
    🐍 Script Python
    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

.128013sopP5*db30y(f:S=eh)iv+;càm294rlk ganw1tu/050h0r0N0J0u0F0b0H0y0F0J0b0b0q010N0u0d010406050b0O0A0A0J0E0l040p0c0F0O0*0c0K050P0;0?0^0`0/0d04051a131d0P1a0/0h0u0v0Y0!0$0(0s0u0I0s0F1r0s0N0-050T0i0F0r1m0#0%011q1s1u1s0N1A1C1y0N0E1b0N0s0Y0}0b0d0J0K0(0B011E1o010n0V0r0K0J0A0r1y1X1Z1(1G1+1C1.1:0-0a0H0e0E0c0d0c0b0u100K0H0R1V0E0E0r0y28131?0K1b0P1T2l1Q1S1R1z0h1^0(1u0K1-251y1j1l0Z1F2v0u2x0K0c2B1y0d2e1b2j2l2P0:1Y292D1)2I0E0@0F0-0M2i2T0.2S1@2V1G2X2Z0-0B2%1Z2)2j2u012.0J2!040j2=2k0/2^2,0(2{2}0D302@2T2_360-0f391e2N132B2o0h1S2t34010y2J1;1b3k1c3i2R142(053r0R2O3b3p0G0-0R0n3g331n1G0L0-0H3L3F3N350n0-0b0c0?0r3S2+3U010,040m0t393R3M2E3)0-0o39060H3`3/3T3;0K0-0J0y0y0=0O0!0N0r0O0E3.2*2U3(0c0-0q4b3:1)0A0u0-0k3.3{4q4r4s4r4c2_0y0M0-030H2G270u2|0u0b0J282a1D0F02030j0C0x41430A454I484a3z2?3_3{4v3G0-0n0c4Y2P3|3%3~0-0u4i3}1)0c3P042G4?4/2W0i0-0E1Z0I3#4Z2k4%3(3*0m3$4d3;4l2#0k2$563E4~1G3*3-5j4.5d1)3*3@5p4t5w4$4j1G4x4z4B0H2M1-2t1C0X0v2|4X0X0k0H0z0H0C0C3R5j4#4s584:044S44464X4}5r1G4f044h5p5Y2W40425$4W495)2_5,0w5`3p3 4{5c5{0-0g0g623p5f042;5v5y4@5A4y044A0J0O0I1:0K470E0H5#4U5%494K5D3^4q5:1G3H042e0N49125/5z355=4T4V475_5V133C0r2l5F2l3v2m3m132p6Z0J1B6S3j1k2)0P0R0T0V0b04.
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

.128013sopP5*db30y(f:S=eh)iv,;càm294rlk ganw1tu/050h0r0N0J0u0F0b0H0y0F0J0b0b0q010N0u0d010406050b0O0A0A0J0E0l040p0c0F0O0*0c0K050P0;0?0^0`0/0d04051a131d0P1a0/0h0u0v0Y0!0$0(0s0u0I0s0F1r0s0N0-050T0i0F0r1m0#0%011q1s1u1s0N1A1C1y0N0E1b0N0s0Y0}0b0d0J0K0(0B011E1o010n0V0r0K0J0A0r1y1X1Z1(1G1+1C1.1:0-0a0H0e0E0c0d0c0b0u100K0H0R1V0E0E0r0y28131?0K1b0P1T2l1Q1S1R1z0h1^0(1u0K1-251y1j1l0Z1F2v0u2x0K0c2B1y0d2e1b2j2l2P0:1Y292D1)2I0E0@0F0-0M2i2T0.2S1@2V1G2X2Z0-0B2%1Z2)2j2u012.0J2!040j2=2k0/2^2,0(2{2}0D302@2T2_360-0f391e2N132B2o0h1S2t34010y2J1;1b3k1c3i2R142(053r0R2O3b3p0G0-0R0n3g331n1G0L0-0H3L3F3N350n0-2M2J0O273S2+3U010,040m0t393R3M2E3)0-0o39060H3`3/3T3;0K0-0J0y0y0=0O0!0N0r0O0E3.2*2U3(0c0-0q4b3:1)0A0u2#3.3{4p4q4r4p4c2_0y0M0-030H2G270u2|0u0b0J282a1D0F02030j0C0x41430A454H484a3z2?3_3{4u3G0-0n0c4X2P3|3%3~0-0F0c234i3}1)0c3P042G4@4.2W0i0-0E1Z0I0r3$4d3;3*0m572_4l4n4Y2k4$3(3*0w5c3p5e040f2$5g3E4 1G3*3-5s4-581)3*3@5y4s5F5z4v4x044z0u0H2M1-2t1C0X0v2|4W0X0M0H0z0H0f0k3R5s4!4r5i4/044R44464W4~5A1G4f044h5y5+2W40425/4V495=2_5^0g633p3 4|4o3`5|1G4w4y0H4T0F0*0d1u0r0E0H4L4N4P5.6i616o1Y6o5M3^4t4j1G3H042e0N49125{6C355~4S4U47625(133C0r2l5O2l3v2m3m132p6$0J1B6V3j1k2)0P0R0T0V0b04.
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

.128013sopP5db30y(f:S=eh)iv+,;càm294rlk ganw1tu/050g0q0N0J0t0F0b0H0y0F0J0b0b0p010N0t0d010406050b0O0A0A0J0E0k040o0c0F0O0*0c0K050P0;0?0^0`0/0d04051a131d0P1a0/0g0t0u0Y0!0$0(0r0t0I0r0F1r0r0N0-050T0h0F0q1m0#0%011q1s1u1s0N1A1C1y0N0E1b0N0r0Y0}0b0d0J0K0(0B011E1o010m0V0q0K0J0A0q1y1X1Z1(1G1+1C1.1:0-0a0H0e0E0c0d0c0b0t100K0H0R1V0E0E0q0y28131?0K1b0P1T2l1Q1S1R1z0g1^0(1u0K1-251y1j1l0Z1F2v0t2x0K0c2B1y0d2e1b2j2l2P0:1Y292D1)2I0E0@0F0-0M2i2T0.2S1@2V1G2X2Z0-0B2%1Z2)2j2u012.0J2!040i2=2k0/2^2,0(2{2}0D302@2T2_360-0f391e2N132B2o0g1S2t34010y2J1;1b3k1c3i2R142(053r0R2O3b3p0G0-0R0m3g331n1G0L0-0H3L3F3N350m0-0b0c0A2G0u3S2+3U010,040l0s393R3M2E3*0-0n39060H3{3:3T3=0K0-0J0y0y0=0O0!0N0q0O0E3/2*2U3)0c0-0p4c3;1)3!0-0j3/3|4q4r4s4q4d2_0y0M0-030H2G270t2|0t0b0J282a1D0F02030i0C0x42440A464I494b3z2?3`3|4v3G0-0m0c4Y2P3}3(3 0-0F0c234j3~1)0c3P042G4^4/2W0h0-0E1Z0I0q3%4e3=3+0l582_4m042$4Z2k4%3)3+0w5d3p5f0B5h2R4k1G3+3.5i044.591)3+3^5y4t5G3{5k3=4x4z4B0H2M1-2t1C0X0u2|4X0X0M0H0z0H0B0j3R5y4#4s5J2W414345474X4 5B1G4g044i5F5,2-5.4T4V484a5?2_5_0v645p0t2#5o4f0-0P6c4:044=4@5F4$5u0(5L044A4U0F0*0d1u0q0E0H4M4O4Q4S5:4W4a5O0^5N3_4u6n013H042e0N4a125|6M40046D6s6F4,2(0/0P3C0q2l5P2l3v2m3m132p6;0J1B6*3j1k2)0P0R0T0V0b04.
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

.128013sopP5*db30y(f:S=eh)iv+,;càm294rlk ganw1tu/050h0r0O0K0u0G0b0I0z0G0K0b0b0q010O0u0d010406050b0P0B0B0K0F0l040p0c0G0P0+0c0L050Q0=0@0_0{0:0d04051b141e0Q1b0:0h0u0v0Z0#0%0)0s0u0J0s0G1s0s0O0.050U0i0G0r1n0$0(011r1t1v1t0O1B1D1z0O0F1c0O0s0Z0~0b0d0K0L0)0C011F1p010n0W0r0L0K0B0r1z1Y1!1)1H1,1D1/1;0.0a0I0e0F0c0d0c0b0u110L0I0S1W0F0F0r0z29141@0L1c0Q1U2m1R1T1S1A0h1_0)1v0L1.261z1k1m0!1G2w0u2y0L0c2C1z0d2f1c2k2m2Q0;1Z2a2E1*2J0F0^0G0.0N2j2U0/2T1^2W1H2Y2!0.0C2(1!2*2k2v012/0K2#040j2?2l0:2_2-0)2|2~0E312^2U2`370.0f3a1f2O142C2p0h1T2u35010z2K1=1c3l1d3j2S152)053s0S2P3c3q0H0.0S0n3h341o1H0M0.0I3M3G3O360n0.0b3T2,3V010-040m3!2V3$0L0.133A2@2+3,2F3%0.0t3a3S3N3^3(0o3a060I443}3U3^3.040K0z0z0?0P0#0O0r0P0F3|3?2`0c0.0q4l3~1*0B0u0.0k3|454z4A4B4z4m3q0z0N0.030I2H280u2}0u0b0K292b1E0G02030j0D0y4b4d0B4f4R4i4k3;324D4s1H3I040n0c4+2Q463#480.0G0c244r471*0c3Q042H514{2X0i0.0F1!0J0r3+2`3(3*4,3F591H4u2$5h3q3(0x5r3-3/5v3^4o040w5y4t4v042%5l4E3$3(3{5l4`3@1*404y4C5T5J3^4G4I4K0I2N1.2u1D0Y0v2}4*0Y0N0I0A0I0C0k3S5l434C5V2X0.4#4e4g4*585P1H5A4q5N5{2.5}4c5 4)4j624n0.5C674/0)5p5G5D640.0Q6o6l5F2=5I6k015A0g0g6s2{4}4 0d5S5O2`5X044J4%0G0+0d1v0r0F0I4V4X4Z5~6N6d6T1Z6T0u5@2Q5_44680)4;2f0O4j3:4_6-6D4a6b6Z4h6e5^143D0r2m5#2m3w2n3n142q790K1C723k1l2*0Q0S0U0W0b04.
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 :

    🐍 Script Python
    >>> triangle1(5)
    @@@@@
     @@@@
      @@@
       @@
        @
    

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

    🐍 Script Python
    >>> 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

    .128013so6pP-5*db30y(f:S=eh)iv,;cm24r7qlk ganw1tu/@050j0t0P0L0w0H0b0J0A0H0L0b0b0s010P0w0e010406050b0Q0B0B0L0E0n040r0c0H0Q0-0c0M050R0@0_0{0}0=0e04051d161g0R1d0=0j0w0x0#0%0)0+0u0w0K0u0H1u0u0P0:050W0k0H0t1p0(0*011t1v1x1v0P1D1F1B0P0E1e0P0u0#100b0e0L0M0+0C011H1r010p0Y0t0M0L0B0t1B1!1$1+1J1.1F1;1?0:0a0J0f0E0c0e0c0b0w130M0J0U1Y0E0E0t0A2b161_0M1e0R1W2o1T1V1U1C0j1{0+1x0M1:281B1m1o0$1I2y0w2A0M0c2E1B0e2h1e2m2o2S0?1#2c2G1,2L0E0`0H0:0O2l2W0;2V1`2Y1J2!2$0:0C2*1$2,2m2x012;0L2%040l2^2n0=2{2/0+2~300D332`2W2|390:0h3c353e372}0c2#2 0:0d3j2-2X1q2:3o2=040F3c1h2Q162E2r0j1V2w3m0A2M1@1e3G1f3E2U172+053M0U2R3l3w0+0I0:0U0p3C363#010N0:0J3+3!2H2}0p0:1T0w1$0K1F2)3U2_3u2|0/040o3=2.3-0M0:15412n433m450v3c3;3,3@450q4k0J4r4s4t0J064t4g3-3%040p3o4k4y3@4b040w4E4m1,0c3/4I4d2S4l3?2Z0k0:0E3}0t483v4n0:474e3Z494G4c4!440:4j4)4S4+1,4o3j4u4s4F4U0:2P2J0P4.4h4%533-0b1)04020G0Q0c0P0z0J5b5d5f563@0c0:0i5l2Z0:4J4)4}1J450y4K4T1J580:5i5e0z0S5E5k5u4L1J5n045p5K5A0+454(2U5L384-5Q4@5M0:0g5q2:5s5(5S4:5z5!5,044;4R063k5/014A3)5+3.3:5}0M3_041m0L0K142 0t405V5R015T605Y6b5_4i5.4#4^0:4p4=4{4u4w4|5W5`0:4C0E6k3f5*4=5v0+4N5s4Q2+4?6l2:4V044X0M0K4Z5Z6K5:5U3V6u4H6H426u5x5}0B0w0:0m5}6$6S2|5N5%6.3m6(2(6,5-6C6#6n4`6q6D2}6M500M526=3-6e763@5C5a5c5F5h7d5J6h6T015N5P7i4/466f4I6_5;5y791,7b5I0z0R7y7s5=2+0=0R3X0t2o2P7I3F1n3H2r2u2p0L1E7L0R3G7F0U0W0Y0b04.
  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 :

    🐍 Script Python
    >>> 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

    .128013sopP-*db3y(f:S=eh)iv+,;cm2rqlk ganw1tu/050h0q0L0H0t0D0b0F0y0D0H0b0b0p010L0t0d010406050b0M0z0z0H0B0k040o0c0D0M0(0c0I050N0/0;0?0^0-0d040518111b0N180-0h0t0u0W0Y0!0$0r0t0G0r0D1p0r0L0+050R0i0D0q1k0Z0#011o1q1s1q0L1y1A1w0L0B190L0r0W0{0b0d0H0I0$0A011C1m010m0T0q0I0H0z0q1w1V1X1$1E1)1A1,1.0+0a0F0e0B0c0d0c0b0t0~0I0F0P1T0B0B0q0y26111;0I190N1R2j1O1Q1P1x0h1?0$1s0I1+231w1h1j0X1D2t0t2v0I0c2z1w0d2c192h2j2N0.1W272B1%2G0B0=0D0+0K2g2R0,2Q1=2T1E2V2X0+0A2#1X2%2h2s012,0H2Y040j2:2i1c2L112z2m0h1Q2r2*0$0y2H1/19331a312P122$053a0P2M2R2@0E0+0P0m2~3n2)1l1E0J0+0F3u2(2S3x0$0I0m0+0d0k0B1-0t0P3C2?38010*040l3Q3o3S0I0+103i2;3D2@3U0s3u3B3R3F3T0+0n3-0F060F3`3.3Y3:3q040m0c0B3-3)3Z0+0t443/2C010c3z042E493}4b0I0i0+3M0I0G0q3X3w4b3U3W3%2 4a2U3#4r3E4t0+3,4w043|4s1%3U3?4G3_3{4P453:4k3J0B2E0L4B3*0+4v2N4I4C1%0b1!04020C0M0c0L0x0F4-4/4;4Y3S0c0+0g4`3:4u4 4j4A4G4R4b4|040f524z4f5b1E3+0w4h4J1E4*0+4@4:0x0g5n4_554y1E584~5t4i4K4!5e0$0z0t2Z5C4c0+0v5H5E2.5H5w5H3!5d5y5j0$3+5i4(5f4E3u0-0N3l0q2j2K5)321i342m2p2k0H1z5,0N335$0P0R0T0b04.