Rechercher un élément dans un tableau trié
L'objectif de cet exercice est d'écrire une fonction indice
- qui prend en argument :
- un tableau
valeurs
d'éléments comparables rangés dans l'ordre croissant - une valeur
cible
, comparable à celles du tableau
- un tableau
- qui renvoie :
- l'indice de
cible
dans le tableau s'il en fait partie None
sinon
- l'indice de
La fonction indice
utilisera une fonction indice_recursive
qui sera récursive et qui prendra les mêmes arguments que indice
, et en plus debut
et fin
qui désigneront les indices pour la recherche : de debut
inclus à fin
inclus.
Remarque
Le tableau valeurs
pourra être rempli d'entiers ou rempli de chaines de caractères, sans aucun changement à procéder ; en effet ce sont des éléments comparables entre eux, ordre naturel pour les entiers, ordre lexicographique pour les chaines de caractères.
Exemples
>>> nombres = [2, 3, 5, 7, 11, 13, 17]
>>> indice(nombres, 7)
3
>>> indice(nombres, 8) is None
True
>>> fruits = ["abricot", "kiwi", "mangue", "poire", "pomme"]
>>> fruits == sorted(fruits) # le tableau est bien trié
True
>>> indice(fruits, "kiwi")
1
>>> indice(fruits, "cerise") is None
True
On garantit que le tableau passé en paramètre a été au préalable trié.
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
.128013fe)61ipmSvk(q5rxNOd;Po/aR l+é[C8y7_3:-tg.=swc,]hDù2nb094u050t0c0N0y0g0B0R0A0T0B0y0R0R0Q010N0g0h010406050R0)0i0i0y0p0H040j0w0B0)0}0w0!0A020y0i0h0u0A0z0c170p0n0)0c0R050x1416181a120h04051F1y1I0x1F120t0g0k0=0@0_0{0W0g0O0W0B1W0W0N10050-0#0B0c1R0^0`011V1X1Z1X0N1)1+1%0N0p1G0N0W0=1d0R0h0y0!0{0Z011-1T010b0/0c0!1l0c1%23252a1/2d1+2g0i2i040a0A0v0p0w0h0w0R0g1g1i0+210p0p0c0T2D1y2k0!1G0x1 2P1|1~1}1(0t2m0{1Z0!2f2A1%1O1Q0?1.2Z0g2#0!0w2)1%0h2I1G2N2P2`13241i2+2b2:0p170B100A0f2M2~112}2l301/3234360Z39253b2N2Y013g0y35040A0K3k2O123n3e0{3q3s0A0(3w3m2~3o3C360o3G3y3I3A3p0w333r360e3N3c2 1S3f3S3h3t0I3X3z3!3B3$3U3t0G3*3P3,3R3T3D0%3=3d3@3K040f0$3|3Z2,3^3%0f381z3a3O3}453 0f3j4a3l4c44313.3s0f3v4i3x3Y3J4n100f3F4r2P2@0c2P2)2S0t1~2X3Q0T2;2s0*1P1G4B2_3a3G054K0+4R4d2b0l100+0b4T3+450S364(3?4e0b102.1O0T0c0J2I0T0)0p2B0k0c4-4Y1/0 040m514l3f100k3r0c4|1x4z4t3Q540U3G0A5h3~100T0g1*505g4)2b5j5l5n4e4#0c0#1f573o5x4z5m5v59042d0!5F5i100d0L3N0A5V5J4.4Z4;4%5I5z315B5D0N5y5K0{0w10020O0N0u5,5Y5L5N5P3@545T4z065W625X520{4!042I0N4|5O5$5-010l0T100r1h5t2`615W5%5L0i0/0g5d5^65015/040Q6v580{54565u5_3B5)5E6d6H6x100C6B3J105{6G6w540d6Q3Q6y0x0x6Y3@6r104h6m626p665!6%5A045b1+5e5|45540E6`5(046r1Z6u6U6C01540V6;2b6y5;5?795L5q5s6~53105 6,635V6.6f10696b7e6I044=0g4@4_2J5e1P6l4S6e6E7i7v6@5d4}7I76105k6L6w0!5p5r1+7N5H2`64757T040+5*7X7P7u3p10716t0)7,6y0M7,6)407*046X606-6e670c1Z5#7Z7p7$7K6_745G106}8a3Q7$7/732|7G10787R757b0B7d8n6R047g7W8e5}7k5U7n7!3o677s0p6c856e7$7x7z4`7C4 7{6F8j6M875c898S6V7+8s8f7U7h8x6{8Z8I8T7.6s8i3a8C6Z6O7^0g4w7{7Q8+7S6S2.7{7}7m7o8010820R7E3l7p5~8A7n7p8E0,7t8!5o708.7;60064k8D5B847F6M4+3t7N0!4:7w0!4?982O9a108R9t8}6?8V7M8(5w8*8:868$8w8X756W7l4b7 6M9f6a8G7,8K9B7y4^8N4}7D8Q9x5a9L5f9U8b048{9Q8J9S9D4X9V9P3l8;6(8^04429N7j9`9(0#102p9:a97J9?907=107@9i457_499^5Q7|3X0x4V4C1J2^1y4E1y0N4GaD2V2Q0y5s4D4O1Ea03o2I0i0J0b0y0l4^0W0K101q1s1u1w0A9X991L3b1F0X250;4@0N0A0c0q0c0p5q4@0R0U0A1h0A4`0Wa_0Tb30A0@0=7V1,0ta/0A0)1i2.0Na_6@1+a445182C0W17bi0q10090m0E7(1fa~5N0V09913aa~0y4 0Tbm2bbo1 bra@bu0mby0NbD5l0,bK1/bMbq0ybsbQ5NbU5I2.0?0)0R0P1Ja,040s1i0y4|0.a=0h0)0Ab^0_0gb10D3r0g970pb70yb12Jb3a`b6bc0!0;0B000!bi0pbk1,7pbZbObt04bvbx5Cbz0A5N0Eb)2`a~0w0YbX0{cqb#bPct0mb(bEa31wa=a@b,b.b:1N1P3o1;1Y1!1$aO3Q2o2f2h102u0j0T0p0~a=0v0H1 1h4T4Q3Y2{4Saxc%3@674$7N9v5mah3p9z8L9,7B9.8Pd77Hd78U6^9Mas8yabao6 8v9 9Fdn8|7#6J5+dfa22OcG7-5M8 dy7|a)3x9Z6w670g9sa39R7%cwdxdu3o7b5=0u6Ado5`dEdl8)04dH118BdB9#9hdT3Q6g6i6k9cdB8g9lal6z7,dgd$6 bSd{6PdZ7v6Td aacOdA7p6!6$e4017_6+9Y6o947wdNea9}9Kdj9@9Ia1048de77v8h9mew7O048md/3@dV8reE6=dq7{d)6n9dek8F8H9|8,9A9C7A4{dddr8k559;ep7Ler99e!9{dOeoeKdFe,eneTe1e:9(8-72ezes9_e9d*ej9!9583e_e%8We}atevf89jey7{eDeS6w8peHfgdv8ubaeLd@dJ75d-9%ee9)eV9-4~eZ6Md~fb6=88dkfC9Odtfk8te/eA7YfJ8#9ke{e28@8_e^fu8~eRe*fA5Rd@9ef397fo7~8Bf%689gfteI6 fd9nf-d3d7d59xd99*4@ageAdie(8`f5fLfGe8eMfq9qf.9$fYe=9JdaeW8Ofz8Ye#dh9=eqg4fWfm8%fMdz9w6e7_a8gufIe-8Tad04afdF9HfZ9JfEe)9Ee!0de 12aw4L4AaA0x4EaN0FbWbhbj3rblbH2Jc80A0#3S2#0A140h0Dc:7L1,cS1eg_0Ra=1f6s0R0D0Acfcha%131|1h0O040R1Za|2Mh80!haa(cV4N2*3@cZ1?1#2j6Mc)2q2sc-c/c;2vc@0Wc_5gc{2|5gc eb5:dW7c0uhLf50b0p0)2CgMgw6M6ydYf;aafagJ750R2804021u0w5?aJc:4K0Nh*0)h,5@fVhY0{h%5:h+5?0l0g0S0gh=h@gqh`01h|h)h~0u17hh1vi4fjh#9_e;hU6wi9ig0u2z0g2Iioi6fO3@inib2z160citdFffa39p8=h)hKiJihgfflhPhR0NhTdsh!gN6Maqf*eA7_3MiD439_iTd045ixh?h i1i3ibiugCimh(ioid0Oifi:h_ivi*i@iy0wiriBi|gAikdBi+h@iz2riCgAiE4s6eeGhMiKh^i77$iOhS7{i(7pgyiXg70{7_4qjei$f97Nj9h-0#h/h,jdjveBj77pjD0ui0i2jIiiatjL6ejNi_i{i,jljJ77avhH1LgVgXaB0,0.0:04.
Dans cette version, la fonction indice_recursive
est définie à l'intérieur de la fonction indice
.
###(Dés-)Active le code après la ligne
(Ctrl+I)
# Tests
(insensible à la casse)(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
(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
.128013fe)61i_p3m:Svk-(5rtgN=swcd;,Po/]ha2n bl0+[948uy7050A0c0t0I0g0N0x0L0z0N0I0x0x0w010t0g0i010406050x0U0k0k0I0s0V040m0E0N0U0;0E0K050F0{0}0 110_0i04051h1a1k0F1h0_0A0g0n0)0+0-0/0H0g0u0H0N1y0H0t0@050!0M0N0c1t0,0.011x1z1B1z0t1H1J1F0t0s1i0t0H0)140x0i0I0K0/0J011L1v010b0$0c0K0I0k0c1F1(1*1/1N1=1J1^1`0@0a0L0D0s0E0i0E0x0g170K0L0Y1$0s0s0c0z2f1a1}0K1i0F1!2s1X1Z1Y1G0A1 0/1B0K1@2c1F1q1s0*1M2C0g2E0K0E2I1F0i2l1i2q2s2W0`1)2g2K1:2P0s0~0N0@0L0f2p2!0^2Z1~2$1N2(2*2,0J2/1*2;2q2B012_0I2+040L0j2}2r0_302@0/33350L0S392 2!313f2,0r3j3b3l3d320E2)342,0e3q2=2#1u2^3v2`360W3A3c3D3e3F3x360T3J3s3L3u3w3g0R3R2?3T3n040f0O3Y3C2L3U3G0f2.1b2:3r3Z3+3#0f2|3:2~3=3*2%3N350f383{3a3B3m400@0f3i442s2T0c2s2I2v0A1Z2A3t0z2Q1{1i4h1j2U3B2X2:054n0Y2V3S3+0o0@0Y0b3j463t0y2,4H3K3@0b0@2N1q0z0c4M4B1:0?040q4V3?2%0@0n340c0U0s0x4#3~1N4Y0C3j0L4I3!0@0z0g1I4U4c4_3+4Y0d0l3q060L584^4N1:4D044F4/314K365g3t0K4P044R0g4T0h2l0z4,2d0n4 2Y5b4;0@4!505A3e4(4*5v5k3T4=4@514%044|4~5K520@4?4c5a4W2^4E0c0M165T4X5V5N5F320@1=195E5Z0/53554c57595|5O1N5d0g4G5X5~5G5e5$5(635-0E0@020u0t0B5,5?5.045:5)5B045_2W5{5|6s5Y4$5 0@2l0t4,5;2W6u4:0/0o0z0@0v185y3;6t58646j0k0$0g4+6h6v0/6b040w6V6E014Y5D5z6i0K5#5%0t6#316Y0P6:5l5/2N6m5@0@0d6@3T6Y0F0F6 3+6R0@3`6q6N6D3160626C6P6,044)1J5J5=6W6%0@0Q6{6Q6S6U7m6$4Y0G741:6Y6d6f7z5!5Q4}1J7r4Y6p6M7a596P5d6y6A7E655p5r5t5v1r6L2~6P6(7r7h7j4+4-7J5+696+4{7H7!2r7$7.7f5-7h0Y6.7-045W7`7:046R1B7u827n6Y0p7T01763$7 6~5`7a7P0@0c1B7e2:7b6^7i5I7,7v314Y7q8v8r856T0U7 7y7/896c0N7D8G6$7h5R7I8z5L0@7L3|7N7O5-7Q0Z7S8L3m4Q0K4S0c5s2m7Y5x7 6)4w7{5H7k8u6*7n5M8#8r8O7?4A8`7_8p7g0@8B87936a0@6?8|3T8e3/8_7w922~8q4`6k6`8Q5U048h796N8k048m0x8 7^6o3q8V6O8X6x8Z0s6B9883968D5`6r9k4C9F6z9H8c7h7V8*7X4-7Z8/7(8?7+4.9o5*809U7;5S9*6n819J7n8e3(9:6|9,9c3@0M0@229#9`6j7*7l9g8w6}8c8a8c9e8g3A0F4y4f1l4t0F4r2t4j1a2wap0I4~4g1r2;al0Z0#0%04.
# Tests
(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)