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

.128013ben4vià3mo5_tLxPhlpf( cga=ry0S6u/72)s18d050O0c0n0z0g0s0L0w0x0s0z0L0L0A010n0g0t010406050L0G0j0j0z0B0C040E0k0s0G0)0k0d050H0:0=0@0_0.0t040519121c0H190.0O0g0f0X0Z0#0%0r0g0y0r0s1q0r0n0,050S0b0s0c1l0!0$011p1r1t1r0n1z1B1x0n0B1a0n0r0X0|0L0t0z0d0%0J011D1n010u0U0c0d0z0j0c1x1W1Y1%1F1*1B1-1/0,0a0w0q0B0k0t0k0L0g0 0d0w0Q1U0B0B0c0x27121=0d1a0H1S2k1P1R1Q1y0O1@0%1t0d1,241x1i1k0Y1E2u0g2w0d0k2A1x0t2d1a2i2k2O0/1X282C1(2H0B0?0s0,0M2h2S0-2R1?2U1F2W2Y0,0J2$1Y2(2i2t012-0z2Z040i2;2j0.2@2+0%2`2|0e2 2?2S2^350,0l38313a332_0k2X2{0,0F3f2)2T1m2,3k2.040I3p323s343u3m040N381d2M122A2n0O1R2s3i0x2I1:1a3K1b3I2Q132%053Q0Q2N3h3A010x0M0,030w0o0c0W1,0)0c0B0W2a0D0w0v2F0Y0G0L0K0w0h0w0M0M3}0c0p400K3y3(2D2_0,1t0L0n0c0m2#3Y2=0w3q2^0k0,0A384r3z4g0d0b4i0g4k3G4z1(0+040v4G4f2V4C040B1Y0y0c4M2*3)4J4L4p2j4s3i0j0g2!4o2Q4H1F4J0K4d4!0-3g4W4g3+3-3/3;0w3?0g3^3`1C3|3~0d4042440w0J544a4c4e4^2V4D4k4m2:4=4y4N1F4u044w5m4$3)4B5i0n4V3r4g4Y5z3b4P4R0d4T5D3i5C4=5u4g4(2/0D5J4X0,4:3f4@5A1(4`043.3:3=0d3@3_29533}3 0}58455b5.565:4;2O5X3b5x4m2~5t4-0%5q5s2O5n5g2,4P4j5y5M62015L4,5o345F4S4U6d6i6f0,4Z6h680%5P040J4+3Z6e4/5`2%0.0H3#0c2k2L6H3J1j3L2n2q2l0z1A6K0H3K6E0Q0S0U0L04.
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

.128013ben,49vià3mo5_tLxPhlpf( cga=ry0S6-u/72)s18d050R0c0p0B0i0u0O0y0z0u0B0O0O0C010p0i0v010406050O0J0l0l0B0D0E040G0m0u0J0,0m0d050K0?0^0`0|0;0v04051c151f0K1c0;0R0i0h0!0$0(0*0t0i0A0t0u1t0t0p0/050V0b0u0c1o0%0)011s1u1w1u0p1C1E1A0p0D1d0p0t0!0 0O0v0B0d0*0M011G1q010w0X0c0d0B0l0c1A1Z1#1*1I1-1E1:1=0/0a0y0s0D0m0v0m0O0i120d0y0T1X0D0D0c0z2a151^0d1d0K1V2n1S1U1T1B0R1`0*1w0d1/271A1l1n0#1H2x0i2z0d0m2D1A0v2g1d2l2n2R0=1!2b2F1+2K0D0_0u0/0y0P2k2V0:2U1_2X1I2Z2#2%0M2*1#2,2l2w012;0B2$040y0k2^2m0;2{2/0*2~300y0f342`2V2|3a2%0n3e363g382}0m2!2 2%0H3l2-2W1p2:3q2=310L3v373y393A3s310Q3E3n3G3p3r3b0g3M2.3O3i040P0F3T3x2G3P3B0P2)162+1g2P152D2q0R1U2v3o0z2L1?1d3:1e3.2T3+2_053_0T2Q3N3$0z0P0/030y0q0c0Z1/0,0c0D0Z2d0k0y0x2I0#0J0O0N0y0j2(0F4o0c0r4r0N3!3h0/1w0O0p0c0o3d412m0y3w2|0m0/0C3e4P3F3$0d0b4G0i4I3e4Q3o0.040x4(4X2Y4!040D1#0A0c4.471+4+4-4N463U3$0l0i0/334 4)3O4+0e4V5852543X3Z574/1I4+0N4D4 063m511+494b4d4f0y4h0i4j4l1F0P0M4o4q104t4v0y0M4y4p0d4r4t4E3o0d4#4I4K3k4 4W4{1I4S044U5Y5d4:5U0p4`5r5k0/4~2T5j394;4?0d4^5.3#4|5;5}2|530/5D614*0/5b5)5@0163040M3*5?5!0*5l5n2R5p5*1I5t044c4e4g0d4i4k2c1F0I3Y5F5O5H4u4w0P4z4B106l2+5q5~2:5,4K3u6a6i015$5(2R5Z5/5^5,6659605i6U4Z0/5`5|6*6!014}6%3$5$0I6@1+6d3Y6{5:04696Y6o0*6}6 6j0/5m3l6N2|6q6s5w5y5A6y0y6A5M5G4s6F2(6C5P6L2_7c5S6Q0o3D6T6;6W5c6b6,044H5-6:6O784,772}5_4@4_7J2|6?7S3o6_7N6}5h6h6;5a7D6U6d2@7V6(047a5o15440c2n2O7?3/1m3;2q2t2o0B1D7_0K3:0;830U0W0Y04.
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

