Aller au contenu

Effectuer des requêtes dans une liste de données⚓︎

Série d'exercices

Cet exercice fait partie d'une série :

On s'intéresse dans cet exercice aux données décrivant différents animaux (source).

Chaque animal est décrit par les attributs suivants :

Attributs Description Type Python Indice
nom Son nom str 0
poil A-t-il des poils ? bool 1
plume A-t-il des plumes ? bool 2
oeuf Pond-il des œufs ? bool 3
lait Allaite-t-il ses petits ? bool 4
volant Peut-il voler ? bool 5
aquatique Vit-il dans l'eau ? bool 6
prédateur Est-ce un prédateur ? bool 7
dents A-t-il des dents ? bool 8
vertébré Est-ce un vertébré ? bool 9
air Respire-t-il dans l'air ? bool 10
venimeux Est-il venimeux ? bool 11
nageoires A-t-il des nageoires ? bool 12
pattes Combien a-t-il de pattes ? int 13
queue A-t-il une queue ? bool 14
domestique Est-ce un animal domestique ? bool 15
taille_chat Est-il de la taille d'un chat ? bool 16

Ces données ont été importées dans une liste Python nommée animaux. Chacun des éléments de cette liste est une liste contenant les informations décrivant un animal. On affiche ci-dessous le premier élément de la liste animaux :

🐍 Console Python
>>> animaux[0]  # l'ensemble des informations
['tortue', False, False, True, False, False, True, False, False, True, True, False, False, 4, True, True, True]
>>> animaux[0][0]  # le nom de l'animal
'tortue'
>>> animaux[0][1]  # cet animal a-t-il des poils ?
False
>>> animaux[0][6]  # cet animal vit-il dans l'eau ?
True

