Aller au contenu

Exercice 4 - Autour de range⚓︎

En Python, l'objet range permet de générer une suite de 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).

1. Un paramètre : range(stop)⚓︎

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

Python Console Session
>>> 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 stop est bien exclue du parcours.

Remarque

La conversion en une liste Python (avec list(range(5))) permet de visualiser les nombres générés par range.

Compléter le code ci-dessous.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
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
.128013="m_eh(3yapl)7dàun sSx6 gPi1vr08-t25f4Lbco/030j090C0e0v0g0o0n0J0g0e0o0o05060C0v0f06020s030o0l07070e0y0d020p0K0g0l0$0K0m030L0,0.0:0=0*0f0203150~180L150*0j0v0x0U0W0Y0!0W0m0t0l0e0t090B0f0d0C0a0|0n0a0v0t0a0g1A0a0C0(030P0I0g091h0X0Z061z1B1D1B0C1J1L1H0C0y161v0U0^0o0f0e0m0!0D061N1j060F0R090m0e07091H1(1*1/1P1=1L1^1`0(040n0u0y0K0f0K0o0v0{0m0n0N1%0y0y090J2f0~1}0m160L1v2s1Z1#1!1I0j1 1k0v0m1@2c1H1e1g0V1O2C2E0m0K2I1H0f2l162q2s2V0+1)2g2K1:2O0y0/0g1H0e1y2l0F0!0108080J2P091D2N0K0B0w2|0(0w0~0e2W2Z0)2Y1~2#1P2%2(2*2,092.062:2=2@2_2F2|0B1-020D31331*352q2B063a0e2)162+0a2-2/2;2?0N3k2O3m0c0(0c3r2p340*3v380!3y3A033C3E3g3G3j2D3l2}0G0(0G3P0 3R362!1i390K2'3z3c3D3e3F3i3I3'3K2}0E0(0E3-2V3S2Z3w3W3`3!3h3H2^402{2}0r0(0r463/3T3=3V3@3b3B3d3f4e3%2`3m0i0(0i4n3t48374q3x4s3_4u3{4w3$3 4z2}0A0(0A4E2r192T0~2I2v0j1#2A3U064f2H1f162S092U343Q3t034f4;1~0v0j0!2;2q3m0w3c4|4~3~4g4R2~0n2309554f3J4i2~2s323:3w0J5202010n0H090T1@0$090y0T2i0z0n0b2D0V0l0o0h0n0k0n0w0w5B090q5E0h4?2r0*3.4@3v54064 2Z3m3o3Y0n5Y4P573(3n1.5b5d4y5,5%0L5j4p2L3x0(1D0o0C0908305V2r0n5k4)0K0(055S02655_2$0I5|0v5~6b664I0'020b6k6e396g020y1*1q6q494)6n6p634`3;5`070v2 622X6r0!6n0h5R6D5U6L495)08502}3M4u6V5e4h3L5.1_5c5Z565f6'5i356D5k6V6X0B3*6!4}6+6$583*5a6)5:4Q5,6_3P6M4*5n5p5r5t0m5v5x2h1M5A5C0m5E5G5I0n0D7i5O5Q6b6S4=5X6{5!1*3m436`725+410B43701`7D6-421H5@6E4a6h5~603q6D6d6z4I68026a7V6l5`0m6t5}0C6y4H5`6B7,6F6f0(6v1m097:3w7/6;776H0(7p7`6A0(6P7t7`6?5#4j537x6,6%8a7I6*5*7L0B4k6/7u5W6U8c6@4B7C6|5;7F4B8g7K8e0B8s767X5`5m0(7a5s0n5u0v5w5y7h5B5D0_7m5J7p8Q7k8S6Q47878q890B4T8t8i8A4T8y8u737F8(8D7-2$7R5 083O7$777Z7#2V7W8?6s8^826m0(6C6T923V6t7@6x7}8E1:7|997;1P7 3p6K7v9g1P6O8Z3/6;0L4_4Y4:4!4-0~0C4%9C2y2t0e1K9z0L4#5U0N0P0R0o02.

2. Deux paramètres : range(start, stop)⚓︎

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

Python Console Session
>>> 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 start.

