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
1
2
3
4
5
6
>>> # 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
1
2
3
4
>>> 14 % 2 == 0
True
>>> 15 % 2 == 0
False

###(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 : 5/5

.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
1
2
3
4
5
6
7
8
>>> 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

###(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 : 5/5

.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.

###(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 : 5/5

.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
1
2
3
4
5
6
7
8
>>> 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]

###(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 : 5/5

.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
1
2
3
4
5
6
>>> 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
1
2
3
4
5
6
>>> 25 % 3  # 25 = 8 * 3 + 1
1
>>> 25 % 7  # 25 = 3 * 7 + 4
4
>>> 25 % 2 == 1
True
###(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 : 5/5

.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
1
2
3
4
5
6
7
8
>>> somme_termes(1)
1.0
>>> somme_termes(2)
1.5
>>> somme_termes(3)
1.8333333333333333
>>> somme_termes(70)
4.832836757638071

###(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 : 5/5

.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
1
2
3
4
5
6
7
8
9
>>> 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]

###(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 : 5/5

.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.