Comme on peut le voir ci-dessus, cet élément décrit la tortue (valeur à l'indice 0). La tortue n'a pas de poils (valeur False à l'indice 1) et vit dans l'eau (valeur True à l'indice 6).

Le but de l'exercice est d'effectuer des requêtes sur cette liste afin de sélectionner certains éléments (certains animaux). On utilise pour ce faire les listes en compréhension.

L'instruction ci-dessous permet par exemple de sélectionner les noms (attribut nom à l'indice 0) des animaux volants (attribut volant à l'indice 5):

🐍 Console Python
>>> [animal[0] for animal in animaux if animal[5]]
['moustique', 'frelon', 'papillon', 'blatte', 'libellule', 'cigale', 'fourmi']

Remarque

Pour les attributs de type booléen, il est inutile de tester l'égalité de la valeur à True ou False. Par exemple if animal[5] sélectionne directement les animaux volants, if not animal[5] ceux qui ne volent pas.

Il est aussi possible de compter les résultats en faisant par exemple (nombre d'animaux aquatiques sans pattes) :

🐍 Console Python
>>> len([animal for animal in animaux if animal[6] and animal[13] == 0])
10

Compléter le code ci-dessous en effectuant les requêtes proposées.

###(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 : 20/20
.128013s3o_8;bcdufvg?/T0lîyq n7aêpSQr1-me,(P2=4Ctwki9`][5hx)é6050j0I0Q0z0T0s0b0w0i0s0z0b0b0N010Q0T0B010406050b0k0H0H0z0E0u040C0d0s0k0{0d0x050p12141618100B041h1o051r0p1r1t1o100j0T0m0:0=0@0_0Z0T0n0Z0s1H0Z0Q0~050+0h0s0I1C0?0^011G1I1K1I0Q1Q1S1O0Q0h0d0j181P0E1p0Q0Z0:1b0b0B0z0x0_0M011U1E010l0-0I0x0z0H0I1O1_1{201W231S26280~0a0w0L0E0d0B0d0b0T1e0x0w0)1@0E0E0I0i2t1h2b0x1p0p1=2G0Q1:1/1;0j2d0_1K0x252q1O1z1B0;1V2Q0T2S0x1,1A1O0B2z1p2E2G2.111`2u2Y212%0E150s0~0w0F2D2=0 2;2c2@1W2_2{2}0M301{322E2P01370z2|040w0c3b2F103e350_3h3j0w0O3n3d2=3f3t2}0Y3x3p3z3r3g0d2`3i2}0%3E332?1D363J383k0y3O3q3R3s3T3L3k0f3X3G3Z3I3K3u0U3)343+3B040F0r3:3Q2Z3,3U0F2 1i313F3;3|3?0F3a413c433{2^3#3j0F3m493o3P3A4e0~0F3w4i3y444d3-4n3D4q4b4l4u3@3N4x4k3H463W4D3Y454m3@3(4I3*4K4A0F3/4O4s3S4A0M3_4U4c4W3U0M402.4y4F4L0M484*4E3=4-4h4:4J4t4%4p4^4P4`3$0M4w4}4V3!4X4C534#554%4H584z4%4N5d4,4X4T5h4=4A0c4Z5l4Q3U0c4)311q2,1h2W2J0j2N3f0i1,291p5z1s5x2:4q055E0)2-4~1W0i0F0~030w0q0I0b0Q0b3`5D5U045W0D0k0I0.0w0b1f0Q0w1S0/2%0H0/0)0/1{0T150k0!0w0m1b1{5#0w0o5%4F0~2z0v5-0Q0I0e5u3c0w4;3|0d0~0N3x6m4_1W0}040X3x6n2^0~5 2{6z6u0_6w6y5M6G010H0T0~5p5v6L6w0W6s6A1W0S0~0l3J6V6L0x6C0x603i6$5R0_0d0R0~2#6-543g6)6+626@59016Y040T0l6}3A6`6E6K6.016I6F796N0~526R796T6U4x4+3+5T5V0w0P0d0H0h0T250w0u0G0z0G0Q000-2v006D0z620w0z6f0z0{6f5Z5:1{0/1`1$7Q6a4!75046e6g6i4/316t796p046r4q7*6^0x0h0~2g7c6^6w0K6J2:6%766,787`0~7}7h6^7e046Q3c6W6H0~7k2.7:6~706!0E746c047H0s8m3+6:6=1g7/8c6_8o6*610!8r3|70728D6B8z6+8q826~7b8M3f8857868N8e8H1W8t8z0j8W3s808L7~7i847_6~884g8,3f6T8#017,0N7.8g8x888a2F8x6T0#3E7m3|7o5*0w5,5.0/5;0x5?5^0w5`5|7Q7H7J7L0k7N0T7P9b7S0w7U6h0/7X5q8I7#0*6i4@7)8x8^8?8O8)7;8%8:3H9I8T8Q6O899M3+8=8w6L8j6#9W796(8J778{6L8Y6?9!9K9%7I8C9-8i6=739=7Z8p9T3|9O8b6L8R9|219V9)7+6;8Z8?9$9{8P9N8+ac3+8.9D9 8*048f9E9*6q8`an7d9R8~3k908V7l8x965+5-5/9c9e7Q9h2v7Q2+0$0j7N0I0k0E9w6b3=6d0I7P6h0e4|ar6^9G9_ad6xa2369Laf9}ae9J8-ata*8dal8?9Y8la%aT9/8(a!6~9+8va59.9k9;b49?719^b89`8A81a:8;a/9P3H885cbj9Uaxbca(am4a9421aA7q7s7u7w7y7A7C7E0j7Gbe7J0b9s0B1c28aR7Y8n9AaX7g6l9F6qa97?047^a-a30~7|a?8yabbga(85aj87a=b#6vbpb03fa`a9a,bq8sa79,b}45806|a|8E9@8?8Y2%0Qb{a~b)9~8 a09R7(b/8Ual0W92ay6Lbw99aD5=5@aG7s9i5~bH630z0u679t1c9i0w0Y9t7N9v0w0K0I0!0;0k0#69aSc27!aV7$0e8SbUao7-9Hbickbd8Kcec*cgas6Pc.a^c521b`c^a+cdc{6/b b3b^8nb6a_c7c~b*bea c+b-b)ahc?bs2F8h3f7,020n0Q0gdd9RbTc:83c@4*bu5S5)5W7r7t7v2ubB7B7D0saI9t0EaLaNaP0/650=9dbO9yc|bR6ibmc$7+bWd77=7@25c?b(b=8$c}b,boa)d+6Mb;d.a.dud23+c`c18Ib+d`6od0ccd4d78Fbbe0d~d9c?b.dsa;7fdfc8a71{8!d#b|bnd^ec5Qb:0~dXedbhcmcodvazdy7q0Z0I0E0ieC0E0w0Q0d1d7Q9f2#8k152tcH0=0:1H3i1T0KeF0z0t2S0w0V010ieV1(0Vex42ez7p0K1S0wdK120s0+5?0j0d2s0w0A2K1T0ke$1K5!0I0J0w0*9g1f0wf41Tf66hdIfh5Ze.4a8x9$dV0e5ge88Xd!d}b?d:d@e9c-e56Z9Zfwd,d dYa#e2el9/c4fF6 d6fOaaead;cfeqee9SfUb@db8sapb)0b1~04e)e+29dfep8|d?enb$d_bte:97dAbzdD7zdFbEbG6{63e}bN7O5-0bf92weT0+0-e?bFf40:0Z7Nfa5?e$2p0xaM9dcKcy0w0daO0ldSe/7 cXaW6i5kft6/fvgF3gbYb!fzfxd*gMfGfTgP7ac/fW9Qc=fZf^dh8xd|gIfSfBfOb2e3cAd5bag,g)f?fxf:ch4vegd78Yejg:9(g=a@g@c;4Bg`g*eigpeh0~cag~bfh0gTfyhe88aieubrcn93f`dzeGeFeDcvfc7t2zdI9u7Qgg2u2r2z6*aM1T0ocNe?e^0ke`gke}e f1hwgh250{eDf9fb2%2uff5@0Tf7fm4jgAfq3^c8gHfIclh2b5gRhefVf;4nhjgVbrg.8khcdag!9*fKfRc3b7gIe6i0ebdpgXgSa4he8^aqf#3|f)0~01hC250ThF01f/icfYief!4j0p5O0I2G2+iB5y1A5A2J2L2H1+1-2J0z1RiE0p5z10iR0*0,0.04.