Compléter le code ci-dessous.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
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
.128013="m_eh(3yapl)7,dàun sSx6 gPi1vr908-t25f4Lbco/030k090E0e0w0g0p0o0L0g0e0p0p05060E0w0f06020t030p0m07070e0z0d020q0M0g0m0'0M0n030N0.0:0=0@0,0f020317101a0N170,0k0w0y0W0Y0!0$0Y0n0u0m0e0u090D0f0d0E0a0~0o0a0w0u0a0g1C0a0E0*030R0K0g091j0Z0#061B1D1F1D0E1L1N1J0E0z181x0W0`0p0f0e0n0$0F061P1l060H0T090n0e07091J1*1,1;1R1@1N1`1|0*040o0v0z0M0f0M0p0w0}0n0o0P1(0z0z090L2h101 0n180N1x2u1#1%1$1K0k211m0w0n1_2e1J1g1i0X1Q2E2G0n0M2K1J0f2n182s2u2X0-1+2i2M1=2Q0z0;0g1J0e1A2n0H0$0108080L2R091F2P0M0D0c0D0x0*0o0x100e2Y2#0+2!202%1R2(2*2,2.092:062=2@2_2{2H2~0D1/020o0F35371,392s2D063e0e2+182-0a2/2;2?2^0P3o2Q3q0c320c3w2r380,3A3c0$3D3F033H3J3k3L3n2F3p2 0I320I3U113W3a2$1k3d0M2)3E3g3I3i3K3m3N3,3P2 0G320G3=2X3X2#3B3#3 3(3l3M2`452}2 0s320s4b3@3Y3`3!3|3f3G3h3j4j3+2|3q0i320i4s3y4d3b4v3C4x3~4z404B3*444E2 0C320C4J2t4L3_2N4O3}3$3'413)434l4W0D0A320A4#3z4e3Z4)4y3%4A424k3O4n300B0*0x0B4_4%4f4P4+504.524m3q0x31025k4_1b2V102K2x0k1%2C4|4k2J1h182U092W383V3y034k5E200w0k0$2?2s5j3g5M5O4/535R0o25095U5h4;5l3U4u4(0L5l010o0J090V1_0'090z0V2k0c0o0b2F0X0m0p0h0o0l330B5|090r0{0h5G4$6c5K2i5T065P2#3q3s4 6h4U4:3-3r1:5Z5#4D6r6m0N363^4f0*1F0p0E09083;3?3y0o6B4|0M0*056e6M5)2'0K6D0w6F6e6N4N0)020b6!6U3d6W020z1,1s6)4{6$0*6(6K2t6#4(070w0*3T6_6f3B6%0j6S6{1=6}575971771R6%0h6b710,7c3A6o085Q2 3R4z7m5$6r3R5Y1{5!6i5V5i7p1J6z397k4e7m7o0D3/7r5N7z7t467K6t7x6v4V6r7L5(6=5*5,5.5:0o5=0w5@5_1O0x0F5|5~0{61633u665}0n5 616e7j2Z7l7N6j1,3q487M7U6q7Q487w1|875W477D6A6*3!6X6F6H4a716T7Z1=6P026R8o7d3!6,6E0E6;4M4(6%6^7 8q6+0*6.1o098B4'1=8E8N3B795m3v7G8C8P0*758v8i068T0F348W8O7e0*7g7}8R7I6k4o5S817A4;4p8b7y6p8e0D4p2u367~5F805U7J4G867O6w7Q4G8|8d7B0D997Y8X1R5+0*5-5/5;0n5?5^2j1O557/7`7;62640x67690m7h4c8:8^7J4Y9a8~9h4Y9f9b7V7Q9M9k8+8j028z6H4r8#8H0$8s8u2X8p9l8x8k8A8*736@8R4|0n6,8K6:9;4|8Q9}4N8s0D9@4N8T58a48D8Z768$a6a88Y028.7i9J978=4=8@9g4;4?9R9Oap8g7F8G5L9Kal58an9S8854aAar8_6raA92725x7#9q7'9s7)9u2k9x7_7{9B339yaW8/9;8;832 5kaBasaI31aG7PaE5'7E8w3C9/6H4I9%9-069)ab9'3C8y6Y9:aw9X069 b54f9`6/8Ma0a96'ae1Ra2bh0$a67bb99~aaa{b68'bkb78-9H3@7c0N5J5p5D5r5A100E5ubG2A2v0e1MbD0N5s7j0P0R0T0p02.