.128013ben,49vià3mo5_tLxPhlpf( cga=ry0S6-u/72)s18d050R0c0p0B0i0u0O0y0z0u0B0O0O0C010p0i0v010406050O0J0l0l0B0D0E040G0m0u0J0,0m0d050K0?0^0`0|0;0v04051c151f0K1c0;0R0i0h0!0$0(0*0t0i0A0t0u1t0t0p0/050V0b0u0c1o0%0)011s1u1w1u0p1C1E1A0p0D1d0p0t0!0 0O0v0B0d0*0M011G1q010w0X0c0d0B0l0c1A1Z1#1*1I1-1E1:1=0/0a0y0s0D0m0v0m0O0i120d0y0T1X0D0D0c0z2a151^0d1d0K1V2n1S1U1T1B0R1`0*1w0d1/271A1l1n0#1H2x0i2z0d0m2D1A0v2g1d2l2n2R0=1!2b2F1+2K0D0_0u0/0y0P2k2V0:2U1_2X1I2Z2#2%0M2*1#2,2l2w012;0B2$040y0k2^2m0;2{2/0*2~300y0f342`2V2|3a2%0n3e363g382}0m2!2 2%0H3l2-2W1p2:3q2=310L3v373y393A3s310Q3E3n3G3p3r3b0g3M2.3O3i040P0F3T3x2G3P3B0P2)162+3m3U3$3W0P2@3+2_3-3#2Y3I300P333?353w3h3{0/0P3d3 3f3.3`3Q443k473^424b3X3u4e413o3:3D4k3F3/433X3L4p3N4r4h0P3S4v493z4h0M3Z4B3_4D3B0M3*2R4f4m4s0M3=4N4l3V4Q3~4T4q4a4K464Y4w4!3J0M4d4%4C3H4E4j4-4I4/4K4o4=4g4K4u4`4P4E4A2T1i2P152D2q0R1U2v3o0z2L1?1d561e54522T5c0T2Q4(1I0z0P0/030y0q0c0Z1/0,0c0D0Z2d4F0y0x2I0#0J0O0N0y0j0y0F5F5H105K3!3h0/1w0O0p0c0o4}2+0y4U3$0m0/0C3e5(4Z2:0b5W0i5Y3e5)1+0.040x5_5:395=040D1#0A0c5 5o0*5|5~475`1I0l0i0/4F684.015|0e5.6e0*5+040I6k4?016g446v2|6n6p60016s6u6d6E6y3X6A3o5|0N0N3l4O3O5q5s5u5w0y5y0i5A5C1F0n0F5P5G0d5I5K5M0y4F6*0c0r5I6Q4H5V045X5Z0o515%6q6F5,6D692}626}6M3O6b7a3/62640d667d5{0/6c2T6J6h046(4G7n766C475/766K6;7j1I7v2R7x6l6G7B0*6K4M2+726O6_4N6S3$6U045t5v5x0d5z5B2c1F3Y5Q6,5S5L5N0I7%0x6?6^5U4m5?5Y5!3Y757G747w720d785@0p7I6m7l84800/7g7i6I7u868c6l7K7s7M6E7D716E7H8f6w8h848l2_7F6w8o7t8g7p7L2_7N0/6P6R727T7V6X6Z6#7#6:0n7(6-7+0y0I4+8Q7*7=3V7@6~3)7{8w7}7E7 815^8p6B8e8y6w886365678.6N8:8j7y7p4+8s0/6o7~8n0/6H8;2|7z4;8}6l8t2m8v2|8x9c8q8A91048F4e7R1+8I6W0Z0i0l1!0i7!2d0P8W5J8S3Y6=6@107P3,7 8!7_4S8m766s5-94768?798`7b8|8C6E8?8a8_988{5}847K9m938*7o446)9.8%998 9m9o7Q8H5r7U9t0y0l0J0u0,0v1E6$328N6*5R9D6/0k0F9B7/9H0J9J3@9L6|827_4X9P7|049S9:9U8,839X3$7caB2Y7f8^9m7m9j9_0/8i9!8d049/at9k0/ag8B2m8DaQ9^3o6KasaO9d8Eam359q5p9 8J0Za3a50-a88N0Lab9C6.5N0g0g0fa|a+488=9M0o45a!3O9Rb97e8!aI87aG7h9(aK9*aJa(aT04aNaX8k92bc1+6Ka 4,bk9YaZ9T8z0/4_bzaCa*8G6E9s7W0y9x9z1F7-6)b26/9F5F7:9I8Y3/b60Pby8u72bbbC8=azbfaE5;89aHb/6a9Zbr9Q969,8A9?b?85bBaxbD3Xb~9)bAaRb(9;049Obn8/9nb306a-0*bL6Xa=a6a^2d0k8Nagac7)ae5N3Y0MbWakcgao6}7_9bc9b`avbub:ap8-c6bH9+b 9$b=cN7kcPcT6f7pcs9@b+aLc4ccb_a)c1aS9hb{b a$9{cgci01cka;a4cn6X9Acqcp0f0f8P6+8R6/0I0n0n0gb2bZ2Yb#bFcGauawc,4mb-b aDcW61b;bib.dn6xcYd0b%c)6w9e31b)c.ds6K0n0Hbq5nc*c89fdB6tb|44a%dxce9|9K0K5l0c2n2OdX551m572q2t2o0B1Dd!0K560;d.0U0W0Y04.