TP - Listes et fonctions
Exercice 1 : Indice ou valeur ?
On donne un tableau de nombres nombres.
Compléter le code des deux fonctions ci-dessous :
-
somme_par_indices_pairs prend le tableau en argument et renvoie la somme des valeurs placées à des indices pairs ;
-
somme_des_valeurs_paires prend le tableau en argument et renvoie la somme des valeurs paires.
Par exemple :
| Python |
|---|
| >>> # indices 0 1 2
>>> nombres = [4, 6, 3]
>>> somme_par_indices_pairs(nombres)
7
>>> somme_des_valeurs_paires(nombres)
10
|
En effet, :
- il y a deux indices pairs (
0 et 2) et la somme des valeurs correspondantes vaut 7.
- il y a deux valeurs paires (
4 et 6) et leur somme vaut 10.
On rappelle qu'il est possible de tester la parité d'un nombre n en faisant n % 2 == 0 :
| Python |
|---|
| >>> 14 % 2 == 0
True
>>> 15 % 2 == 0
False
|
.128013_r):ft-+]42[1skSuyP=x7hbwadge/5(imv%on3lcp680 9050B0D0g0A0H0O0o0U0P0O0A0o0o0u010g0H0Q010406050o0r0I0I0A0c0s040q0L0O0r0:0L0M050E0`0|0~100^0Q04051g191j0E1g0^0B0H0J0(0*0,0.0*0M0C0r0A0C0D0h0Q0s0g0x170U0x0H0C0x0O1L0x0g0?050Z0y0O0D1s0+0-011K1M1O1M0g1U1W1S0g0c1h1G0(130o0Q0A0M0.0l011Y1u010f0#0D0M0A0I0D1S1@1_1~1!211W24260?0a0U0t0c0L0Q0L0o0H160M0U0X1=0c0c0D0P2r19290M1h0E1G2E1.1:1/1T0B2b1v0H0M232o1S1p1r0)1Z2O2Q0M0L2U1S0Q2x1h2C2E2+0_1^2s2W1 2!0c0}0O1S0A1J2x0f0.030b0b0P2#0D1O2Z0L0h0l0h0n0?0U0n190A2,2/0@2.2a2;1!2?2^2`2|0D2~01303234362R39393d0l3g3i1_3k2C2N013p0A2_1h2{0x2}2 31330X3z2!3B0N3d0N3F2B3j0^3J3n0.3M3O053Q3S3v3U3y2P3A3a0k3d0k3%1a3)3l2:1t3o0L2@3N3r3R3t3T3x3W3_3Y3a0F3d0F3 2+3*2/3K3.493=3w3V354f383a0R3d0R4l413+443-463q3P3s3u4t3^373B0w3d0w4C3H4n3m4F3L4H484J4a4L3@4e4O3a0S3d0S4T2D4V432X4Y473/3;4b3?4d4v4*0h0V3d0V4/3I4o3,4@4I3:4K4c4u3X4x3b0T0?0n0T544;4p4Z4_5b4|5d4w3B0n3c045v5l425n4^4r4{4M4)3`3b1|5x3E0E3h3(4U5A574q4#4s4(4~5H0n3!5x3$5M3G4:5Q4X5S5a4$5c4N5X3|5x3~5$5O5(4E4?5+4`4%4}5e5u4i5x4k5@405P5`2=5o5D5~5s4 0n4z5x4B652-1m2)192U2H0B1:2M574u2T1q1h2(0D2*3j5^1h4u6A2a0H0B0.312C5u3r6H6J5 5t3a3c0U2f0D6P6d5X1S5@681!0p0?0X0f6C5)4?0z3d6,6$3-0f0?0o0L0|0D0b1^0c0b2P1p0P0D0o6}0!0c0o6;564X0=040G7a4W5{0?2!0I0y2x79662D6-1 7d0d0e6C0^7p6F2s6O016K2/3B5J5a7B5V603a1|6U256W7C6Q4 7G5$0U7V0U7r3o6^6`266C7X6=010L0?0u7%7Y0.0I0H0?5k7y7x2-3J7I0b6L3a5Z7H6I7Q6Y4g0h3!7N266X5/85807U7W7/016(040f467.7)0M0?0H8m7b4?0L6/042P8r7h2=0y0?0c1_1B7g4=7s0?7f7y8g0M8B042e8G3K7d8K7`8s2=7j6`7m748R577t7u7w8R7|7~0h5;818a5G853|887P7J6R8.6!3h7W8 7(8W6%8p6+7y918z7Z8w8y8H1!7+040K9b3K7;0?5L2+979c0.9e0u7-968g9j047@8V980.7d7v7^8+827D1_3B628:838b5f4i8^8;5W859J8e90908M7!6{9h579e0i9s9m9X047k8!7o9y9o017d0m8$5*8p9@4?7d0j8*8L7{9F7}7E4y6Na1845f4z9P9L8=a88}3k9 4o8,a30h4Q4J7|a74P1}6V9Q7Kakae8 8g8i2x0g0r0c189t8n9Y7$9Dag6Ga18-4,ama69M3B4,aa8`4 aN3F7_6Ba06P8-51aOas8{51aT7R5Ha%aX9Ea#aj5ja5a)6e5ha,ao6S5h2E5N7)8i6*9`1 8v7XaJ9:0M6@046_6{0b0X750J3N0DaB751^0H7nb51!8Tbr3-8Y7lbqb98S0?8)aI9/0Uai9H6S5w9KaU5X6Tarab9R5f5vav8faFbd7#0D9!4X9qbZ4?9v9x41bzbG0M5u7G2{anaQ6S7MbObL850n7T8~bU920.8i8k0cb$8X040vc49d8v8xaEb 3Lbw9-bu9;0?9C4ma;7Q8-5Ya^bPatcpa|b=3b8db}9Vax94c8bvc6cC7*0?9gcc9z019v9l3j9n3K9q9(cO9u7=9wch9B9~bEb,5u8/b:aPacc$aq7Oa_5:bT9VawbVbeaH9)7)9$cS3HcP5R0?c7bDaZahaLa?9Jc(c.b`9Ob^a-daaeaY3H5Ac#6S6gbKddbRa9dca}3bdl9Uc~4Xay0YaBaDc_cd8obW9Zd2dh0E6E1k6m0E6o190g6qdO2K2F0A1V6z6n6w7x0X0Z0#0o04.
Exercice 2 : nombre de répétitions
Écrire une fonction python appelée repetitions qui prend en paramètres un élément cible et un tableau de valeurs et renvoie le nombre de fois où l'élément cible apparait dans le tableau valeurs. C'est le nombre d'occurences de l'élément cible dans le tableau de valeurs.
Méthode count interdite
Il est interdit d'utiliser la méthode count.
Exemples
| Python |
|---|
| >>> repetitions(5, [2, 5, 3, 5, 6, 9, 5])
3
>>> repetitions("A", ["B", "A", "B", "A", "R"])
2
>>> repetitions(12, [1, 7, 21, 36, 44])
0
>>> repetitions(12, [])
0
|
.128013_r):ft-421skSuyP=xh,bwadge/5(imvon3lcp60 +050y0A0g0x0E0K0l0P0L0K0x0l0l0r010g0E0M010406050l0o0F0F0x0c0p040n0H0K0o0+0H0I050B0=0@0_0{0:0M04051b141e0B1b0:0y0E0G0Z0#0%0)0#0I0z0o0x0z0A0h0M0p0g0t120P0t0E0z0t0K1G0t0g0.050U0v0K0A1n0$0(011F1H1J1H0g1P1R1N0g0c1c1B0Z0~0l0M0x0I0)0j011T1p010f0W0A0I0x0F0A1N1/1;1_1V1|1R1 210.0a0P0q0c0H0M0H0l0E110I0P0S1-0c0c0A0L2m14240I1c0B1B2z1)1+1*1O0y261q0E0I1~2j1N1k1m0!1U2J2L0I0H2P1N0M2s1c2x2z2$0;1:2n2R1`2V0c0^0K1N0x1E2s0f0)030b0b0L2W0A1J2U0H0h0i0h0k0.0k140x2%2*0/2)252,1V2.2:2=2@0A2_012{2}2 312M340h1@040j3a3c1;3e2x2I013j0x2;1c2?0t2^2`2|2~0S3t2V3v0J0.0J3A2w3d0:3E3h0)3H3J053L3N3p3P3s2K3u350i0.0i3Y153!3f2+1o3i0H2/3I3l3M3n3O3r3R3;3T350C0.0C3`2$3#2*3F3)443-3q3Q304a33350N0.0N4g3d1f2!142P2C0y1+2H3%014p2O1l1c2Z0A2#4y3{3C054p4P250E0y0)2|2x3v373K0P4X4Z484q324$1^2a0A4+4p3S4s361N0B3b3}3F0m0.0S0f3Z4S3$3 0)0w0.0P542y4~4H0I0f0.2s0M0T2l0E120l5c4V3~2S010-040D5q5e573G0.0L0E1Q0A5y565t5v0u5q5b5I2-0.0G3I0A0o0c5p4R5d5O1V5v0d0e5q0:5X5r4)4Y014!2*3v3x3+5,4?3:4.351@0P4;5^495`3w4{3b0P655N4j5f0.3n0f2t0+535*673g5A0H0.0r5M5z5t0F0E0.0O5(5H4j4*5.0b4#353V4(6x3/603=0h3V5}204=6y4@4r3U6304666h5s1`50040f416n5Z3(0.0s6#686j59042K6*6i5t0I5Q5S5U5W2(6$5u0.5%5*5)6{6w5-5/1;3v3@6D744,4^774:6L5 4-6H783A6T6T6o6W0.0E6f2$6U4k6(6:6V1V6k040r6m6g7n3i5C5E1R6v6;1`5v6 4h7J2n6E6z5:4c3l7R6O614d6K217g7c7U2z647l7+7E6%046b6d7q7w3F7z7C7s7-5B7/0f6c2u7=7D6|7z0Q7?4H6q386u5*4~7R6A0h4u797$6P4t7e7#6N5_6H8g7k667{6X2s0g5U13826+6=6a7~7;7r3|8b0B4U4z4O4B4L140g4E8O2F2A0x5F2z4C5)0S0U0W0l04.
Exercice 3 : Dernière occurrence
Programmer la fonction derniere_occurrence, prenant en paramètre un tableau non vide d'entiers et un entier cible, et qui renvoie l'indice de la dernière occurrence de cible.
Si l'élément n'est pas présent, la fonction renvoie la longueur du tableau.
Méthode index interdite
La méthode index qui renvoie l'indice d'un élément dans une liste est interdite.
Exemples
| Python |
|---|
| >>> derniere_occurrence([5, 3], 1)
2
|
1 est absent, on renvoie la longueur du tableau : 2.
| Python |
|---|
| >>> derniere_occurrence([2, 4], 2)
0
|
2 est présent à l'indice 0, on renvoie 0.
| Python |
|---|
| >>> derniere_occurrence([2, 3, 5, 2, 4], 2)
3
|
2 est présent aux indices 0 et 3, on renvoie le dernier : 3.
.128013_r):ft-O]T?42[1s}`SuyP=x7h,badge/5;(imvon3{lpc680 9050T040l0%0Y0g0L0T0Y010t0O0S0u0*0O0P01050H0#06050E0L0N0Y0U0S0D0q0q0x01140P0F0u0D0F0G0h0g0G0y0g0Y0A0L0F0A0S1o0A0g0104050g0D0C0S0G121416181n1p1r1p0g1y1A0G1v1x0c1w0g0A120:0q0T0D0P180n011D1517010f0L1B0P0D0M1O1w1X1Z1(1F1+1-0G1/1;1v0k1j1l0i0P0S0v0`1@0P1w0H1T2b0g1R1Q1S0E1_1*1r0P1}0O0q1P0 11131)182m2o2s1P0T0c0G1?1Y2a282F2E1^2u1`0P0O0c0M0D0S1v0Y0p2H1Z040}292k182N2P2R2T0n2W2a2Z2F2#012%2Q2S040Y0Q2,2Y052!2L1*2=2)2^0m2{2.2K1E302O2?2T0I352}2/2 2$3a320Y0V3e2~383i2(2@0Y0z3n3g3p2;3j3s0W3v372v3y3r2T0Z3C0P2:312@0p0X2{0`2B2D0`2s2e0E2i2:0U0O0E1=0~101w3S2J2G0H291w3!3$2^020S0g0J0T020F3_3@3_0{3|3_06060Y0s470T0v1T0@0Y0R0)0L0g1B180a0Y0w0c0O0T2p4g0L4c3$1V0c2C0U0?0^0Y2x0P0u0M1*0p1%0Y0r453$0f0Y3$0c0P0L0G2C0b0O0U0U0u4w1}0U0G0K1M1B0D0u0B120L1N0d0e450Y4@0Y0L0P0 4$0b4P4R4T0Y0x4B1}4(1z4*0u0d4?4^0f2O4_4_3K0c1Z1f0K1.561N4+0d4;5b4^4^0L4N4)0G4+0o0L0j52530U4/1B4=5t5J5t4`4|0G4~4T500c524_5s0Y2C0g4Z3K5M0L4}4 4S0c45470s0}0H3;3T0{2C2b3V0`0g3X5_2g2c575;3V.
Exercice 4 : Listes des termes d'une suite mathématique
Soit \((u_n)\) la suite définie par récurrence par :
\[
\left\{
\begin{array}{ll}
u_0 = 0 \\
u_1 = 1 \\
u_{n} = 5 u_{n-1} - 8 u_{n-2} \hspace{3ex} \text{pour} \hspace{1ex} n>1 \\
\end{array}
\right.
\]
On souhaite créer la fonction liste_termes qui renvoie une liste contenant les N premiers termes de cette suite.
On suppose que N est strictement supérieur à \(1\).
Contrainte
On demande ici de programmer une fonction qui puisse renvoyer un nombre élevé de termes.
Exemples
| Python |
|---|
| >>> liste_termes(2)
[0, 1]
>>> liste_termes(3)
[0, 1, 5]
>>> liste_termes(4)
[0, 1, 5, 17]
>>> liste_termes(10)
[0, 1, 5, 17, 45, 89, 85, -287, -2115, -8279]
|
.128013_r):ft-O]T?4.2[1s}`SuNyP=x7h,badge/5;(imv*on3{lpc680 9050W040l0*0#0g0N0W0#010u0R0V0v0-0R0S01050J0(06050G0N0P0#0X0V0F0r0r0z01170S0H0v0F0H0I0h0g0I0A0g0#0C0N0H0C0V1r0C0g0104050g0F0E0V0I1517191b1q1s1u1s0g1B1D0I1y1A0c1z0g0C150?0r0W0F0S1b0o011G181a010f0N1E0S0F0O1R1z1!1$1+1I1.1:0I1=1@1y0k1m1o0i0S0V0x0}1`0S1z0J1W2e0g1U1T1V0G1|1-1u0S200R0r1S1214161,1b2p2r2v1S0W0c0I1_1#2d2b2I2H1{2x1}0S0R0c0O0F0V1y0q2K1$04102c2n1b2Q2S2U1y0o2Y2d2#2I2%012)2T2V040T2.2!052$2O1-2@2+040m2|2:2N1H312R2^1y0K362~2;302(3b330Y3f2 393j2*2_0B3n3h3p2?3k2_0Z3u382y3x3r1y0$2|0}2E2G0}2v2h0G2l2=0X0R0G1^11131z3K2M2J0J2c1z3S3U040#3,020V0g0L0W020H3:3.3:0~3?3:06063,0#0t420W0x1W0`0#0U0,0N0g1E1b0a0#0y0c0R0W2s4b0N473U1Y0c2F0X0_0{0#2A0S0v0O1-0q1*0#0s3 3,3U0f4w0N0r1l0b1l2S0I0r0M0w0d0e4G403,4P1@0r0#0z0#0p0!0D0#0q0j4X4Y0f2R0#0S0#0N4^0c1$1i0M0o4,4U4W4Y544Z0I4Q0r0n0F0W0W200G0M0K0#0Q0,574#0p4^0h4-0j0#5p0Z5i5k585n5s0#0o0j0d4:402F0g0v0c4^4!4R4X420t100J3)3L0~2F2e3N0}0g3P5Y2j2f1C1E5W3X.
Exercice 5 : Diviseurs d'un entier
Entiers strictement positifs
Tous les nombres considérés ici sont des entiers strictement positifs.
Le nombre \(d\) est un diviseur du nombre \(n\) s'il existe un nombre \(q\) tel que \(n = d \times q\),
autrement dit, si le reste dans la division euclidienne de \(n\) par \(d\) est nul.
L'objectif est de construire la liste des diviseurs d'un nombre \(n\) quelconque. Par exemple, la liste des diviseurs de \(n = 15\) est \([1, 3, 5, 15]\).
Compléter la fonction diviseurs qui prend en paramètre un entier n strictement positif et renvoie la liste des diviseurs de n triés dans l'ordre croissant.
Pour cette fonction, on tient compte du fait qu'il n'y a aucun diviseur compris entre \(\dfrac{n}{2}\) et \(n\).
Exemples
| Python |
|---|
| >>> diviseurs(1)
[1]
>>> diviseurs(15)
[1, 3, 5, 15]
>>> diviseurs(17)
[1, 17]
|
Aide : l'opérateur %
L'opérateur % de Python permet de calculer le reste de la division euclidienne d'un entier par un autre.
| Python |
|---|
| >>> 25 % 3 # 25 = 8 * 3 + 1
1
>>> 25 % 7 # 25 = 3 * 7 + 4
4
>>> 25 % 2 == 1
True
|
.128013_r):ft-+]4.2[1skSuyP=7h,bwadge/5(imv%on3lcp680 9050C0E0g0B0I0P0p0V0Q0P0B0p0p0v010g0I0R010406050p0s0J0J0B0c0t040r0M0P0s0;0M0N050F0{0}0 110_0R04051h1a1k0F1h0_0C0I0K0)0+0-0/0+0N0D0s0B0D0E0h0R0t0g0x180V0x0I0D0x0P1M0x0g0@050!0z0P0E1t0,0.011L1N1P1N0g1V1X1T0g0c1i1H0)140p0R0B0N0/0m011Z1v010f0$0E0N0B0J0E1T1^1`1 1#221X25270@0a0V0u0c0M0R0M0p0I170N0V0Y1?0c0c0E0Q2s1a2a0N1i0F1H2F1/1;1:1U0C2c1w0I0N242p1T1q1s0*1!2P2R0N0M2V1T0R2y1i2D2F2,0`1_2t2X202#0c0~0P1T0B1K2y0f0/030b0b0Q2$0E1P2!0M0h0o0O3a0@0o1a0B2-2:0^2/2b2=1#2@2_2{2}0E2 01313335372S3a3c1}040m3g3i1`3k2D2O013p0B2`1i2|0x2~3032340Y3z2#3B0h0O0@0O3G2C3j0_3K3n0/3N3P053R3T3v3V3y2Q3A3b0h0k0@0k3)1b3+3l2;1u3o0M2^3O3r3S3t3U3x3X3{3Z3}0G0@0G422,3,2:3L3:4c3@3w3W364i393}0S0@0S4o443-473/493q3Q3s3u4w3`383!0w0@0w4F3I4q3m4I3M4K4b4M4d4O3_4h4R3}0T0@0T4W2E4Y462Y4#4a3;3?4e3^4g4y4-3c0W0@0W4=2F2)0E2F2V2I0C1;2N3.014x2U1r1i592+3j3*3I054x5o2b0I0C0/322D3!0o3r5w5y503Y4A3c5C0V2g0E5F4x5H5B1T0F3h453L0q0@0Y0f5q2E5V5h0A0@0V5#5u4^2?0f5Y1r0I0p0E0s0c0p5,5%4!0?040H5|4H4_0N0@19435r63205 0d0e5,0_685$3K5E015z2:3!3D3=0V6k4+513|3C1~5M5O4Q6v0h6p5T040V6G5+6a3o0@1P0p0g0E0b2V5?5^5`5,6I4r5h0M0@0v6V5}4_5 0n626X4!0J0I3e6+4Z6(0@0j6f6;2t6s0b5A3}3$4M6|5P4z3!3$5L265N6l5G746 5S3h6H6W6=205X040I5!6h6F6%2?666$6J0/6Z040v6#7o7h5.1#6.6:7o7q1#5 6e7o6g2.6j5x7a6~3c3 717P6t5Q3}3 77276z4,6B7T3G7g7g7H0/7k2y0g5_672,7B4s6L5?6O6Q5=5@5_5{7L6`6r7V6}6n4k5D8573520h4l7!797W7c3c4l2F7f6H7-017k0f497t6,645Y8t7i1#0M5)7l7?3j7^5h0N0z0@0c1`1C835h5 617G7u017E3E8N5~0@0y8x7C3/7s8R8u207w0F0F8W4_8U3F7A8o7w0i8!3L8U3f8(8y0/6c7K4p836|7R0h4C7U7$6u4j3c4C8f997X9c7e6F7+6G8o7k7m8_8G8%7@8?0@0L9p4!65040C9w4_7w7y9B208U0U8.6b0@91448}6{85954T987a8b6B4T9e9U6A9b0h9S7*9k7+8o9y6M7|6R7 6U9O3L7w0l9J6K040B0R0R249A9=8O0@8Q7N8)9`a0a58~016c6_9=94873c4/9T8h8c4/9Yak6Bai9(9l8S9,7{6P9/6T81a98#019@9_8$9{9}9 aEaba3aJ9y8D69a68 0@0dadaA845F9554aj7b8c54ana#6BaZar8F4!7/0Z7=9F9`9-aw7~ayaU5p0F5t1l2*1a5c1a0g5eb32L2G0B1W5ab15l6g0Y0!0$0p04.
Exercice 6 : Somme des termes d'une suite mathématique
Soit \((u_n)\) la suite définie pour tout \(n > 0\) par \(u_n = \frac{1}{n}\). On souhaite calculer la somme \(S_n\) des \(n\) premiers termes de cette suite.
Par exemple, la somme des \(70\) premiers termes est :
\[
\begin{align*}
S_{70} &=\sum_{k=1}^{70}u_n\\
&=u_1+u_2+\dots+u_{70}\\
&= 1+\frac12+\frac13+\dots+\frac1{70}\\
&\approx 4,832~836~75
\end{align*}
\]
Écrire la fonction somme_termes qui calcule la somme \(S_n\) des n premiers termes de \((u_n)\).
On garantit que \(1 \leqslant n \leqslant 10^3\).
Exemples
| Python |
|---|
| >>> somme_termes(1)
1.0
>>> somme_termes(2)
1.5
>>> somme_termes(3)
1.8333333333333333
>>> somme_termes(70)
4.832836757638071
|
.128013_r):ft-421skSuyP=h,bwadge/5(imvon3lcp60 +050x0z0g0w0D0J0l0O0K0J0w0l0l0r010g0D0L010406050l0o0E0E0w0c0p040n0G0J0o0*0G0H050A0;0?0^0`0/0L04051a131d0A1a0/0x0D0F0Y0!0$0(0!0H0y0o0w0y0z0h0L0p0g0s110O0s0D0y0s0J1F0s0g0-050T0u0J0z1m0#0%011E1G1I1G0g1O1Q1M0g0c1b1A0Y0}0l0L0w0H0(0j011S1o010f0V0z0H0w0E0z1M1.1:1^1U1{1Q1~200-0a0O0q0c0G0L0G0l0D100H0O0R1,0c0c0z0K2l13230H1b0A1A2y1(1*1)1N0x251p0D0H1}2i1M1j1l0Z1T2I2K0H0G2O1M0L2r1b2w2y2#0:1/2m2Q1_2U0c0@0J1M0w1D2r0f0(030b0b0K2V0z1I2T0G0h0k0B330-0k130w2$2)0.2(242+1U2-2/2;2?0z2^012`2|2~302L33351?040j393b1:3d2w2H013i0w2:1b2=0s2@2_2{2}0R3s2U3u0h0I0-0I3z2v3c0/3D3g0(3G3I053K3M3o3O3r2J3t340h0i0-0i3Y143!3e2*1n3h0G2.3H3k3L3m3N3q3Q3;3S3?0B0-0B3{2#3#2)3E3)453-3p3P2 4b323?0M0-0M4h3c1e2Z132O2B0x1*2G3%014q2N1k1b2Y0z2!4z3|3B054q4Q240D0x0(2{2w3T0k3k4Y4!494r314%1@290z4+4q3R4t354(2y3a3~3E0m0-0R0f3Z4T3$400(0v0-0O542x4~4I0H0f0-0l0G0?0z0b0g0z2.0z0l5c4W3 2R010,040C5t5e573F0-124S5d565w5y0d0e5t0/5H5u0O4*014#2)3T3w3+5S4Z5U4,4^5X4:1 4=5$4@4s5)4|040O5?5b5J2,5i5k205t5^4k4I0G0-0r5~5C5w0E0D0-0N5O5B3D5T5V1:3T3V3J5!4?3:4.3?3V0O4;6m4a6o356j3z5@5 3f5D50040f42655_3h0-0m6H605D0G59042J6M6B5w0H0u0-0c1:1v6d6N5K0-5A5Q661_68376$6U1_5y0t6T5v5`045G2#6A6_1U62040P6^3E6.04386+6I0(5L5N5Q5P2%6e5#6g0H3T3^6k6f5%5/3?3^6r5+6t4-3=357m6y6z5@6,6J045j5l7461637I5D0H5{7H5Q6~3E71737Q7D0(76786}7W01710A7L6V6K6c794k7o4$4d4)7i7p6v0h4e7t207v5(7;5;7f4z7h4+7:354v7n7?5.7^4v7{5,3/6u7x0h877A5?7#6D2r0g0o0c6|3c7R5f7O5}7e5B0A4V4A4P4C4M130g4F8G2E2z0w1P8D0A4D5P0R0T0V0l04.
Exercice 7 : Filtrer un tableau
On considère dans cet exercice les fonctions booléennes suivantes prenant toutes en paramètre un nombre entier :
| Fonction |
Rôle |
Exemple |
est_positif |
Renvoie True si cet entier est strictement positif, False sinon |
est_positif(9) est évalué à True |
est_pair |
Renvoie True si cet entier est pair, False sinon |
est_pair(9) est évalué à False |
est_impair |
Renvoie True si cet entier est impair, False sinon |
est_impair(9) est évalué à True |
est_premier |
Renvoie True si cet entier est premier, False sinon |
est_premier(9) est évalué à False |
Ces différentes fonctions sont déjà chargées dans l'éditeur. Il est inutile de les importer.
Codes des fonctions booléennes utilisées
| Python |
|---|
| def est_positif(x):
return x > 0
def est_pair(x):
return x % 2 == 0
def est_impair(x):
return x % 2 != 0
def est_premier(n):
if n < 2:
return False
d = 2
while d * d <= n:
if n % d == 0:
return False
d = d + 1
return True
|
On signale que la fonction est_premier est très rudimentaire et sera peu efficace pour tester la primalité de grands nombres.
Elle reste toutefois fonctionnelle dans le cadre des valeurs testées dans cet exercice.
On cherche dans cet exercice à filtrer des listes de nombres entiers en utilisant ces fonctions.
Si l'on considère par exemple la liste nombres = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] alors :
-
les entiers strictement positifs dans nombres sont : [1, 2, 3, 4, 5, 6, 7, 8, 9] ;
-
les entiers pairs dans nombres sont : [0, 2, 4, 6, 8] ;
- les entiers impairs dans
nombres sont : [1, 3, 5, 7, 9] ;
- les entiers premiers dans
nombres sont : [2, 3, 5, 7].
Écrire la fonction filtre qui prend en paramètres une fonction booléenne f parmi celles citées plus haut et un tableau de nombres entiers nombres et renvoie la liste des valeurs x de nombres pour lesquelles f(x) est évalué à True.
Contraintes
La liste nombres ne doit pas être modifiée.
Les valeurs seront renvoyées dans l'ordre dans lequel elles apparaissent dans nombres.
Exemples
| Python |
|---|
| >>> nombres = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> filtre(est_positif, nombres)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> filtre(est_pair, nombres)
[0, 2, 4, 6, 8]
>>> filtre(est_impair, nombres)
[1, 3, 5, 7, 9]
>>> filtre(est_premier, nombres)
[2, 3, 5, 7]
|
.128013_r):ft-]2[1skSuyP=xh,bwadge/(imvonlcp8 050z0B0g0y0E0J0m0N0K0J0y0m0m0s010g0E0L010406050m0p0F0F0y0c0q040o0H0J0p0(0H0I050C0/0;0?0^0-0L040518111b0C180-0z0E0G0W0Y0!0$0Y0I0A0p0y0A0B0h0L0q0g0u0 0N0u0E0A0u0J1D0u0g0+050R0w0J0B1k0Z0#011C1E1G1E0g1M1O1K0g0c191y0W0{0m0L0y0I0$0j011Q1m010f0T0B0I0y0F0B1K1,1.1?1S1_1O1|1~0+0a0N0r0c0H0L0H0m0E0~0I0N0P1*0c0c0B0K2j11210I190C1y2w1$1(1%1L0z231n0E0I1{2g1K1h1j0X1R2G2I0I0H2M1K0L2p192u2w2Z0.1-2k2O1@2S0c0=0J1K0y1B2p0f0$030b0b0K2T0B1G2R0H0h0l0M310+0l110y2!2%0,2$222)1S2+2-2/2;0B2?012^2`2|2~2J31331;040j37391.2w2W0B2w2M2z0z1(2E3e0$2{0P2L1i193B2Y3a2t3S3L3C3c2k0E0z0$2_2u3s34192:3Z3#3o0P3q2S3(0l1=270B3-3V3:30323)3x3X2F010n0+0P0f3T3z413J010x0+0N482v4a1l3f0f0+251$0B4g3R3d4j0$0*040D4q4i2P010I4m4y2u424v0v4q4f4F4b4C042S0F0w2p0m4E2%4G0+0d0e4q0-123S4F3,013$2%3(3u053+3!4*3.2}2H3r3~1;0N3^3`3p4^3;4`1K0C380N564K4V4b44042p0g0p0c104$3z584s4A4v0k4U5l2*0+0t4J4z1@5b0f0H0c5u4L4t4B5s5B595D0H4d042H5G5q3f0+4P4R0B4T5i2v5k2(5D5b0E475V045X424N5$2#5C5m0+4x5%5v5P045t5=5.1@4v0d0i4!4y0C3V3A2X113E110g3G682C2x0y1N3W0C3E4#0P0R0T0m04.
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)