Autour de range

En Python, l'instruction range permet de parcourir des nombres entiers. Cette fonction renvoie un objet qui n'est pas une liste et génère les nombres au fur et à mesure de leur utilisation.

Elle peut être utilisée avec un, deux ou trois paramètres.

Quelle que soit la méthode utilisée, ces paramètres sont toujours des nombres entiers (positifs ou négatifs).

Remarque

La conversion en une liste Python (avec list(range(5))) permet de visualiser les nombres parcourus par range.

Un paramètre : range(b)

L'appel range(b) permet de parcourir les entiers de 0 (inclus) à b (exclu).

🐍 Console Python
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(6))
[0, 1, 2, 3, 4, 5]

On note que dans chaque appel, la valeur de b est bien exclue du parcours.

Compléter le code ci-dessous.

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

.128013Lpbvà(40i2edmx3s7= 1o5_lSnatf)h6crgyPu8/050m0l0C0B0j0y0q0t0H0y0B0q0q0s010C0j0c010406050q0M0n0n0B0I0K040z0v0y0M0)0v0A050O0:0=0@0_0.0c041219051c0O1c1e190.0m0j0e0X0Z0#0%0F0j0J0F0y1s0F0C0,050S0d0y0l1n0!0$011r1t1v1t0C1B1D1z0C0d0v0m0_1A0I1a0C0F0X0|0q0c0B0A0%0k011F1p010D0U0l0A0B0n0l1z1%1)1.1H1;1D1@1_0,0a0t0L0I0v0c0v0q0j0 0A0t0Q1#0I0I0l0H2e121|0A1a0O1Z2r0C1X1W1Y0m1~0%1v0A1?2b1z1k1m0Y1G2B0j2D0A1T1l1z0c2k1a2p2r2V0/1(2f2J1/2O0I0?0y0,0u2o2Z0-2Y1}2#1H2%2)0,0k2-1)2/2p2A012@0B2*040p2{2q0.2~2=0%31330h362}2Z2 3c0,0w3f383h3a300v2(320,0G3m2:2!1o2?3r2^040r3w393z3b3B3t040N3f1b2T122H2u0m2y2 0H1T1`1a3R1d3P2X132.053W0Q2U3o3H010H0u0,030t0b0l0W1?0)0l0I0W2h0i0t0g2M0Y0M0q0E0t0f0t0u0u430l0o460E3F3.2K300,1v0q0C0l0x2,3(2|0t3x2 0v0,0s3f4x3G4m0A0d4o0j4q3N4F1/0+040g4M4l2$4I040I1)0J0l4S2;3/4P4R4v2q4y3p0n0j2+4u2X4N1H4P0E4j4*0-3n4$4m3;3?3^3`0t3|0j3~401E42440A46484a0t0k5a4g4i4k4~2$4J4q4s2`4{4E4T1H4A044C5s4,3/4H5o0C4#3y4m4(5F3i4V4X0A4Z5J3p5I4{5A4m4.2_0i5P4%0,4_3m4}5G1/50043@3_3{0A3}3 2g5943450}5e4b5h5@5c5_4`2V5%3i5D4s355z4?0%5w5y2V5t5m2?4V4p5E5S68015R4=5u3b5L4Y4!6j6o6l0,4)6n6e0%5V040k4;3)6k4^602.0.0O3+0l2r2S6N3Q1l3S2u2w2s1S1U2u0B1C6Q0O3R6K0Q0S0U0q04.
Deux paramètres : range(a, b)

L'appel range(a, b) permet de parcourir les entiers de a (inclus) à b (exclu).

🐍 Console Python
>>> list(range(0, 5))
[0, 1, 2, 3, 4]
>>> list(range(-5, 2))
[-5, -4, -3, -2, -1, 0, 1]

Remarque

Dans l'utilisation avec un seul paramètre, Python utilise par défaut la valeur 0 pour a.

Compléter le code ci-dessous.

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

