Aller au contenu

Boucles conditionnées while⚓︎

Une alternative à l'instruction for couramment utilisée en informatique est la boucle while. Avec ce type de boucle, une série d'instructions est exécutée tant qu'une condition est vraie.

syntaxe d'une boucle conditionnée

L'instruction while ... : ... permet d'exécuter un bloc indenté tant qu'une condition est vraie :

Important

Cliquez sur les + et prenez le temps de lire les commentaires !

syntaxe d'une boucle finie
1
2
3
4
5
6
while <test> :              #  (1)!
    action1()       # (2)!
    action2()

"""poursuite du programme""" 
action3()           # (3)!
  1. ⚠ Les : sont obligatoires après if, elif, else, for et while
  2. ⚠ bloc indenté exécuté tant que la condition <test>==True
  3. ⚠ exécutée lorsque <test>==False

Example 1

  1. Exécuter le script ci-dessous.
  2. Modifier la ligne 2 pour que la boucle s'arrète lorsque \(n=2\).

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

Pour une sortie de boucle lorsque \(n\geqslant2\) il faut poursuivre tant que \(n>2\).

Example 2

La racine carrée entière d'un entier naturel \(n\) est le plus grand entier inférieur à \(\sqrt{n}\).

  • isqrt(10)=3, car \(3^2\leqslant 10 < 4^2\).
  • isqrt(25)=5, car \(5^2\leqslant 25 < 6^2\).

La fonction isqrt() prend pour paramètre n et renvoie sa racine carrée entière.

Corriger les 2 erreurs de ce script et valider votre réponse.

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

.128013mzt;)v3( *o0gxr7/{=}ésedkiw-6cf:nhpulPyabS41q25+050y0x0d0O0A0L0w0j0E0L0O0w0w0t010d0A0J010406050w0K0b0b0O0p0N040Q0l0L0K0;0l0H050r0{0}0 110_0J04051h1a1k0r1h0_0y0A0g0)0+0-0/0I0A0n0I0L1y0I0d0@050!0P0L0x1t0,0.011x1z1B1z0d1H1J1F0d0p1i0d0I0)140w0J0O0H0/0U011L1v010F0$0x0H0O0b0x1F1(1*1/1N1=1J1^1`0@0a0j0M0p0l0J0l0w0A170H0j0Y1$0p0p0x0E2f1a1}0H1i0r1!2s1X1Z1Y1G0y1 0/1B0H1@2c1F1q1s0*1M2C0A2E0H0l2I1F0J2l1i2q2s2W0`1)2g2K1:2P0p0~0L0@0S2p2!0^2Z1~2$1N2(2*0@0U2.1*2:2q2B012^0O2+040h2|2r0_2 2?0/32340R372~2!303d0@0V3g393i3b310l2)330@0D3n2;2#1u2@3s2_040q3g1l2U1a2I2v0y1Z2A3q0E2Q1{1i3K1j3I2Y1b2/053Q0Y2V3p3A0/0z0@0Y0F3g0j3y3j0F0@0A0w0T0p0d3G3a3)010?040i3}3(2L310@193Y2}3;3q410f3/4c3 410G3n0j4m3:3~460H3@4g4p1:0l0@0t4t451:0b0A0@0m4l4n4h463+040B1x1J4z2=3 4r040A444Q464w040k0k4V3z464C2`4P4%4v0@020L0d0e4y4a2r4o4A2@484$304j3/4n51524H4u1N0E0S0@030j0J1@0w0x0c0j0O0K0o0)0 0p0v0(1)0p0F0#0d0(4G534I2%0P0@2T2N3|4@3%4W1:41435F5y1N0w0O0@3.5L550/0w1-04020T0K0l4;4}3q2d0@0s5%4R4s5S4`5U4D040u5,465V0@4#5/5H5N5=5+5}4,4{4T5^1:5)5?665N5W4?2Y5T0168616e5:476562304Y4!6a0/4)042{6n5(5=5@6w3 5`5X4:0e6r6g606G4S496j5~5;0@6z6M635U5W5Y5!5$6A464e500j06534m5M3c5.2W4_6N014Y6d2/6.6S6l4U5F6@6o0@0W4+306t2-5F6%546k0H5A045C0H5E6R4~0@5K7e5(5P045R7i6B6U5Z5#6F6Y676I7t646`7n5_6y6G6C5|7z7u5*6J6,3Z6f686Q7K6k6C6=4b7L7v7F7x6G6p7E7O6/6t6v7V6O697w6T4.0n6X7(6H7H7+6l6L7!6^7M7C7p6W7s7:6!6{6(756)6f4K2l0d0K0p7^2}6|3q4S7y7_6}040C6G726#6(8p516*0157590j0$0j5s160j2l0H0g0l0N0x0p0j0+0j0g330x8a5b5n0E0v0Y7c1K2i8h2}0_0r3#0x2s2T8%3J1r3L2v2y2t0O1I8*0r3K8!0Y0!0$0w04.

Example 3

Analyser le script ci-dessus et déterminer ce qui est affiché.

1
2
3
4
n=1
while 1.15**n < 2 :
    n = n+1
print(n)
Solution
n 1 2 3 4 5 6
1.15**n 1.15 1.3224999999999998 1.5208749999999998 1.7490062499999994 2.0113571874999994 2.313060765624999

Lorsque \(n=5\), la condition de la boucle est fausse, et elle s'arrète.

Le script affiche la valeur \(5\), c'est le plus petit entier tel que \(1.15^n\geqslant 2\).

QCM⚓︎

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

  1. Analyser le script ci-dessus et déterminer ce qui est affiché :
    1
    2
    3
    4
    n=1
    while 1.11**n < 2 :
        n = n+1
    print(n)
    

    • Tous les entiers tels que \(1.11^{n}<2\)

    • Le plus grand entier \(n\) tel que \(1.11^{n}\geqslant 2\)

    • Le plus petit entier \(n\) tel que \(1.11^{n}\geqslant 2\)

    • Rien car il ne s'arrête pas

  2. Analyser le script ci-dessus et déterminer ce qui est affiché :
    1
    2
    3
    4
    n=1
    while 1.17**n<2:
        n = n+1
    print(n)
    

    • Rien car il ne s'arrête pas

    • Le plus grand entier \(n\) tel que \(1.17^{n}\geqslant 2\)

    • 2.192448

    • 5

  3. Analyser le script ci-dessus et déterminer ce qui est affiché :
    1
    2
    3
    4
    n=1
    while 0.88**n>0.5:
        n = n+1
    print(n)
    

    • Rien car il ne s'arrête pas

    • Le plus grand entier \(n\) tel que \(0.88^{n}> 0.5\)

    • 6

    • 5

  4. Analyser le script ci-dessus et déterminer ce qui est affiché :
    1
    2
    3
    4
    n=1
    while 0.85**n>0.5:
        n = n+1
    print(n)
    

    • 0.44370531

    • 4

    • Le plus petit entier \(n\) tel que \(0.85^n \leqslant 0.5\)

    • Le plus grand entier \(n\) tel que \(0.85^n > 0.5\)