3. Trois paramètres : range(start, stop, step)⚓︎

L'appel range(start, stop, step) permet de parcourir les entiers de start (inclus) à stop (exclu) avec un pas (un écart) de step.

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.

Python Console Session
>>> 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 step.

Compléter le code ci-dessous.

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
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
.128013="m_eh(3yapl)7,dàun sSx6 gPi1vr908-t25f4Lbco/030k090E0e0w0g0p0o0L0g0e0p0p05060E0w0f06020t030p0m07070e0z0d020q0M0g0m0'0M0n030N0.0:0=0@0,0f020317101a0N170,0k0w0y0W0Y0!0$0Y0n0u0m0e0u090D0f0d0E0a0~0o0a0w0u0a0g1C0a0E0*030R0K0g091j0Z0#061B1D1F1D0E1L1N1J0E0z181x0W0`0p0f0e0n0$0F061P1l060H0T090n0e07091J1*1,1;1R1@1N1`1|0*040o0v0z0M0f0M0p0w0}0n0o0P1(0z0z090L2h101 0n180N1x2u1#1%1$1K0k211m0w0n1_2e1J1g1i0X1Q2E2G0n0M2K1J0f2n182s2u2X0-1+2i2M1=2Q0z0;0g1J0e1A2n0H0$0108080L2R091F2P0M0D0G0D0x0*0o0x100e2Y2#0+2!202%1R2(2*2,2.092:062=2@2_2{2H2~0D1/020o0F35371,392s2D063e0e2+182-0a2/2;2?2^0P3o2Q3q0c320c3w2r380,3A3c0$3D3F033H3J3k3L3n2F3p2 0I320I3U113W3a2$1k3d0M2)3E3g3I3i3K3m3N3,3P2 0G320G3=2X3X2#3B3#3 3(3l3M2`452}2 0s320s4b3@3Y3`3!3|3f3G3h3j4j3+2|3q0i320i4s3y4d3b4v3C4x3~4z404B3*444E2 0C320C4J2t4L3_2N4O3}3$3'413)434l4W0D0A320A4#3z4e3Z4)4y3%4A424k3O4n300B0*0x0B4_4%4f4P4+504.524m3q0x31025k5a3^5c4*4h4-4C4V3-303s0x3v0N363V4K5p4|4g4R4i4U4:5w0x3R5m3T5B3x4$5F4N5H4 4S514D5M3/5m3;5R5D5T4u4(5W4,4T4/535j485m4a5(3?5E5+2'5d5s5/5h4;0x4p5m4r5_4c5U5,5~5I5t5K5;2 0x4G5m4I674t4{5V6b5X5J5:5i6g4Y5m4!6l5{6n6a5r6c605!46304?5m4^6y5*6A5}6C6q6d6s4;0F56026U5o5|3{6P5.5Z5v6G0F5l6)6Y6N6!4~6$5g6F540F3s6@6,4M6B6/5f5u5L6(5O0F5Q5C5`6M6{6O6}5Y6;6'6?5$0F5'75686Z4w6#6~6e6t3r5?0F5^7i6m786.4Q6Q6E7d3q0F647D6`4'797y6:6 6f3r6i0F6k7u6z7w7l7a6r615w0F6v7Z7G5q7V6R7X6(6I0F6K7R2t1b2V102K2x0k1%2C4|4k2J1h182U092W385)184k82200w0k0$2?2s5j3g898b6S5M1:25098h7)545l3U7k060L5l010o0J090V1_0'090z0V2k6U0o0b2F0X0m0p0h0o0l0o0B8I090r8L0h840,76872i8g068c2#7C8f8a8'8i6(8k1{8m8-8o8*2u5C8s0n0*1F0p0E09086x2X0o691=0M0*0584958{0K8}0w8 84961R0)020b9i9d0*0z1,1s9o6-0$9l9n8!9j0$070w0*6X9z8s9l0j9b9A069C0*599G9v069I9K8s98020D9u7T9M9D5m9Z7H9k0*0h8X8!8Z2Z3A8%8(1,3Q8+8n6=9@0o8l9_7B2 5O3w9.839:8,9=0n3q5$4 9;8.543/9|8;9~70ae1J5(8s8u0*8w8y8A0n8C8E2j1O0G0B8S8J0n8L8N8P3uaz8T8V0{9,689Q88a6088d479^8?9`aSag1|ai7M5?8r9R8|028~90086K949L9W9a8!9ca%9ea(9g0E9'3B9xa{5Ga@9r1o09a~4Na}aN9(9B9$ay9P9/9R9Ta;9L9N6Wazb44(bfa-9V0*9Yb73Bbi34bs4|9l9+8Ya{acaR0D64abaP8@4o8:aYaU9 bEal36a33y5pbC8)2 6ibGaZ7p4GaX8=7o4;bXam9Rao02aq8z0o8B0w8D8F1O588I8K0{aE8Q55aI8WbAbsbU9?4XaTb'5w4Yb$bZ4;6va$9!a'a)91589U9Ra/clcga@a)bl1=b6bdcp9q9sb3bwb50*9ycvb89#57bca4be0*9Jbgbp9Xcs1RbucIbS9HcLcocF9WbrcEbt9$bvc#bx9*aL3@c3aPbD6IbYbMaj3q4?cbc=7Mc:5RbR7/a58hbD58c7ad5j56c_c86Gd38_8#3Bb,b.asaub@3u0Gb`aCb|8Ob~7sdmaDc+5Ec-d1bV308q2-acbIdzbKb%d56g8qb*cg9f8 cjc'38a=9!cncNa?dMa`cAbmcCcQ3!b0cyd#9Sd!dY1=bi7sd(bndQa.bqd(d-66c(cB02cMbocmd?d+cRc%d/c*c2c#c4a86g3sc;d98p1/d8dH5xbP39dw8-d2a1dBbHaV303RegdD5Nej9Ldf8xb/1+0wav2k0xdsdoaF58aAb{8Mdu5Tela75jaaepcc5#dFeVdaaadKcFcha_cj5Ad~dS99cX4fcqa_e49md(0nd%b2e;cDcJ9!d-e;d}d;8scSdPcUcKd|e-4|e~e19we59-bBc.dy0xa#eUc`7pfieXfl62a#c}ffdxc530bFfked5j4peuer63exan8veA0V070m0g0'0f1Ndj0caw8ReHeNaF0c0BeG0b8Uc1feeQaQfhbXfyeh6hfofz6gb)8`a%dWcj5Qe*cYe,dUcwa^9hfbd)e=g1e@cxe_g1cue|cFbicTc f6f03ydRgb9$fXf4ge9!d:ghbhgke;bzf%e7fgfv0xcef+evca9}fp5Mcefsf'd2c:gBfDc^gEf/6HfFb+fHar0ofKfM0(fPfS0ifSeLdnfV8Q0A0A0IfU8Ne6ga0oe87C6Veceh6Uf.g`g^e#4ff@080x5'f`3BdTh5a dWe`e?e^9tg8d*d`4(gce f84Nbig+5^hhctcWf}gj0*6khq9)02guaMgwfue93rdAg=eqbN6)g|dDhKdcc~ddg?2 6@d4hMefgPg`ebg 7{gUeB0SeE1O55g'dteJaHf!aJ0meOekhCemdy73hUerh`fChJa1h!5Vh1fihl4(h7f1dVf dXhxfcg3ic3Chdczifg9f5e+cPg1cSgdddc)f7htc$cHiq9Lgp2tgiiv6Wgth=hPbTgxhE7gh{hJafhXhMe!bQfth^fv7siLc?hS48h~iX7qgS9!ezgVgXfNg!2kfRi-h.eMb}330B0Fc0aKg:il8$iI7CfxhHeY6?fBiOh|bFi15,i3d_i8ima:h85Ve/g0ijhgg;h902b1hejjiejlhmgkbkhfitjfhic%i@hkiu4|cZd@gsjwhAc,h@eRhSf*j1gF6(b#j5hJf;h?g;hR3rgAjPgQ7ZhLh|gHf=i'h$fJfLi+b/eFi.1O0c0I0IdlaBh,b~0G0G0Ag.iFiSjM3rgLj#g`gOahjQ6?c|j*e$i3hwjcf{02jekie.hajwe{i|knjnd'kpjG0*j@j_jCjy97e0ifbi0G0sixcVjxkmjEkDjsjz57f_kOhrhzk29z0N867:817=7~100E7^k%2A2v0e1Mk!0N7?8Z0P0R0T0p02.