.128013Lpbvà(40i2edmx3s7= 1o5_lSnatf-)9h6,crgyPu8/050m0l0C0B0j0y0q0t0K0y0B0q0q0s010C0j0c010406050q0P0n0n0B0L0N040z0v0y0P0,0v0A050R0?0^0`0|0;0c04151c051f0R1f1h1c0;0m0j0e0!0$0(0*0H0j0M0H0y1v0H0C0/050V0d0y0l1q0%0)011u1w1y1w0C1E1G1C0C0d0v0m0|1D0L1d0C0H0!0 0q0c0B0A0*0k011I1s010D0X0l0A0B0n0l1C1*1,1;1K1@1G1`1|0/0a0t0O0L0v0c0v0q0j120A0t0T1(0L0L0l0K2h151 0A1d0R1$2u0C1!1Z1#0m210*1y0A1_2e1C1n1p0#1J2E0j2G0A1W1o1C0c2n1d2s2u2Y0=1+2i2M1=2R0L0_0y0/0t0u2r2$0:2#202(1K2*2,2.0k2;1,2?2s2D012{0B2-040t0p2 2t0;322_0*35370t0h3b312$333h2.0w3l3d3n3f340v2+362.0I3s2@2%1r2`3x2|380r3C3e3F3g3H3z380Q3L3u3N3w3y3i0G3T2^3V3p040u0i3!3E2N3W3I0u2:162=1e2W152K2x0m2B330K1W1}1d3`1g3^2!3=30053 0T2X3U3-0K0u0/030t0b0l0Z1_0,0l0L0Z2k0p0t0g2P0#0P0q0F0t0f2/0i4u0l0o4x0F3+3o0/1y0q0C0l0x3k472t0t3D330v0/0s3l4V3M3-0A0d4M0j4O3l4W3v0.040g4.4%2)4*040L1,0M0l4@4d1=4;4?4T4c3#3-0n0j0/3a554/3V4;0J4#5e585a3(3*5d4^1K4;0F4J55063t571=4f4h4j4l0t4n0j4p4r1H0u0k4u4w104z4B0t0k4E4v0A4x4z4K3v0A4+4O4Q3r554$511K4Y044!5(5j4_5!0C505x5q0/542!5p3g4`4|0A4~5@3,525`6333590/5J674:0/5h5/5}0169040k3;5|5*0*5r5t2Y5v5:1K5z044i4k4m0A4o4q2j1H0E3)5L5U5N4A4C0u4F4H106r2=5w642`5=4Q3B6g6o015,5.2Y5)5^5~5=6c5f665o6!4)0/60626:6*01536-3-5,0E6}1=6j3)715_046f6(6u0*73756p0/5s3s6T3~4g6x5B6A6C5H0t6G5S5M4y6L2/6I5V6R307i5Y6W0x3K6Z6`6$5i6h6=044N5?6_6U7e4=7d345 4}4 7P336|7Y3v6 7T735n6n6`5g7J6!6j2~7#6.047g5u154a0l2u2V7|3_1o3{2x2z2v1V1X2x0B1F7 0R3`0;8c0U0W0Y04.
Trois paramètres : range(a, b, c)

L'appel range(a, b, c) permet de parcourir les entiers de a (inclus) à b (exclu) avec un pas (un écart) de c.

Ainsi, range(3, 18, 5) permet de parcourir successivement les nombres 3, 8 et 13. En effet, :

  • 3 est la valeur de départ (incluse),
  • 8 la suit. En effet le pas vaut 5 et 3 + 5 égale 8,
  • 13 est égal à 8 + 5.

Le 18 (égal à 13 + 5) est bien exclu.

🐍 Console Python
>>> list(range(3, 18, 5))
[3, 8, 13]
>>> list(range(3, 19, 5))
[3, 8, 13, 18]
>>> list(range(20, 15, -1))
[20, 19, 18, 17, 16]

Remarque

Dans les utilisations avec un ou deux paramètres, Python utilise par défaut la valeur 1 pour c.

Compléter le code ci-dessous.

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

.128013Lpbvà(40i2edmx3s7= 1o5_lSnatf-)9h6,crgyPu8/050m0l0C0B0j0y0q0t0K0y0B0q0q0s010C0j0c010406050q0P0n0n0B0L0N040z0v0y0P0,0v0A050R0?0^0`0|0;0c04151c051f0R1f1h1c0;0m0j0e0!0$0(0*0H0j0M0H0y1v0H0C0/050V0d0y0l1q0%0)011u1w1y1w0C1E1G1C0C0d0v0m0|1D0L1d0C0H0!0 0q0c0B0A0*0k011I1s010D0X0l0A0B0n0l1C1*1,1;1K1@1G1`1|0/0a0t0O0L0v0c0v0q0j120A0t0T1(0L0L0l0K2h151 0A1d0R1$2u0C1!1Z1#0m210*1y0A1_2e1C1n1p0#1J2E0j2G0A1W1o1C0c2n1d2s2u2Y0=1+2i2M1=2R0L0_0y0/0t0u2r2$0:2#202(1K2*2,2.0k2;1,2?2s2D012{0B2-040t0p2 2t0;322_0*35370t0h3b312$333h2.0w3l3d3n3f340v2+362.0I3s2@2%1r2`3x2|380r3C3e3F3g3H3z380Q3L3u3N3w3y3i0G3T2^3V3p040u0i3!3E2N3W3I0u2:162=3t3#3-3%0u2~3=303@3,2)3P370u3a3}3c3D3o420/0u3k463m3^413X4b3r4e3 494i3(3B4l483v3`3K4r3M3_4a3(3S4w3U4y4o0u3Z4C4g3G4o0k3*4I404K3I0k3;2Y4m4t4z0k3|4U4s3$4X454!4x4h4R4d4)4D4+3Q0k4k4.4J3O4L4q4@4P4_4R4v4|4n4R4B514W4L4H2!1i2W152K2x0m2B330K1W1}1d5d1g5b592!5i0T2X4/1K0K0u0/030t0b0l0Z1_0,0l0L0Z2k4M0t0g2P0#0P0q0F0t0f0t0i5L5N105Q3+3o0/1y0q0C0l0x542=0t4#3-0v0/0s3l5.4*2`0d5$0j5(3l5/1=0.040g5 5_3g5{040L1,0M0l655u0*62644e601K0n0j0/4M6e4^01620J5@6k0*5;040E6q4}016m4b6B336t6v66016y6A6j6K6E3(6G3v620F0F3s4V3V5w5y5A5C0t5E0j5G5I1H0w0i5V5M0A5O5Q5S0t4M6:0l0o5O6W4O5#045%5)0x585-6w6L5=6J6f3468736S3V6h7g3_686a0A6c7j610/6i2!6P6n046.4N7t7c6I4e5^7c6Q6`7p1K7B2Y7D6r6M7H0*6Q4T2=786U6 4U6Y3-6!045z5B5D0A5F5H2j1H3)5W6=5Y5R5T0E7-0g6|6~5!4t5|5(5*3)7b7M7a7C780A7e5}0C7O6s7r8a860/7m7o6O7A8c8i6r7Q7y7S6K7J776K7N8l6C8n8a8r307L6C8u7z8m7v7R307T0/6V6X787Z7#6%6)6+7+6_0w7.6?7;0t0E4=8W7:7{3$7}743:818C837K85875~8v6H8k8E6C8e696b6d8@6T8_8p7E7v4=8y0/6u848t0/6N8`337F4{936r8z2t8B338D9i8w8G97048L4l7X1=8O6$0Z0j0n1+0j7*2k0u8$5P8Y3)6{6}107V3?858*7 4Z8s7c6y5?9a7c8|7f907h928I6K8|8g8 9e91638a7Q9s998:7u4b6/9@8-9f959s9u7W8N5x7!9z0t0n0P0y0,0c1G6,398T6:5X9J6^0p0i9H7^9N0P9P3~9R72887 4(9V82049Y9_9!8=899%3-7iaH2)7l8~9s7s9p9 0/8o9*8j049^az9q0/am8H2t8JaW9~3v6QayaU9j8Kas3c9w5va58P0Za9ab0-ae8T0rah9I6@5T0G0G0hb2a;4f8{9S0x4ca*3V9Xbf7k8*aO8daM7n9.aQ9:aPa.aZ04aTa%8q98bi1=6Qb54?bq9(a)9Z8F0/50bFaIa:8M6K9y7$0t9D9F1H7?6/b86^9L5L7_9O8(3_bc0ubE8A78bhbI8{aFblaK5`8faNb^6g9)bx9W9c9=8G9|b|8bbHaDbJ3(c49/bGaXb.9`049Ubt8^9tb906a?0*bR6%a{aca~2k0p8Tamai7/ak5T3)0kb$aqcmau737 9hcfc0aBbAb_av8?ccbN9;c59,b{cT7qcVcZ6l7vcy9}b;aRcacib a/c7aY9nc1c5a,a1cmco01cqa`aact6%9Gcwcv0h0h8V6;8X6^0E0w0w0Gb8b)2)b+bLcMaAaCc=4tb?c5aJc$67b`bob@dt6Dc(d6b-c/6C9k38b/c@dy6Q0w0Ibw5tc:ce9ldH6zc24ba-dDcka29Q0R5r0l2u2Vd%5c1o5e2x2z2v1V1X2x0B1Fd*0R5d0;d`0U0W0Y04.