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

.128013l7àa/L r0npmx3_6shf45(vtb=ocgeS1)2iPd8uy050L0E0y0e0J0b0r0h0C0b0e0r0r0A010y0J0l010406050r0N0m0m0e0i0O040F0B0b0N0)0B0k050f0:0=0@0_0.0l041219051c0f1c1e190.0L0J0x0X0Z0#0%0s0J0D0s0b1s0s0y0,050S0z0b0E1n0!0$011r1t1v1t0y1B1D1z0y0z0B0L0_1A0i1a0y0s0X0|0r0l0e0k0%0I011F1p010t0U0E0k0e0m0E1z1%1)1.1H1;1D1@1_0,0a0h0K0i0B0l0B0r0J0 0k0h0Q1#0i0i0E0C2e121|0k1a0f1Z2r0y1X1W1Y0L1~0%1v0k1?2b1z1k1m0Y1G2B0J2D0k1T1l1z0l2k1a2p2r2V0/1(2f2J1/2O0i0?0b0,0G2o2Z0-2Y1}2#1H2%2)0,0I2-1)2/2p2A012@0e2*040o2{2q0.2~2=0%31330u362}2Z2 3c0,0v3f383h3a300B2(320,0q3m2:2!1o2?3r2^040c3w393z3b3B3t040M3f1b2T122H2u0L2y2 0C1T1`1a3R1d3P2X132.053W0Q2U3o3H010C0G0,030h0g0E0W1?0)0E0i0W2h0j0h0w2M0Y0N0r0H0h0d0h0G0G430E0n460H3F3.2K300,1v0r0y0E0p2,3(2|0h3x2 0B0,0A3f4x3G4m0k0z4o0J4q3N4F1/0+040w4M4l2$4I040i1)0D0E4S2;3/4P4R4v2q4y3p0m0J2+4u2X4N1H4P0H4j4*0-3n4$4m3;3?3^3`0h3|0J3~401E42440k46484a0h0I5a4g4i4k4~2$4J4q4s2`4{4E4T1H4A044C5s4,3/4H5o0y4#3y4m4(5F3i4V4X0k4Z5J3p5I4{5A4m4.2_0j5P4%0,4_3m4}5G1/50043@3_3{0k3}3 2g5943450}5e4b5h5@5c5_4`2V5%3i5D4s355z4?0%5w5y2V5t5m2?4V4p5E5S68015R4=5u3b5L4Y4!6j6o6l0,4)6n6e0%5V040I4;3)6k4^602.0.0f3+0E2r2S6N3Q1l3S2u2w2s1S1U2u0e1C6Q0f3R6K0Q0S0U0r04.
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

