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
.128013snc)wuql3 (;ébokp/h1t,[ùaRPmy7]f4O_2D96ev-8x+dCiSg:5=N.0r050U0O0v0z0W0i0b0k0d0i0z0b0b0#010v0W0r010406050b0g0C0C0z0)0D040X0p0i0g0}0p0c0k020z0C0r0m0k0A0O170)0h0g0O0b050s1416181a120r041y1F051I0s1I1K1F120U0W0P0=0@0_0{0t0W0Y0t0i1Y0t0v10050-0o0i0O1T0^0`011X1Z1#1Z0v1+1-1)0v0o0p0U1a1*0)1G0v0t0=1d0b0r0z0c0{0K011/1V010G0/0O0c1l0O1)2a2c2h1;2k1-2n0C2p040a0k0B0)0p0r0p0b0W1g1i0+280)0)0O0d2K1y2r0c1G0s262W0v2423250U2t0{1#0c2m2H1)1Q1S0?1:2*0W2,0c201R1)0r2P1G2U2W31132b1i2=2i2`0)170i100k0u2T3511342s371;393b3d0K3g2c3i2U2)013n0z3c040k0j3r2V123u3l0{3x3z0k0H3D3t353v3J3d0!3N3F3P3H3w0p3a3y3d0N3U3j361U3m3Z3o3A0E3(3G3+3I3-3#3A0R3;3W3?3Y3!3K0M3|3k3~3R040u0(433*2?3 3.0u3f1z3h3V444c460u3q4h3s4j4b383^3z0u3C4p3E3)3Q4u100u3M4y2W2~0O2W2:2Z0U2%3v0d202z0*1R1G4I303h3N054Q0+4X4k2i0q100+0G4Z3=4c0f3d4.3}4l0G102^1Q0d0O0J2P0d0g0)2I0P0O4?4(1;0 040l574s3m100P3y0O521x4G4A3X5a0w3N0k5n45100d0W1,565m4/2i5p5r5t4l4+0O0o1f5d3v5D4G5s5B5f042k0c5L5o100e0Z3U0k5#5P4@4)4`4-5O5F385H5J0v5E5Q0{0p10020Y0v0m5=5(5R5T5V3~5a5Z4G065$685%580{4*042P0v525U5,5?010q0d100$1h5z31675$5-5R0C0/0W5j5~6b015^040#6B5e0{5a5c5A5 3I5/5K6j6N6D100T6H3Q10616M6C5a0e6W3X6E0s0s6(3~6x104o6s686v6c5*6-5G045h1-5k624c5a0x705.046x1#6A6!6I015a0F6`2i6E5`5|7f5R5w5y745910656=695#6@6l106f6h7k6O044{0W4}4 2Q5k1R6r4Y6k6K7o7B6}5j537O7c105q6R6C0c5v5x1-7T5N316a7b7Z040+5:7%7V7A3w10776z0g7=6E0Q7=6/477:046%666?6k6d0O1#5+7)7v7,7Q6 7a5M10738g3X7,7^79337M107e7X7b7h0i7j8t6X047m7$8k637q5!7t7*3v6d7y0)6i8b6k7,7D7F507I55816L8p6S8d5i8f8Y6#7;8y8l7!7n8D718)8O8Z7@6y8o3h8I6)6U7~0W4D817W8;7Y6Y2^81837s7u8610880b7K3s7v648G7t7v8K0,7z8*5u768@7`66064r8J5H8a7L6S4;3A7T0c4_7C0c4|9e2V9g108X9z936|8#7S8.5C8:8_8c8,8C8%7b6$7r4i856S9l6g8M7=8Q9H7E4~8T537J8W9D5g9R5l9!8h04919W8P9Y9J4%9#9V3s8`6.8~04499T7pa09.0o102w9_af7P9|967{107}9o4c7 4g9~5W823(0s4#4J1H2 1y4L1y0v4NaJ2#2X1 212Z0z5y4K4U1Ea63v2P0C0J0G0z0q4~0t0j101q1s1u1w0k9%9f1L3i1F0L2c0;4}0v0k0O0S0O0)5w4}0b0w0k1h0k500tb20dbc0k0@0=7#1.0Ua{0k0g1i2^0vb26}1-aa4c182J0t17br0S10090l0x7.1fb75T0F09973hb70z550dbv2ibx26bAb0bD0lbH0vbM5r0,bT1;bVbz0zbBbZ5Tb%5O2^0?0g0b0%1Ha^040I1i0z520.a~0r0g0kc10_0Wba0n3y0W9d0)bg0zba2Qbcb3bfbl0c0;0i000cbr0)bt1.7vb,bXbC04bEbG5IbI0k5T0xb=31b70p0yb*0{czb.bYcC0lb;bNa91wa~b0b^b`b|1P1R3v1?1!1$1(aX3X2v2m2o102B0X0d0)0~a~0B0D261h4Z4W3)324YaDc:3~6d4,7T9B5san3w9F8R9=7H9@8Vdg7Ndg8!6~9Say8Eahau758Ba59Ldw927+6P5;doa82VcP7?5S95dH82a=3E9)6C6d0W9ya99X7-cFdGdD3v7h5{0m6Gdx60dNdu8/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-0ef812aC4R4HaG0s4LaW0Vb)bqbs3ybubQ2Qch0k1 8M1.140r0nc|7R1.c#1eh10ba~1f6y0b0n0kcocqa:132!1h0Y040b1#b52Thg0chia;c(4T2;3~c,1^1%2q6Sc=2x2zc_c{c}2Cd00td25md4335md8ek5_d)7i0mhTfe0G0)0g2JgVgF6S6Ed+f}agfjgS7b0b2f0401aSc|4Q1(gzh*0{h/106l0W0f8~h`fX3~h}h;17hp1v01i3gL6Ci67c0p0W2Pibf(h{01if2G162pfn5r9v8{04hTixd)hWhYh!81h,gW6Sawf?eJ7 3TdOfo4qdBiEd94cif0qi0i2ili4iSh:eo2c0Yiaicgoh.i!2GiiiriXidi+h~ip2yikgJiN4z6kePhUhSizgAhXhZ0vh#iP7TgHiIgg0{7 4xi`4a9 iQ7vifh?7E0ph_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
.128013,[snacPmy7)f]4_wu29l3 (6ev0-8;b+okp/ihSg1t:5=Ndr050V0z0Q0f0L0u0d0w0g0u0f0d0d0T010Q0L0J010406050d0r0i0i0f0W0j040N0H0u0r0;0H0e050K0{0}0 110_0J041a1h051k0K1k1m1h0_0V0L0A0)0+0-0/0M0L0O0M0u1A0M0Q0@050!0F0u0z1v0,0.011z1B1D1B0Q1J1L1H0Q0F0H0V111I0W1i0Q0M0)140d0J0f0e0/0s011N1x010m0$0z0e0f0i0z1H1/1;1_1P1|1L1 210@0a0w0h0W0H0J0H0d0L170e0w0Y1-0W0W0z0g2m1a240e1i0K1+2z0Q1)1(1*0V260/1D0e1~2j1H1s1u0*1O2J0L2L0e1#1t1H0J2s1i2x2z2%0`1:2n2R1`2W0W0~0u0@0w0P2w2+0^2*252-1P2/2;2?0s2_1;2{2x2I01300f2=040w0v342y0_372~0/3a3c0w0o3g362+383m2?0S3q3i3s3k390H2:3b2?0y3x2|2,1w2 3C313d0k3H3j3K3l3M3E3d0D3Q3z3S3B3D3n0t3Y2}3!3u040P0B3)3J2S3#3N0P2^1b2`3y3*3=3,0P333`353|3;2.3U3c0P3f423h3I3t470@0P3p4b2z2!0z2z2P2C0V2G380g1#221i4o1l2#3I2(2`054t0Y2$3Z3=0I0@0Y0m3q4d3A0q2?4N3R3~0m0@2U1s0g0z4S4H1`0?040x4#3}2.0@0A3b0z0r0W0d4+451P4(0b3q0w4O3+0@0g0L1K4!4j4 3=4(0l0R3x060w5e4~4T1`4J044L4^384Q3d5m3A0e4V044X0L4Z0p2s0g4=2k0A552)5h4`0@4*565G3l4.4:5B5q3!4{4}574-0452545Q580@4|4j5g4$2 4K0z0F165Z4%5#5T5L390@1|195K5)0/595b4j5d5f625U1P5j0L4M5%645M5k5,5.695?0H0@020O0Q0E5=5|5@045_5/5H045 2%61626y5(4,650@2s0Q4=5`2%6A4_0/0I0g0@0U185E3{6z5e6a6p0i0$0L4;6n6B0/6h040T6#6K014(5J5F6o0e5+5-0Q6+386(0G6_5r5^2U6s5}0@0l6}3!6(0K0K753=6X0@416w6T6J3866686I6V6=044/1L5P5{6$6-0@0c716W6Y6!7s6,4(0n7a1`6(6j6l7F5*5W531L7x4(6v6S7g5f6V5j6E6G7K6b5v5x5z5B1t6R356V6.7x7n7p4;4?7P5;6f6;517N7*2y7,7@7l5?7n0Y6@7?045$807_046X1D7A887t6(0C7Z017c3-8574607g7V0@0z1D7k2`7h6~7o5O7=7B384(7w8B8x8b6Z0r857E7^8f6i0u7J8M6,7n5X7O8F5R0@7R437T7U5?7W0Z7Y8R3t4W0e4Y0z5y2t7(5D856/4C815N7q8A6:7t5S8+8x8U7|4G907 8v7m0@8H8d996g0@6|923!8k3_8 7C98358w506q708W5!048n7f6T8q048s0d957~6u3x8#6U8%6D8)0W6H9e899c8J606x9q4I9L6F9N8i7n7#8:7%4?7)8^7.8|7;4@9u5:869!7`5Y9:6t879P7t8k3/9_729=9i3~0F0@299+a06p7:7r9m8C738i8g8i9k8m3H0K4E4m1j4z0K4x2A4q1a2D2C1!1$2C0f544n1t2{ar0Z0#0%04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)