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
valeursd'éléments comparables rangés dans l'ordre croissant - une valeur
cible, comparable à celles du tableau
- un tableau
- qui renvoie :
- l'indice de
cibledans le tableau s'il en fait partie Nonesinon
- 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
.128013s3_8ufvy n7aS1me(P24C:twi]D[h)6Oo;bcdgù/0lqp.r-,=+Nk95Rxé050L0q0x0m0z0Q0b0j0K0Q0m0b0b0X010x0z0S010406050b0f0p0p0m0U0i040n0H0Q0f0}0H0k0j020m0p0S0I0j0%0q170U0R0f0q0b050O1416181a120S041y1F051I0O1I1K1F120L0z0h0=0@0_0{0D0z0M0D0Q1Y0D0x10050-0J0Q0q1T0^0`011X1Z1#1Z0x1+1-1)0x0J0H0L1a1*0U1G0x0D0=1d0b0S0m0k0{0t011/1V010g0/0q0k1l0q1)2a2c2h1;2k1-2n0p2p040a0j0s0U0H0S0H0b0z1g1i0+280U0U0q0K2K1y2r0k1G0O262W0x2423250L2t0{1#0k2m2H1)1Q1S0?1:2*0z2,0k201R1)0S2P1G2U2W31132b1i2=2i2`0U170Q100j0o2T3511342s371;393b3d0t3g2c3i2U2)013n0m3c040j0c3r2V123u3l0{3x3z0j0u3D3t353v3J3d0$3N3F3P3H3w0H3a3y3d0F3U3j361U3m3Z3o3A0l3(3G3+3I3-3#3A0e3;3W3?3Y3!3K0#3|3k3~3R040o0P433*2?3 3.0o3f1z3h3V444c460o3q4h3s4j4b383^3z0o3C4p3E3)3Q4u100o3M4y2W2~0q2W2:2Z0L2%3v0K202z0*1R1G4I303h3N054Q0+4X4k2i0!100+0g4Z3=4c0y3d4.3}4l0g102^1Q0K0q0d2P0K0f0U2I0h0q4?4(1;0 040r574s3m100h3y0q521x4G4A3X5a0W3N0j5n45100K0z1,565m4/2i5p5r5t4l4+0q0J1f5d3v5D4G5s5B5f042k0k5L5o100E0w3U0j5#5P4@4)4`4-5O5F385H5J0x5E5Q0{0H10020M0x0I5=5(5R5T5V3~5a5Z4G065$685%580{4*042P0x525U5,5?010!0K100Z1h5z31675$5-5R0p0/0z5j5~6b015^040X6B5e0{5a5c5A5 3I5/5K6j6N6D100Y6H3Q10616M6C5a0E6W3X6E0O0O6(3~6x104o6s686v6c5*6-5G045h1-5k624c5a0C705.046x1#6A6!6I015a0A6`2i6E5`5|7f5R5w5y745910656=695#6@6l106f6h7k6O044{0z4}4 2Q5k1R6r4Y6k6K7o7B6}5j537O7c105q6R6C0k5v5x1-7T5N316a7b7Z040+5:7%7V7A3w10776z0f7=6E0V7=6/477:046%666?6k6d0q1#5+7)7v7,7Q6 7a5M10738g3X7,7^79337M107e7X7b7h0Q7j8t6X047m7$8k637q5!7t7*3v6d7y0U6i8b6k7,7D7F507I55816L8p6S8d5i8f8Y6#7;8y8l7!7n8D718)8O8Z7@6y8o3h8I6)6U7~0z4D817W8;7Y6Y2^81837s7u8610880b7K3s7v648G7t7v8K0,7z8*5u768@7`66064r8J5H8a7L6S4;3A7T0k4_7C0k4|9e2V9g108X9z936|8#7S8.5C8:8_8c8,8C8%7b6$7r4i856S9l6g8M7=8Q9H7E4~8T537J8W9D5g9R5l9!8h04919W8P9Y9J4%9#9V3s8`6.8~04499T7pa09.0J102w9_af7P9|967{107}9o4c7 4g9~5W823(0O4#4J1H2 1y4L1y0x4NaJ2#2X1 212Z0m5y4K4U1Ea63v2P0p0d0g0m0!4~0D0c101q1s1u1w0j9%9f1L3i1F0B2c0;4}0x0j0q0(0q0U5w4}0b0W0j1h0j500Db20Kbc0j0@0=7#1.0La{0j0f1i2^0xb26}1-aa4c182J0D17br0(10090r0C7.1fb75T0A09973hb70m550Kbv2ibx26bAb0bD0rbH0xbM5r0,bT1;bVbz0mbBbZ5Tb%5O2^0?0f0b0T1Ha^040G1i0m520.a~0S0f0jc10_0zba0)3y0z9d0Ubg0mba2Qbcb3bfbl0k0;0Q000kbr0Ubt1.7vb,bXbC04bEbG5IbI0j5T0Cb=31b70H0Nb*0{czb.bYcC0rb;bNa91wa~b0b^b`b|1P1R3v1?1!1$1(aX3X2v2m2o102B0n0K0U0~a~0s0i261h4Z4W3)324YaDc:3~6d4,7T9B5san3w9F8R9=7H9@8Vdg7Ndg8!6~9Say8Eahau758Ba59Ldw927+6P5;doa82VcP7?5S95dH82a=3E9)6C6d0z9ya99X7-cFdGdD3v7h5{0I6Gdx60dNdu8/04dQ118HdK9+9nd$3X6m6o6q9idK8m9rar6F7=dpd/75b#e46Vd,7B6Ze8agcXdJ7v6*6,ed017 6;9(6u9a7CdWeja39Qds9}9Oa7048jeg7B8n9seF7U048sd{3~d(8xeN6{dz81d=6t9jet8L8Na28=9G9I7G51dmdA8q5b9`ey7ReA9fe-a1dXexeTdOe^ewe$eae|9.8?78eIeB9 eid?es9*9b89f2e:8$f6azeEfh9peH81eMe#6C8veQfpdE8AbjeUe0dS7bd_9-en9/e(9?54e,6Se7fk6{8edtfL9UdCft8ze{eJ7(fS8+9qf4eb8}8 f1fD94e!e?fJ5Xe09kfc9dfx848Hf:6e9mfCeR75fm9tf_dcdgde9Ddi9:4}ameJdre;90fefUfPeheVfz9wf`9,f+e~9Pdje)8UfI8(e.dq9{ezgdf)fv8-fVdI9C6k7 aegDfRe_8Zaj04aldO9Nf,9PfNe=9Ke-0Ef812aC4R4HaG0O4LaW0vb)bqbs3ybubQ2Qch0j1 8M1.140S0)c|7R1.c#1eh10ba~1f6y0b0)0jcocqa:132!1h0M040b1#b52Thg0khia;c(4T2;3~c,1^1%2q6Sc=2x2zc_c{c}2Cd00Dd25md4335md8ek5_d)7i0IhTfe0g0U0f2JgVgF6S6Ed+f}agfjgS7b0b2f0401aSc|4Q1(gzh*0{h/106l0z0y8~h`fX3~h}h;17hp1v01i3gL6Ci67c0H0z2Pibf(h{01if2G162pfn5r9v8{04hTixd)hWhYh!81h,gW6Sawf?eJ7 3TdOfo4qdBiEd94cif0!i0i2ili4iSh:eo2c0Miaicgoh.i!2GiiiriXidi+h~ip2yikgJiN4z6kePhUhSizgAhXhZ0xh#iP7TgHiIgg0{7 4xi`4a9 iQ7vifh?7E0Hh_i:i*3viTiVi_jbeKe}h$iei!i8i%i/jf661yhP1Lg(g*aH0,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
.128013s3o_8;bcdufvg/0ly n7apSr1-me,(P2=4:+Ntwki9][5h)6050j0C0M0v0P0q0b0s0i0q0v0b0b0H010M0P0w010406050b0k0B0B0v0y0r040x0d0q0k0;0d0t050o0{0}0 110_0w041a1h051k0o1k1m1h0_0j0P0m0)0+0-0/0U0P0n0U0q1A0U0M0@050!0h0q0C1v0,0.011z1B1D1B0M1J1L1H0M0h0d0j111I0y1i0M0U0)140b0w0v0t0/0G011N1x010l0$0C0t0v0B0C1H1/1;1_1P1|1L1 210@0a0s0F0y0d0w0d0b0P170t0s0Y1-0y0y0C0i2m1a240t1i0o1+2z0M1)1(1*0j260/1D0t1~2j1H1s1u0*1O2J0P2L0t1#1t1H0w2s1i2x2z2%0`1:2n2R1`2W0y0~0q0@0s0z2w2+0^2*252-1P2/2;2?0G2_1;2{2x2I01300v2=040s0c342y0_372~0/3a3c0s0I3g362+383m2?0T3q3i3s3k390d2:3b2?0W3x2|2,1w2 3C313d0u3H3j3K3l3M3E3d0f3Q3z3S3B3D3n0Q3Y2}3!3u040z0p3)3J2S3#3N0z2^1b2`3y3*3=3,0z333`353|3;2.3U3c0z3f423h3I3t470@0z3p4b2z2!0C2z2P2C0j2G380i1#221i4o1l2#3I2(2`054t0Y2$3Z3=0O0@0Y0l3q4d3A0N2?4N3R3~0l0@2U1s0i0C4S4H1`0?040E4#3}2.0@0m3b0C0k0y0b4+451P4(0D3q0s4O3+0@0i0P1K4!4j4 3=4(0V0J3x060s5e4~4T1`4J044L4^384Q3d5m3A0t4V044X0P4Z0e2s0i4=2k0m552)5h4`0@4*565G3l4.4:5B5q3!4{4}574-0452545Q580@4|4j5g4$2 4K0C0h165Z4%5#5T5L390@1|195K5)0/595b4j5d5f625U1P5j0P4M5%645M5k5,5.695?0d0@020n0M0g5=5|5@045_5/5H045 2%61626y5(4,650@2s0M4=5`2%6A4_0/0O0i0@0L185E3{6z5e6a6p0B0$0P4;6n6B0/6h040H6#6K014(5J5F6o0t5+5-0M6+386(0K6_5r5^2U6s5}0@0V6}3!6(0o0o753=6X0@416w6T6J3866686I6V6=044/1L5P5{6$6-0@0S716W6Y6!7s6,4(0R7a1`6(6j6l7F5*5W531L7x4(6v6S7g5f6V5j6E6G7K6b5v5x5z5B1t6R356V6.7x7n7p4;4?7P5;6f6;517N7*2y7,7@7l5?7n0Y6@7?045$807_046X1D7A887t6(0A7Z017c3-8574607g7V0@0C1D7k2`7h6~7o5O7=7B384(7w8B8x8b6Z0k857E7^8f6i0q7J8M6,7n5X7O8F5R0@7R437T7U5?7W0Z7Y8R3t4W0t4Y0C5y2t7(5D856/4C815N7q8A6:7t5S8+8x8U7|4G907 8v7m0@8H8d996g0@6|923!8k3_8 7C98358w506q708W5!048n7f6T8q048s0b957~6u3x8#6U8%6D8)0y6H9e899c8J606x9q4I9L6F9N8i7n7#8:7%4?7)8^7.8|7;4@9u5:869!7`5Y9:6t879P7t8k3/9_729=9i3~0h0@299+a06p7:7r9m8C738i8g8i9k8m3H0o4E4m1j4z0o4x2A4q1a2D2C1!1$2C0v544n1t2{ar0Z0#0%04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)