.128013l7à,a/L r0npmx3_6shf-45(vtb=ocgeS19)2iPd8uy050O0G0A0f0M0b0s0i0E0b0f0s0s0C010A0M0m010406050s0Q0n0n0f0j0R040H0D0b0Q0,0D0l050g0?0^0`0|0;0m04151c051f0g1f1h1c0;0O0M0z0!0$0(0*0t0M0F0t0b1v0t0A0/050V0B0b0G1q0%0)011u1w1y1w0A1E1G1C0A0B0D0O0|1D0j1d0A0t0!0 0s0m0f0l0*0L011I1s010u0X0G0l0f0n0G1C1*1,1;1K1@1G1`1|0/0a0i0N0j0D0m0D0s0M120l0i0T1(0j0j0G0E2h151 0l1d0g1$2u0A1!1Z1#0O210*1y0l1_2e1C1n1p0#1J2E0M2G0l1W1o1C0m2n1d2s2u2Y0=1+2i2M1=2R0j0_0b0/0i0I2r2$0:2#202(1K2*2,2.0L2;1,2?2s2D012{0f2-040i0p2 2t0;322_0*35370i0w3b312$333h2.0x3l3d3n3f340D2+362.0r3s2@2%1r2`3x2|380c3C3e3F3g3H3z380P3L3u3N3w3y3i0J3T2^3V3p040I0k3!3E2N3W3I0I2:162=1e2W152K2x0O2B330E1W1}1d3`1g3^2!3=30053 0T2X3U3-0E0I0/030i0h0G0Z1_0,0G0j0Z2k0p0i0y2P0#0Q0s0K0i0d2/0k4u0G0o4x0K3+3o0/1y0s0A0G0q3k472t0i3D330D0/0C3l4V3M3-0l0B4M0M4O3l4W3v0.040y4.4%2)4*040j1,0F0G4@4d1=4;4?4T4c3#3-0n0M0/3a554/3V4;0e4#5e585a3(3*5d4^1K4;0K4J55063t571=4f4h4j4l0i4n0M4p4r1H0I0L4u4w104z4B0i0L4E4v0l4x4z4K3v0l4+4O4Q3r554$511K4Y044!5(5j4_5!0A505x5q0/542!5p3g4`4|0l4~5@3,525`6333590/5J674:0/5h5/5}0169040L3;5|5*0*5r5t2Y5v5:1K5z044i4k4m0l4o4q2j1H0v3)5L5U5N4A4C0I4F4H106r2=5w642`5=4Q3B6g6o015,5.2Y5)5^5~5=6c5f665o6!4)0/60626:6*01536-3-5,0v6}1=6j3)715_046f6(6u0*73756p0/5s3s6T3~4g6x5B6A6C5H0i6G5S5M4y6L2/6I5V6R307i5Y6W0q3K6Z6`6$5i6h6=044N5?6_6U7e4=7d345 4}4 7P336|7Y3v6 7T735n6n6`5g7J6!6j2~7#6.047g5u154a0G2u2V7|3_1o3{2x2z2v1V1X2x0f1F7 0g3`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

.128013l7à,a/L r0npmx3_6shf-45(vtb=ocgeS19)2iPd8uy050O0G0A0f0M0b0s0i0E0b0f0s0s0C010A0M0m010406050s0Q0n0n0f0j0R040H0D0b0Q0,0D0l050g0?0^0`0|0;0m04151c051f0g1f1h1c0;0O0M0z0!0$0(0*0t0M0F0t0b1v0t0A0/050V0B0b0G1q0%0)011u1w1y1w0A1E1G1C0A0B0D0O0|1D0j1d0A0t0!0 0s0m0f0l0*0L011I1s010u0X0G0l0f0n0G1C1*1,1;1K1@1G1`1|0/0a0i0N0j0D0m0D0s0M120l0i0T1(0j0j0G0E2h151 0l1d0g1$2u0A1!1Z1#0O210*1y0l1_2e1C1n1p0#1J2E0M2G0l1W1o1C0m2n1d2s2u2Y0=1+2i2M1=2R0j0_0b0/0i0I2r2$0:2#202(1K2*2,2.0L2;1,2?2s2D012{0f2-040i0p2 2t0;322_0*35370i0w3b312$333h2.0x3l3d3n3f340D2+362.0r3s2@2%1r2`3x2|380c3C3e3F3g3H3z380P3L3u3N3w3y3i0J3T2^3V3p040I0k3!3E2N3W3I0I2:162=3t3#3-3%0I2~3=303@3,2)3P370I3a3}3c3D3o420/0I3k463m3^413X4b3r4e3 494i3(3B4l483v3`3K4r3M3_4a3(3S4w3U4y4o0I3Z4C4g3G4o0L3*4I404K3I0L3;2Y4m4t4z0L3|4U4s3$4X454!4x4h4R4d4)4D4+3Q0L4k4.4J3O4L4q4@4P4_4R4v4|4n4R4B514W4L4H2!1i2W152K2x0O2B330E1W1}1d5d1g5b592!5i0T2X4/1K0E0I0/030i0h0G0Z1_0,0G0j0Z2k4M0i0y2P0#0Q0s0K0i0d0i0k5L5N105Q3+3o0/1y0s0A0G0q542=0i4#3-0D0/0C3l5.4*2`0B5$0M5(3l5/1=0.040y5 5_3g5{040j1,0F0G655u0*62644e601K0n0M0/4M6e4^01620e5@6k0*5;040v6q4}016m4b6B336t6v66016y6A6j6K6E3(6G3v620K0K3s4V3V5w5y5A5C0i5E0M5G5I1H0x0k5V5M0l5O5Q5S0i4M6:0G0o5O6W4O5#045%5)0q585-6w6L5=6J6f3468736S3V6h7g3_686a0l6c7j610/6i2!6P6n046.4N7t7c6I4e5^7c6Q6`7p1K7B2Y7D6r6M7H0*6Q4T2=786U6 4U6Y3-6!045z5B5D0l5F5H2j1H3)5W6=5Y5R5T0v7-0y6|6~5!4t5|5(5*3)7b7M7a7C780l7e5}0A7O6s7r8a860/7m7o6O7A8c8i6r7Q7y7S6K7J776K7N8l6C8n8a8r307L6C8u7z8m7v7R307T0/6V6X787Z7#6%6)6+7+6_0x7.6?7;0i0v4=8W7:7{3$7}743:818C837K85875~8v6H8k8E6C8e696b6d8@6T8_8p7E7v4=8y0/6u848t0/6N8`337F4{936r8z2t8B338D9i8w8G97048L4l7X1=8O6$0Z0M0n1+0M7*2k0I8$5P8Y3)6{6}107V3?858*7 4Z8s7c6y5?9a7c8|7f907h928I6K8|8g8 9e91638a7Q9s998:7u4b6/9@8-9f959s9u7W8N5x7!9z0i0n0Q0b0,0m1G6,398T6:5X9J6^0p0k9H7^9N0Q9P3~9R72887 4(9V82049Y9_9!8=899%3-7iaH2)7l8~9s7s9p9 0/8o9*8j049^az9q0/am8H2t8JaW9~3v6QayaU9j8Kas3c9w5va58P0Za9ab0-ae8T0cah9I6@5T0J0J0wb2a;4f8{9S0q4ca*3V9Xbf7k8*aO8daM7n9.aQ9:aPa.aZ04aTa%8q98bi1=6Qb54?bq9(a)9Z8F0/50bFaIa:8M6K9y7$0i9D9F1H7?6/b86^9L5L7_9O8(3_bc0IbE8A78bhbI8{aFblaK5`8faNb^6g9)bx9W9c9=8G9|b|8bbHaDbJ3(c49/bGaXb.9`049Ubt8^9tb906a?0*bR6%a{aca~2k0p8Tamai7/ak5T3)0Lb$aqcmau737 9hcfc0aBbAb_av8?ccbN9;c59,b{cT7qcVcZ6l7vcy9}b;aRcacib a/c7aY9nc1c5a,a1cmco01cqa`aact6%9Gcwcv0w0w8V6;8X6^0v0x0x0Jb8b)2)b+bLcMaAaCc=4tb?c5aJc$67b`bob@dt6Dc(d6b-c/6C9k38b/c@dy6Q0x0rbw5tc:ce9ldH6zc24ba-dDcka29Q0g5r0G2u2Vd%5c1o5e2x2z2v1V1X2x0f1Fd*0g5d0;d`0U0W0Y04.