Python - Bon départ
I. Quizz de rentrée
Questions
Quizz de rentrée
ma_liste = [7 * i for i in range(5)]
On aurait pu écrire :
ma_liste = [7, 14, 21, 28, 35]
ma_liste = [7, 14, 21, 28]
ma_liste = [0, 7, 14, 21, 28, 35]
ma_liste = [0, 7, 14, 21, 28]
def creation_liste ():
ma_liste = []
for i in range ( 10 ):
saisie = float ( input ( "Saisir un nombre : " ))
ma_liste . append ( saisie )
return ma_liste
L'appel de la fonction précédente crée une liste de longueur :
La fonction suivante :
def translation ( x , y ):
x = x + 3
y = y + 2
return x
return y
renvoie une valeur
provoque un message d'erreur
renvoie deux valeurs
Autre
La fonction suivante :
def mystere ( x ):
y = 2 * x
return y
z = x / 0
return z
renvoie une valeur
renvoie deux valeurs
provoque un message d'erreur
renvoie une valeur et un message d'erreur
ma_liste = [2 * i for i in range(5)]
Cocher toutes les réponses possibles.
On aurait pu écrire : ma_liste = [0, 2, 4, 6, 8].
Cette syntaxe est incorrecte.
On aurait pu écrire : ma_liste = [2, 4, 6, 8, 10].
On aurait pu écrire : ma_liste = [i for i in range(0, 9, 2)]
On aurait pu écrire : ma_liste = [i for i in range(0, 8, 2)]
Quelle liste en compréhension est correcte ?
ma_liste = [n**2 if n**2 < 30]
ma_liste = [n % 2 == 0]
ma_liste = [n**2 for n in range(10) if n**2 < 30]
ma_liste = [n**2 for n in range(10) while n**2 < 30]
def double ( nbre ):
print ( 2 * nbre )
y = double ( 3 )
z = 3 * y
print ( z )
Après exécution du code précédent, il s'affiche :
18
6 puis un message d'erreur
un message d'erreur
6 puis 18
II. Parcours de listes et de chaînes de caractères
Ce paragraphe a principalement été rédigé par Romain Janvier
Rappels sur les parcours de listes et de textes
En Python, il y a principalement 2 méthodes pour parcourir les listes Python (et donc les tableaux) et les textes.
Vous pouvez tester les deux fonctions ici
Lors d'un parcours par valeur, on n'a pas accès à l'indice mais uniquement à la valeur. Pour choisir entre les deux, il faut donc se poser la question suivante : Est-ce que j'ai besoin de connaître l'indice de la valeur que je regarde ?
Si la réponse est oui , il faut faire un parcours par indice.
Si la réponse est non , vous pouvez utiliser un parcours par valeur. Mais un parcours par indice fonctionnerait aussi.
Exercice 1 : compter ( symbole , texte )
Compléter le code de la fonction compter qui prend en paramètre un texte d'un seul caractère symbole ainsi qu'un texte texte et qui renvoie le nombre de fois où symbole apparaît dans texte .
>>> compter ( 'b' , 'bulle' )
1
>>> compter ( 'l' , 'bulle' )
2
>>> compter ( 'v' , 'bulle' )
0
Version sans code à trous Version avec code à trous
.128013vt4=wf2pmuP(:51,cSsrk630 dg)/+n9iyelh_boax-050A0J0c0P0H0K0t0z0r0K0P0t0t0e010c0H0i010406050t0k0j0j0P0u0I040s0O0K0k0,0O0F050D0?0^0`0|0;0i04051c151f0D1c0;0A0H0b0!0$0(0*0$0F0B0k0P0B0J0R0i0I0c0L130z0L0H0B0L0K1H0L0c0/050V0N0K0J1o0%0)011G1I1K1I0c1Q1S1O0c0u1d1C0!0 0t0i0P0F0*0h011U1q010g0X0J0F0P0j0J1O1:1=1`1W1}1S20220/0a0z0l0u0O0i0O0t0H120F0z0T1.0u0u0J0r2n15250F1d0D1C2A1*1,1+1P0A271r0H0F1 2k1O1l1n0#1V2K2M0F0O2Q1O0i2t1d2y2A2%0=1;2o2S1{2W0u0_0K1O0P1F2t0g0*030M0M0r2X0J1K2V0O0R0G0R0p0/0p150P2(2+0:2*262-1W2/2;2?2^0J2`012|2~30322N350R1^040h3b3d1=3f2y2J013k0P2=1d2@0L2_2{2}2 0T3u2W3w0x0/0x3B2x3e0;3F3i0*3I3K053M3O3q3Q3t2L3v360d0/0d3Z163#3g2,1p3j0O2:3J3m3N3o3P3s3S3=3U360o0/0o3{2%3$2+3G3*453.3r3R314b34360w0/0w4h3e1g2#152Q2D0A1,2I3(014q2P1m1d2!0J2$4z3|3D054q4Q260H0A0*2}2y3w383L0z4Y4!494r334%1_2b0J4,4q3T4t371O0D3c3~3G0v0/0T0g3!4T3%400*0f0/0z552z4 4I0F0g0/2 0j0i0c0J0u5d4W3 2T010.040m5q5f583H0/0t0I0j0N0 0J5y575t5v0q5q5c5K2.0/5n0Q5n5J4k4I5v0C0n5q0;4S5e3F4+014#2+3w3y3,4*4Z5,4-4_5/4;214?5@4^4s5`2A3c0z645P5X5A0F5j5O5z5t0O0/0e6b5Q1W0j0H0/0y5$5W4X5?5-1=3V3m5+3:4a4/363W0z4=4@3;6z0R3W620465663h5A51040g426h675t69040t6T6N6d5a042L6Z5s5R045T5V5(5r3G5v5#6/5%2)5*6r0M4$3@6v6{5 6G3^6C5|6E6y3?0R3^6J6L6L6c1{6P0H546/6M6*3j5C6)3G6e040e6g7j7e7m6X5E5G1S6p7l0*6=6o6/4 6w6|5.4d6 764.784e74227N5_7L7b7c7X7v3)6a7u6i0*7q7t2%7k4l7#7+7Z017q0E7o4I6k397F6_4k7I6}0R4v4)7I71784v7R5}6x7O4c804|63657:6P2t0c0k0u147$6U6+0r7{4R4V4A4P4C4M150c4F8y2G2B0P1R8v0D4D5%0T0V0X0t04.
.128013vt4=wf2pmuP(:51,cSsrk630 dg)/+niyelh_boax-050A0I0c0O0G0J0t0z0r0J0O0t0t0e010c0G0i010406050t0k0j0j0O0u0H040s0N0J0k0+0N0F050D0=0@0_0{0:0i04051b141e0D1b0:0A0G0b0Z0#0%0)0#0F0B0k0O0B0I0Q0i0H0c0K120z0K0G0B0K0J1G0K0c0.050U0M0J0I1n0$0(011F1H1J1H0c1P1R1N0c0u1c1B0Z0~0t0i0O0F0)0h011T1p010g0W0I0F0O0j0I1N1/1;1_1V1|1R1 210.0a0z0l0u0N0i0N0t0G110F0z0S1-0u0u0I0r2m14240F1c0D1B2z1)1+1*1O0A261q0G0F1~2j1N1k1m0!1U2J2L0F0N2P1N0i2s1c2x2z2$0;1:2n2R1`2V0u0^0J1N0O1E2s0g0)030L0L0r2W0I1J2U0N0Q0p0y340.0p140O2%2*0/2)252,1V2.2:2=2@0I2_012{2}2 312M34361@040h3a3c1;3e2x2I013j0O2;1c2?0K2^2`2|2~0S3t2V3v0Q0x0.0x3A2w3d0:3E3h0)3H3J053L3N3p3P3s2K3u350Q0d0.0d3Z153#3f2+1o3i0N2/3I3l3M3n3O3r3R3=3T3@0o0.0o3|2$3$2*3F3*463.3q3Q304c333@0w0.0w4i3d1f2!142P2C0A1+2H3(014r2O1l1c2Z0I2#4A3}3C054r4R250G0A0)2|2x3U0p3l4Z4#4a4s324(1^2a0I4,4r3S4u364)2z3b3 3F0v0.0S0g3!4U3%410)0f0.0z552y4 4J0F0g0.2~0j0i0c0I0u5d4X402S010-040m5q5f583G0.0t0H0j0M0~0I5y575t5v0q5q5c5K2-0.5n0P5n5J4l4J5v0C0n5q0:4T5e3E4+014$2*3U3x3,0z5+3:4b4/3@1@0z4=4@3;5_3w1N0D3b0z655P5X5A0F5j5O5z5t0N0.0e6c5Q1V0j0G0.0y5$5W4Y4!5,0L4%3@3W3K5=6s5@4.3?363W5|204?6t4^4t3U6x3A66673g5A51040g436i685t6a040t6X6R6e5a042K6%5s5R045T5V5(5r3F5v5#6?5%2(5*6A6u5.3@3_6y5?4-4_3U3_6G215~5^6D3^62646P666d1`6T0G546?6Q6.3i5C6-3F6f040e6h7p7k7s6#5E5G1R6q7r0)6_6p6?4 756v364f746 6K600Q4f7a6I6B774e7g047i7)7q4m6b7A6j0)7w7z2$7+5g7-7?7B7:0.0E7u4J6l387L6}4l7O71364w7S7c6C4d884;6H8b7#8e4}7(7j7/016T2s0c0k0u137.6Y6/0r834S4W4B4Q4D4N140c4G8G2F2A0O1Q8D0D4E5%0S0U0W0t04.
Exercice 2 : position ( val , nombres )
Compléter le code de la fonction position qui prend en paramètre un entier val ainsi qu'une liste d'entiers nombres et renvoie l'indice de la première occurrence de val dans nombres s'il y en a une et None sinon.
>>> position ( 7 , [ 5 , - 1 , 7 , 4 , 6 , 4 , 2 ])
2
>>> position ( 4 , [ 5 , - 1 , 7 , 4 , 6 , 4 , 2 ])
3
>>> position ( 0 , [ 5 , - 1 , 7 , 4 , 6 , 4 , 2 ])
None
Version sans code à trous Version avec code à trous
.128013vt4=wf2pmuP(:51,cSsr]k[3 dg)/Nniyelh_boa-050A0I0c0O0G0J0t0z0r0J0O0t0t0e010c0G0i010406050t0k0j0j0O0u0H040s0N0J0k0*0N0F050D0;0?0^0`0/0i04051a131d0D1a0/0A0G0b0Y0!0$0(0!0F0B0k0O0B0I0P0i0H0c0K110z0K0G0B0K0J1F0K0c0-050T0M0J0I1m0#0%011E1G1I1G0c1O1Q1M0c0u1b1A0Y0}0t0i0O0F0(0h011S1o010g0V0I0F0O0j0I1M1.1:1^1U1{1Q1~200-0a0z0l0u0N0i0N0t0G100F0z0R1,0u0u0I0r2l13230F1b0D1A2y1(1*1)1N0A251p0G0F1}2i1M1j1l0Z1T2I2K0F0N2O1M0i2r1b2w2y2#0:1/2m2Q1_2U0u0@0J1M0O1D2r0g0(030L0L0r2V0I1I2T0N0P0p0h330-0p130O2$2)0.2(242+1U2-2/2;2?0I2^012`2|2~302L33351?040h393b1:3d2w2H013i0O2:1b2=0K2@2_2{2}0R3s2U3u0P0y0-0y3z2v3c0/3D3g0(3G3I053K3M3o3O3r2J3t340P0d0-0d3Y143!3e2*1n3h0N2.3H3k3L3m3N3q3Q3;3S3?0o0-0o3{2%1g2Z132O2B0A1*2G3%013P211b4m1c4k4i2%4t2!2)0z0G0A0(2{2w3T0p3k4F4H492 4b323?4L0z290I4O4t3R4S354L2y3a3~3E0w0-0R0g3Z3B4*4r0f0-0z4:2x4=403(0g0-2h2j2u3|4;3$4}010,040m4`4C3f570F0-0b3H5c4|2R580-0q5c4_565m5g042U0j0M2r0t5k5s1_590C0n5c0/544{3D4N014I2)3T3w3+4E4G5N4P4!5Q1@4W4Y3:315Y4(040z5+5r4D4r4,040g425q5l2,0-0G5@5C1U0N4@042J5|5.5f0M0-0u1:1v5B645m595b5J5d3 5t6604286b5e6d0-6f2%5}3(0-5w5y0I5A6g5^1U5E5F5H6n2m5M5O1:3T3V3J5T5#4a5%3?3V4V1 4X5V4Z4R6L1M0D3a5,6(5-6o1_5:0G4/6g6*6i5_5v0N5x5z6G3E590x6{4r5u5{6A6t5n040v636+5~0-0e0e786=3h5h5j736c5D0-5G6g5I6s4D6I0L4J3?3^6N7s6Y6R353^6U206P4Q7A3@6#6%6)7L6B0(5:2r0c0k0u126:7N3F5`6F7j247s7u354e7x5U3/6Q3=7(5Z6V7F5X4d7J5*5,7W7P0S7S7U2#6;4+0r0-0E110I7Z4i4B1e4k0D4w2z4o132C8h0O1P0I2y4m5I0R0T0V0t04.
.128013vt4=wf2pmuP(:51,cSsr]k[3 dg)/Nniyelh_boa-050A0I0c0O0G0J0t0z0r0J0O0t0t0e010c0G0i010406050t0k0j0j0O0u0H040s0N0J0k0*0N0F050D0;0?0^0`0/0i04051a131d0D1a0/0A0G0b0Y0!0$0(0!0F0B0k0O0B0I0P0i0H0c0K110z0K0G0B0K0J1F0K0c0-050T0M0J0I1m0#0%011E1G1I1G0c1O1Q1M0c0u1b1A0Y0}0t0i0O0F0(0h011S1o010g0V0I0F0O0j0I1M1.1:1^1U1{1Q1~200-0a0z0l0u0N0i0N0t0G100F0z0R1,0u0u0I0r2l13230F1b0D1A2y1(1*1)1N0A251p0G0F1}2i1M1j1l0Z1T2I2K0F0N2O1M0i2r1b2w2y2#0:1/2m2Q1_2U0u0@0J1M0O1D2r0g0(030L0L0r2V0I1I2T0N0P0p0y330-0p130O2$2)0.2(242+1U2-2/2;2?0I2^012`2|2~302L33351?040h393b1:3d2w2H013i0O2:1b2=0K2@2_2{2}0R3s2U3u0P0y0-0y3z2v3c0/3D3g0(3G3I053K3M3o3O3r2J3t340P0d0-0d3Y143!3e2*1n3h0N2.3H3k3L3m3N3q3Q3;3S3?0o0-0o3{2%1g2Z132O2B0A1*2G3%013P211b4m1c4k4i2%4t2!2)0z0G0A0(2{2w3T0p3k4F4H492 4b323?4L0z290I4O4t3R4S354L2y3a3~3E0w0-0R0g3Z3B4*4r0f0-0z4:2x4=403(0g0-2h2j2u3|4;3$4}010,040m4`4C3f570F0-0b3H5c4|2R580-0q5c4_565m5g042U0j0M2r0t5k5s1_590C0n5c0/544{3D4N014I2)3T3w3+4E4G5N4P4!5Q1@4W4Y3:315Y4(040z5+5r4D4r4,040g425q5l2,0-0G5@5C1U0N4@042J5|5.5f0M0-0u1:1v5B645m595b5J5d3 5t6604286b5e6d0-6f2%5}3(0-5w5y0I5A6g5^1U5E5F5H6n2m5M5O1:3T3V3J5T5#4a5%3?3V4V1 4X5V4Z4R6L1M0D3a5,6(5-6o1_5:0G4/6g6*6i5_5v0N5x5z6G3E590x6{4r5u5{6A6t5n040v636+5~0-0e0e786=3h5h5j736c5D0-5G6g5I6s4D6I0L4J3?3^6N7s6Y6R353^6U206P4Q7A3@6#6%6)7L6B0(5:2r0c0k0u126:7N3F5`6F7j247s7u354e7x5U3/6Q3=7(5Z6V7F5X4d7J5*5,7W7P0S7S7U2#6;4+0r0-0E110I7Z4i4B1e4k0D4w2z4o132C8h0O1P0I2y4m5I0R0T0V0t04.
Sortie anticipée
Dans cet exercice nous avons un return dans la boucle. il y a donc sortie anticipée de la boucle s'il n'est pas nécessaire de la terminer.
Ce procédé est souvent utilisé et permet de gagner en efficacité.
Parcours en sens inverse
Il est parfois utile de parcourir une liste Python, ou un texte, en partant du dernier élément et en allant vers le premier. On rappelle que l'indice du dernier élément est n - 1 , où n est la longueur de la liste ou du texte.
Avec range Avec une formule
On peut parcourir les indices dans l'ordre inverse en utilisant les paramètres supplémentaires de range . Pour rappel, range ( de , vers , pas ) part de de et va de pas en pas jusqu'à vers, en s'arrêtant juste avant de l'atteindre. En mettant -1 pour le pas, on parcourt les nombres dans l'ordre inverse.
def parcours_inverse1 ( donnees ):
for i in range ( len ( donnees ) - 1 , - 1 , - 1 ): # on part du dernier indice
print ( i , donnees [ i ])
>>> parcours_inverse1 ([ 3 , - 2 , 4 ])
2 4
1 -2
0 3
>>> parcours_inverse1 ( "AVION" )
4 N
3 O
2 I
1 V
0 A
Si on ne veut pas utiliser les paramètres supplémentaires de range , il faut calculer l'indice de l'élément regardé à chaque tour de boucle. Si on note i la variable de boucle, n la longueur de la liste ou du texte, alors à chaque tour de boucle, il faut regarder l'élément d'indice n - 1 - i .
def parcours_inverse2 ( donnees ):
n = len ( donnees )
for i in range ( n ):
indice = n - 1 - i
print ( indice , donnees [ indice ])
>>> parcours_inverse2 ([ 3 , - 2 , 4 ])
2 4
1 -2
0 3
>>> parcours_inverse2 ( "AVION" )
4 N
3 O
2 I
1 V
0 A
Vous pouvez tester les deux fonctions ici
Vous pouvez utiliser ces parcours, ou pas, pour l'exercice suivant.
Exercice 3 : derniere_position ( val , nombres )
Compléter le code de la fonction derniere_position qui prend en paramètre un entier val ainsi qu'une liste d'entiers nombres et renvoie l'indice de la dernière occurrence de val dans nombres s'il y en a une et None sinon.
>>> derniere_position ( 7 , [ 5 , - 1 , 7 , 4 , 6 , 4 , 2 ])
2
>>> derniere_position ( 4 , [ 5 , - 1 , 7 , 4 , 6 , 4 , 2 ])
5
>>> derniere_position ( 0 , [ 5 , - 1 , 7 , 4 , 6 , 4 , 2 ])
None
Version vide Code à trous et parcours inverse Code à trous et parcours normal
.128013vt4=wf2pmuP(:51,cSsr]k[3 dg)/Nn9iyelh_boa-050A0J0c0P0H0K0t0z0r0K0P0t0t0e010c0H0i010406050t0k0j0j0P0u0I040s0O0K0k0+0O0F050D0=0@0_0{0:0i04051b141e0D1b0:0A0H0b0Z0#0%0)0#0F0B0k0P0B0J0Q0i0I0c0L120z0L0H0B0L0K1G0L0c0.050U0N0K0J1n0$0(011F1H1J1H0c1P1R1N0c0u1c1B0Z0~0t0i0P0F0)0h011T1p010g0W0J0F0P0j0J1N1/1;1_1V1|1R1 210.0a0z0l0u0O0i0O0t0H110F0z0S1-0u0u0J0r2m14240F1c0D1B2z1)1+1*1O0A261q0H0F1~2j1N1k1m0!1U2J2L0F0O2P1N0i2s1c2x2z2$0;1:2n2R1`2V0u0^0K1N0P1E2s0g0)030M0M0r2W0J1J2U0O0Q0p0G340.0p140P2%2*0/2)252,1V2.2:2=2@0J2_012{2}2 312M34361@040h3a3c1;3e2x2I013j0P2;1c2?0L2^2`2|2~0S3t2V3v0Q0y0.0y3A2w3d0:3E3h0)3H3J053L3N3p3P3s2K3u350Q0d0.0d3Z153#3f2+1o3i0O2/3I3l3M3n3O3r3R3=3T3@0o0.0o3|2(1h2!142P2C0A1+2H3(013Q221c4n1d4l4j2(4u2#2*0z0H0A0)2|2x3U0p3l4G4I4a304c333@4M0z2a0J4P4u3S4T364M2z3b3 3F0w0.0S0g3!3C4+4s0f0.0z4;2y4?413)0g4.0J0u0F0H520J0M2i2k2v3}4=3%4~010-040m4{4D3g5f0F0.0b3I5k4}2S5g0.0q5k4`5e5u5o042V0j0N2s0t5s5A1`5h0C0n5k0:5c4|3E4O014J2*3U3x3,4F4H5V4Q4#5Y1^4X4Z3;325*4)040z5?5z4E4s4-040g435y5t2-0.0H5 5K1V0O4^042K645_5n0N0.0u1;1w5J6c5u5h5j5R5l405B6e04296j5m6l0.6n2(653)0.5E5G0J5I6o601V5M6v6q1`0O0.0Q6M3F0j0H386S4s5h5x6o5^6w6O6Q6X5f6U6W6I6B5v046!2$6$6N666)6.6k1`6,04396{6%6K0.5N5P6S5U5W1;3U3W3K5#5-4b5/3@3W4W204Y5%4!4S7b1N0D3b5@7u6@4,624:6#6J6C5D0O5F5H6*6x040x7H61697L73040v6b720)6P040e0e7S6^7C5q0K7O0)5h5O6o5Q6A4E780M4K3@3_7d7:7o7h363_7k217f4R7{3^7r7t7v867B015{2s0c0k537Z3F5C637,775$790F3U4f7^8l5(7p4e5+7l805)8u5;7u888a0T8d137A6/0w0r0.0E120J766I0D4C1f4l0D4x2A4p142D8Z0P1Q0J2z4n5Q0S0U0W0t04.
.128013vt4=wf2pmuP(:51,cSsr]k[30 dg)/Nniyelh_boa-050B0J0c0P0H0K0t0A0r0K0P0t0t0e010c0H0i010406050t0k0j0j0P0u0I040s0O0K0k0+0O0G050E0=0@0_0{0:0i04051b141e0E1b0:0B0H0b0Z0#0%0)0#0G0C0k0P0C0J0Q0i0I0c0L120A0L0H0C0L0K1G0L0c0.050U0N0K0J1n0$0(011F1H1J1H0c1P1R1N0c0u1c1B0Z0~0t0i0P0G0)0h011T1p010g0W0J0G0P0j0J1N1/1;1_1V1|1R1 210.0a0A0l0u0O0i0O0t0H110G0A0S1-0u0u0J0r2m14240G1c0E1B2z1)1+1*1O0B261q0H0G1~2j1N1k1m0!1U2J2L0G0O2P1N0i2s1c2x2z2$0;1:2n2R1`2V0u0^0K1N0P1E2s0g0)030M0M0r2W0J1J2U0O0Q0h0z0Q0p0.0p140P2%2*0/2)252,1V2.2:2=2@0J2_012{2}2 312M34361@040h3b3d1;3f2x2I013k0P2;1c2?0L2^2`2|2~0S3u2V3w0Q0y0.0y3B2w3e0:3F3i0)3I3K053M3O3q3Q3t2K3v350Q0d0.0d3!153$3g2+1o3j0O2/3J3m3N3o3P3s3S3?3U3^0o0.0o3}2(1h2!142P2C0B1+2H3)013R221c4o1d4m4k2(4v2#2*0A0H0B0)2|2x3V383L4G4I013;4c324M1^2a0J4J4b304d333^4N3!3(420)0w0.0S0g3#3D403G0f0.0A4=2y4@4t0G0g4/0J0u0G0H530J0M2i2k2v3~4?4+2S010-040m4|4E3h4,3H0.0b3J5l4~5o5i0q5l4{5f2-0.2V0j0N2s0t5t5A1V5i0D0n5l0:5d4}3F4H4Z4L3^3y3-4P4Z4v3T4%3x4W204Y4R4!5$3V5X0E3c0A5?5z4F4t4.040g445y5u5g0G0.0H5 5J0)0O4_042K655_5o0G0N0.0u1;1w5I6d5g5i5k5Q5m41616g04296l5n6n0.6p2(665p045D5F0J5H6q601`5L6x6s1`0O0.0Q6O3G0j0H396U4t5w6c6y6Q6S6Z5o6W6Y6K6D6#6q5^6%1V6R046T6.6m1`6,043a6{6?0)5L5N6q5P6C4F5T5,5V363X4O7a4S4#4U3^3X0A4X5!3=7j7d1N5;045@7v6=6P1V5{0H4;6;6L3j5C0O5E5G6*6z040x7K5B6a7O5K0.0v6$7y670.0e0e7V3G62045r0K7R730.752$773e4@7g0M7c3_3m7?5#4$3V3`7m5*7o4T3@363`2z5=7w897E4-6h0T0k547#4 635O6U7?7^4g7f4Q7h5.4f5)21827i840Q8o3B7v8b015{2s0c8f137D6D0w0r0.0F120J8k6K0E4D1f4m0E4y2A4q142D8$0P1Q0J2z4o5P0S0U0W0t04.
.128013vt4=wf2pmuP(:51,cSsr]k[63 dg)/Nniyelh_boa-050B0J0c0P0H0K0t0A0r0K0P0t0t0e010c0H0i010406050t0k0j0j0P0u0I040s0O0K0k0+0O0G050E0=0@0_0{0:0i04051b141e0E1b0:0B0H0b0Z0#0%0)0#0G0C0k0P0C0J0Q0i0I0c0L120A0L0H0C0L0K1G0L0c0.050U0N0K0J1n0$0(011F1H1J1H0c1P1R1N0c0u1c1B0Z0~0t0i0P0G0)0h011T1p010g0W0J0G0P0j0J1N1/1;1_1V1|1R1 210.0a0A0l0u0O0i0O0t0H110G0A0S1-0u0u0J0r2m14240G1c0E1B2z1)1+1*1O0B261q0H0G1~2j1N1k1m0!1U2J2L0G0O2P1N0i2s1c2x2z2$0;1:2n2R1`2V0u0^0K1N0P1E2s0g0)030M0M0r2W0J1J2U0O0Q0h0p0Q0p0.0p140P2%2*0/2)252,1V2.2:2=2@0J2_012{2}2 312M34361@040h3b3d1;3f2x2I013k0P2;1c2?0L2^2`2|2~0S3u2V3w0Q0z0.0z3B2w3e0:3F3i0)3I3K053M3O3q3Q3t2K3v350Q0d0.0d3!153$3g2+1o3j0O2/3J3m3N3o3P3s3S3?3U3^0o0.0o3}2$3%2*3G3+473/3r3R304d333^0y0.0y4j3e1f2!142P2C0B1+2H3)014s2O1l1c2Z0J2#4B3~3D054s4S250H0B0)2|2x3V383L0A4!4$4b4t324)1^2a0J4.4s3T4v364*3!3(420)0w0.0S0g3#4V502S010f0.0A572y404n0g540J0u0G0H5l0J0M2i2k2v4U5g591`0-040m5f4Y415a0G0.0b3J5C5h4K5z0q5C5e5x3j0.2V0j0N2s0t5K5R0)5z0D0n5C0:5v5D4,4#014%2*3V3y3-5-4_3=4;3^1@0A4@5_4c5{3x1N0E3c0A675Q4m4K5G042s2i0G0t0J5P5L51010O0.0e6j5!010w0r0.0F126i5+5*2(3F4-5/0M4(3^3X4+6D3;613@363X5~204^6E4`4u3V6I3B68693h6l53040g446q6a6l6c0H6+6#5a0O5c042K6:5E2-0N0.0u1;1w5Z6,5a5z5B5+6k5F6}0429726;5y0.766B732-5T0O5V5X7d6{1V5$5%5)7p5^6E6G363`6J5.6L4:6N3_4?6R607E4e7z64666Z68781`6%0H565+6!7q3*7l7n0J5Y776r5z0x7v6b0.6/7(7j7r0.0v6`3G6n040e6p7W7R5S045I0K7,6l5z5(6z7v6K6F5;4f3m8a6U620Q4g6Q217J4{3V4g2z7O7P7P7 7Z6d0J6f6h7^4K7`7}2$7X4n7.7u7:4Z7C8b1;3V4x7B8m6V4w7H8l6T5`7F8P6Y7Q6r6%2s0c0k5m8A6-6~8x128z88770E4X4C4R4E4O140c4H8}2F2A0P1Q8`0E4F5*0S0U0W0t04.
Exercice 4 : indice_egal_valeurs ( nombres )
Compléter le code de la fonction indice_egal_valeurs qui prend en paramètre une liste d'entiers nombres et renvoie True s'il existe un indice i tel que nombres [ i ] == i et False sinon.
>>> indice_egal_valeur ([ 7 , 1 , 8 ]) # nombres[1] = 1
True
>>> indice_egal_valeur ([ 9 , - 7 , 2 , 9 , 6 ]) # nombres[2] = 2
True
>>> indice_egal_valeur ([ 1 , 2 , 3 , 4 ])
False
Version sans code à trous Version avec code à trous
.128013vt4=wf2pmuP(:51cSsFr]k[3 dg)/niyelh_boaT-050A0H0c0N0F0I0s0z0q0I0N0s0s0e010c0F0i010406050s0k0j0j0N0u0G040r0M0I0k0*0M0E050D0;0?0^0`0/0i04051a131d0D1a0/0A0F0b0Y0!0$0(0!0E0B0k0N0B0H0P0i0G0c0J110z0J0F0B0J0I1F0J0c0-050T0L0I0H1m0#0%011E1G1I1G0c1O1Q1M0c0u1b1A0Y0}0s0i0N0E0(0h011S1o010g0V0H0E0N0j0H1M1.1:1^1U1{1Q1~200-0a0z0l0u0M0i0M0s0F100E0z0R1,0u0u0H0q2l13230E1b0D1A2y1(1*1)1N0A251p0F0E1}2i1M1j1l0Z1T2I2K0E0M2O1M0i2r1b2w2y2#0:1/2m2Q1_2U0u0@0I1M0N1D2r0g0(030K0K0q2V0H1I2T0M0P0h0y0P0p0-0p130N2$2)0.2(242+1U2-2/2;2?0H2^012`2|2~302L33351?040h3a3c1:3e2w2H013j0N2:1b2=0J2@2_2{2}0R3t2U3v0P0y0-0y3A2v3d0/3E3h0(3H3J053L3N3p3P3s2J3u340P0d0-0d3Z143#3f2*1n3i0M2.3I3l3M3n3O3r3R3=3T3@0o0-0o3|2%1g2Z132O2B0A1*2G3(013Q211b4n1c4l4j2%4u2!2)0z0F0A0(2{2w3U373K4F4H013:4b314L1@290H4I4a2 4c323@4M3Z3%410(0w0-0R0g3!3C3 3F0f0-0z4;2x4?4s0E0g0-2J1j0q0H0K0H0B3I0K0b3I0H0k0u4{4D3g4+010,040m5g4}5j0E0-2U0j0L2r0s5o4*2R5k0-0C0n5g0/3}4=3E4G4Y4K3@3x3,4O4Y4u3S4$3w4V1 4X4Q4Z5T3U5O0D3b0z5*4`5z1_4-040g435g5,4E4~515?5p5A0M4^042J5{5-3i0L0-0u1:1v5y5^5j5l5n5H4|633)6504286a5i5A6d6m405A5r045t5v0H5x6f5h6r1_5l0C5D5F6q5Q5Z5M353W4N5K5Z5S4#3U3W0z4W5R3;4T3@6M3A5+6$5@6n5.514:6z6(6B3i5s0M5u5w6H4s5l0x6^5q5`6z5|6C0-0v626b5}0-0e0e746)6:606|6o0-5E6z5G2%5J4P4J2)3U3_6N7m5!6R3@3_6U5X6W4S3?357q6#6%7F701U5/2r0c5e126-7H4,0q0-0O0u0k0H6G6 7l5L7o4e3l6O4R4!6Y354f7x207z7*7B0P4f2y5)5+7P017J0S7M7a6/7Q0-0t3I0s7W7i5o0D4C1e4l0D4x2z4p132C8i0N1P0H2y4n5G0R0T0V0s04.
.128013vt4=wf2pmuP(:51cSsFr]k[3 dg)/niyelh_boaT-050A0H0c0N0F0I0s0z0q0I0N0s0s0e010c0F0i010406050s0k0j0j0N0u0G040r0M0I0k0*0M0E050D0;0?0^0`0/0i04051a131d0D1a0/0A0F0b0Y0!0$0(0!0E0B0k0N0B0H0P0i0G0c0J110z0J0F0B0J0I1F0J0c0-050T0L0I0H1m0#0%011E1G1I1G0c1O1Q1M0c0u1b1A0Y0}0s0i0N0E0(0h011S1o010g0V0H0E0N0j0H1M1.1:1^1U1{1Q1~200-0a0z0l0u0M0i0M0s0F100E0z0R1,0u0u0H0q2l13230E1b0D1A2y1(1*1)1N0A251p0F0E1}2i1M1j1l0Z1T2I2K0E0M2O1M0i2r1b2w2y2#0:1/2m2Q1_2U0u0@0I1M0N1D2r0g0(030K0K0q2V0H1I2T0M0P0h0d0P0p0-0p130N2$2)0.2(242+1U2-2/2;2?0H2^012`2|2~302L33351?040h3a3c1:3e2w2H013j0N2:1b2=0J2@2_2{2}0R3t2U3v0P0y0-0y3A2v3d0/3E3h0(3H3J053L3N3p3P3s2J3u340P0d0-0d3Z143#3f2*1n3i0M2.3I3l3M3n3O3r3R3=3T3@0o0-0o3|2%1g2Z132O2B0A1*2G3(013Q211b4n1c4l4j2%4u2!2)0z0F0A0(2{2w3U373K4F4H013:4b314L1@290H4I4a2 4c323@4M3Z3%410(0w0-0R0g3!3C3 3F0f0-0z4;2x4?4s0E0g0-2J1j0q0H0K0H0B3I0K0b3I0H0k0u4{4D3g4+010,040m5g4}5j0E0-2U0j0L2r0s5o4*2R5k0-0C0n5g0/3}4=3E4G4Y4K3@3x3,4O4Y4u3S4$3w4V1 4X4Q4Z5T3U5O0D3b0z5*4`5z1_4-040g435g5,4E4~515?5p5A0M4^042J5{5-3i0L0-0u1:1v5y5^5j5l5n5H4|633)6504286a5i5A6d6m405A5r045t5v0H5x6f5h6r1_5l0C5D5F6q5Q5Z5M353W4N5K5Z5S4#3U3W0z4W5R3;4T3@6M3A5+6$5@6n5.514:6z6(6B3i5s0M5u5w6H4s5l0x6^5q5`6z5|6C0-0v626b5}0-0e0e746)6:606|6o0-5E6z5G2%5J4P4J2)3U3_6N7m5!6R3@3_6U5X6W4S3?357q6#6%7F701U5/2r0c5e126-7H4,0q0-0O0u0k0H6G6 7l5L7o4e3l6O4R4!6Y354f7x207z7*7B0P4f2y5)5+7P017J0S7M7a6/7Q0-0t3I0s7W7i5o0D4C1e4l0D4x2z4p132C8i0N1P0H2y4n5G0R0T0V0s04.
Exercice 5 : moyenne ( valeurs )
Compléter le code de la fonction moyenne qui prend en paramètre une liste non vide de nombres valeurs et renvoie la moyenne de ces nombres. On n'utilisera pas la fonction len .
Comparaison de nombres réels
On rappelle que la représentation des nombres réels en Python est basée sur le principe de la virgule flottante et qu'à cause de cela, deux expressions mathématiquement égales ne donnent pas forcément le même résultat en Python.
Pour vérifier le résultat de la fonction moyenne avec le résultat attendu, nous utiiserons la fonction indiscernables qui prend deux nombres et renvoie un booléen indiquant si la distance entre ces deux nombres (mathématiquement la valeur absolue de leur différence) est inférieure à \(10^{-15}\) .
>>> 0.1 * 3 == 0.3 # Erreur de virgule flottante classique
False
>>> indiscernables ( 0.1 * 3 , 0.3 )
True
>>> moyenne ([ 5 ])
5.0
>>> moyenne ([ 5 , 15 , 8 ])
9.333333333333334
>>> moyenne ([ 5 , 15 , 10 ])
10.0
Version sans code à trous Version avec code à trous
.128013vt4=8fw2pmuP(751,:cSsrk63;0 dg)/+n9iyelh_boa-050D0M0c0S0K0N0v0C0t0N0S0v0v0e010c0K0j010406050v0l0k0k0S0w0L040u0R0N0l0.0R0I050G0^0`0|0~0?0j04051e171h0G1e0?0D0K0b0$0(0*0,0(0I0E0l0S0E0M0T0j0L0c0O150C0O0K0E0O0N1J0O0c0;050X0Q0N0M1q0)0+011I1K1M1K0c1S1U1Q0c0w1f1E0$110v0j0S0I0,0i011W1s010g0Z0M0I0S0k0M1Q1=1@1|1Y1 1U22240;0a0C0m0w0R0j0R0v0K140I0C0V1:0w0w0M0t2p17270I1f0G1E2C1,1.1-1R0D291t0K0I212m1Q1n1p0%1X2M2O0I0R2S1Q0j2v1f2A2C2)0@1?2q2U1}2Y0w0{0N1Q0S1H2v0g0,030P0P0t2Z0M1M2X0R0T0i0o0T0q0;0C0q170S2*2-0=2,282/1Y2;2?2^2`0M2|012~3032342P37391`040C0i3f3h1@3j2A2L013o0S2@1f2_0O2{2}2 310V3y2Y3A0T0z3c0z3G2z3i0?3K3m0,3N3P053R3T3u3V3x2N3z380T0d3c0d3)183+3k2.1r3n0R2=3O3q3S3s3U3w3X3{3Z3}0p3c0p422)3,2-3L3:4c3@3v3W334i363}0y3c0y4o443-473/493p3Q3r3t4w3`353!0o3c0o4F3I4q3l4I3M4K4b4M4d4O3_4h4R3}0f3c0f4W2B4Y462V4#4a3;3?4e3^4g4y4-390J3c0J4=3J4r3.4`4L3=4N4f4x3Y4A390q0B0;5k571i2%172S2F0D1.2K5a4x2R1o1f2$0M2(3i3*3I054x5E280K0D0,2 2A3!3b4M5M5O505h5R1{2d0M5V5g4z5Y2C3g453L0x0;0V0g5G2B5,5a0h3c5=5K4^2:0g0;2N1n0v0t0M0w221T0M0v5{5@4!0:040n6b4H4_0I0;2Y0k0Q2v3e435H6i1}6e0r5{0C6c6j6l0R6n2v3F6r5?6t1Y6e0F0s5{0?6G5|0C5U015P2-3!3C5d6S4+513|3B5Z235#6T5W5(3}6X0G3g0C6=6y6I0,5.042v0c0l666x6z2:0Q0;0S0Q6a6P716J0;6g786^3M6B6D0M6q2)6@594!0R0;0T707e6k046m6o0M6F2+7e6K7r7m4_7o04020N0c0A7C4Z4_0k5 040q1A0q4n6P6O7z4r6Z0P5Q3}3$5T5N6+5%523#6(245$4Q6$7-5*3j7d7Y7)6U1@3!3 7(7:4,7=3 0C5!816#4j397 3)7e6`5:6h7D1}5_3D8g7M5~0;0k0R0L212O8l5}7a6f8u4s0;0b3O0M6~777X8m8w6L6N8y7Z7#394l807*7;890T4l856)875X4k1Q6:3D6?793/0;0v6C247L8v0,7F0e8/3L0k0K0;0B8K7_5L7{7!6V4B3q7Z7+7=4C8W7/8R828T4C7@6?7l8H8*7u0Q0P2Y0c698@5a8=9q4!8_8{8}8G2q8M92394T8Q6!8Z9C7.6*9F6-9H9f8(8d0;0g499t6A7u0R9o9T1}0R8j2N9Y3n8A8C8E8y5a6e6M7V8L908N0T4/9E6,7,4/999J9`7=9^3G9g9g8)7f048,0`0M9%8;0;8?6P9h8:a6a88.afa57F0Haba69naa9:8~9z9=9B0T549_968T549}8Y9Lay8#6;a36=a57t0I9lar8F3iag3L9sal7s6laP9W9paW8h1Yanap9v7Q9x5F3K9A7}3}5k9490aB5i3a5laE9b88a`a?9NaL9P6{0W6~16a$9iai8-as7kam0;0GapaNaZ9oaR4X6b0G5J5p5D5r5A170c5ubv2I2D751U2C5s6O0V0X0Z0v04.
.128013vt4=8fw2pmuP(751,:cSsrk63;0 dg)/+n9iyelh_boa-050D0M0c0S0K0N0v0C0t0N0S0v0v0e010c0K0j010406050v0l0k0k0S0w0L040u0R0N0l0.0R0I050G0^0`0|0~0?0j04051e171h0G1e0?0D0K0b0$0(0*0,0(0I0E0l0S0E0M0T0j0L0c0O150C0O0K0E0O0N1J0O0c0;050X0Q0N0M1q0)0+011I1K1M1K0c1S1U1Q0c0w1f1E0$110v0j0S0I0,0i011W1s010g0Z0M0I0S0k0M1Q1=1@1|1Y1 1U22240;0a0C0m0w0R0j0R0v0K140I0C0V1:0w0w0M0t2p17270I1f0G1E2C1,1.1-1R0D291t0K0I212m1Q1n1p0%1X2M2O0I0R2S1Q0j2v1f2A2C2)0@1?2q2U1}2Y0w0{0N1Q0S1H2v0g0,030P0P0t2Z0M1M2X0R0T0i0f0T0q0;0C0q170S2*2-0=2,282/1Y2;2?2^2`0M2|012~3032342P37391`040C0i3f3h1@3j2A2L013o0S2@1f2_0O2{2}2 310V3y2Y3A0T0z3c0z3G2z3i0?3K3m0,3N3P053R3T3u3V3x2N3z380T0d3c0d3)183+3k2.1r3n0R2=3O3q3S3s3U3w3X3{3Z3}0p3c0p422)3,2-3L3:4c3@3v3W334i363}0y3c0y4o443-473/493p3Q3r3t4w3`353!0o3c0o4F3I4q3l4I3M4K4b4M4d4O3_4h4R3}0f3c0f4W2B4Y462V4#4a3;3?4e3^4g4y4-390J3c0J4=3J4r3.4`4L3=4N4f4x3Y4A390q0B0;5k571i2%172S2F0D1.2K5a4x2R1o1f2$0M2(3i3*3I054x5E280K0D0,2 2A3!3b4M5M5O505h5R1{2d0M5V5g4z5Y2C3g453L0x0;0V0g5G2B5,5a0h3c5=5K4^2:0g0;2N1n0v0t0M0w221T0M0v5{5@4!0:040n6b4H4_0I0;2Y0k0Q2v3e435H6i1}6e0r5{0C6c6j6l0R6n2v3F6r5?6t1Y6e0F0s5{0?6G5|0C5U015P2-3!3C5d6S4+513|3B5Z235#6T5W5(3}6X0G3g0C6=6y6I0,5.042v0c0l666x6z2:0Q0;0S0Q6a6P716J0;6g786^3M6B6D0M6q2)6@594!0R0;0T707e6k046m6o0M6F2+7e6K7r7m4_7o04020N0c0A7C4Z4_0k5 040q1A0q4n6P6O7z4r6Z0P5Q3}3$5T5N6+5%523#6(245$4Q6$7-5*3j7d7Y7)6U1@3!3 7(7:4,7=3 0C5!816#4j397 3)7e6`5:6h7D1}5_3D8g7M5~0;0k0R0L212O8l5}7a6f8u4s0;0b3O0M6~777X8m8w6L6N8y7Z7#394l807*7;890T4l856)875X4k1Q6:3D6?793/0;0v6C247L8v0,7F0e8/3L0k0K0;0B8K7_5L7{7!6V4B3q7Z7+7=4C8W7/8R828T4C7@6?7l8H8*7u0Q0P2Y0c698@5a8=9q4!8_8{8}8G2q8M92394T8Q6!8Z9C7.6*9F6-9H9f8(8d0;0g499t6A7u0R9o9T1}0R8j2N9Y3n8A8C8E8y5a6e6M7V8L908N0T4/9E6,7,4/999J9`7=9^3G9g9g8)7f048,0`0M9%8;0;8?6P9h8:a6a88.afa57F0Haba69naa9:8~9z9=9B0T549_968T549}8Y9Lay8#6;a36=a57t0I9lar8F3iag3L9sal7s6laP9W9paW8h1Yanap9v7Q9x5F3K9A7}3}5k9490aB5i3a5laE9b88a`a?9NaL9P6{0W6~16a$9iai8-as7kam0;0GapaNaZ9oaR4X6b0G5J5p5D5r5A170c5ubv2I2D751U2C5s6O0V0X0Z0v04.
Exercice 6 : moyenne_ponderee ( valeurs )
Compléter le code de la fonction moyenne_ponderee qui prend en paramètre une liste non vide valeurs de couples de nombres ( note , coeff ) et renvoie la moyenne pondérée correspondant à ces notes. On suppose que tous les coefficients sont positifs et qu'il y a au moins un coefficient non nul.
Calcul d'une moyenne pondérée
Pour calculer une moyenne pondérée, il faut aditionner le produit de chacune des notes avec le coefficient correspondant et diviser par la somme des coefficients.
Par exemple, avec 5 notes \(n_1\) , \(n_2\) , ..., \(n_5\) et les coefficients correspondants \(c_1\) , \(c_2\) , ..., \(c_5\) , la moyenne pondérée est :
\(\dfrac{n_1\times c_1 + n_2\times c_2 + n_3\times c_3 + n_4\times c_4 + n_5\times c_5}{c_1+c_2+c_3+c_4+c_5}\)
Parcours d'une liste de couples
On rappelle que lors d'un parcours par valeur d'une liste composée de couples, on peut décomposer chacun des couples de la manière suivante :
def parcours_liste_couples ( couples ):
for a , b in couples : # (1)
print ( a , b )
On peut aussi écrire for ( a , b ) in couples . Les parenthèses sont facultatives pour les tuples.
>>> parcours_liste_couples ([( "voiture" , 3 ), ( "vélo" , 5 ), ( "moto" , 1 )])
voiture 3
vélo 5
moto 1
>>> moyenne_ponderee ([( 5 , 1 ), ( 15 , 1 )])
10.0
>>> moyenne_ponderee ([( 5 , 1 ), ( 15 , 2 )]) # 5*1 + 15*2 = 35 -> 35/3
11.666666666666666
>>> moyenne_ponderee ([( 5 , 1 ), ( 15 , 3 )]) # 5*1 + 15*3 = 50 -> 50/4
12.5
>>> moyenne_ponderee ([( 5 , 1 ), ( 15 , 3 ), ( 20 , 0 )]) # le coeff 0 ne compte pas
12.5
Version sans code à trous Version avec code à trous
.128013vt4=8fw2pmuP(751,:cSsrk63;0 dg)/+n9iyelh_b*oa-050D0M0c0T0K0N0v0C0t0N0T0v0v0e010c0K0j010406050v0l0k0k0T0w0L040u0S0N0l0/0S0I050G0_0{0}0 0@0j04051f181i0G1f0@0D0K0b0%0)0+0-0)0I0E0l0T0E0M0U0j0L0c0O160C0O0K0E0O0N1K0O0c0=050Y0Q0N0M1r0*0,011J1L1N1L0c1T1V1R0c0w1g1F0%120v0j0T0I0-0i011X1t010g0!0M0I0T0k0M1R1?1^1}1Z201V23250=0a0C0m0w0S0j0S0v0K150I0C0W1;0w0w0M0t2q18280I1g0G1F2D1-1/1.1S0D2a1u0K0I222n1R1o1q0(1Y2N2P0I0S2T1R0j2w1g2B2D2*0^1@2r2V1~2Z0w0|0N1R0T1I2w0g0-030P0P0t2!0M1N2Y0S0U0z0i0U0q0=0C0q180T2+2.0?2-292:1Z2=2@2_2{0M2}012 3133352Q383a1{040C0i3g3i1^3k2B2M013p0T2^1g2`0O2|2~30320W3z2Z3B383d0z3H2A3j0@3L3n0-3O3Q053S3U3v3W3y2O3A390U0d3d0d3)193+3l2/1s3o0S2?3P3r3T3t3V3x3Y3{3!3}0p3d0p422*3,2.3M3:4c3@3w3X344i373}0y3d0y4o443-473/493q3R3s3u4w3`363#0o3d0o4F3J4q3m4I3N4K4b4M4d4O3_4h4R3}0f3d0f4W2C4Y462W4#4a3;3?4e3^4g4y4-3a0J3d0J4=3K4r3.4`4L3=4N4f4x3Z4A3a0q0B0=5k571j2(182T2G0D1/2L5a4x2S1p1g2%0M2)3j3*3J054x5E290K0D0-302B3#3c4M5M5O505h5R1|2e0M5V5g4z5Y2D3h453M0x0=0W0g5G2C5,5a0h3d5=5K4^2;0g0=2O1o0v0t0M0w231U0M0v5{5@4!0;040n6b4H4_0I0=2Z0k0Q2w3f435H6i1~6e0r5{0C6c6j6l0S6n2w3G6r5?6t1Z6e0F0s5{0@6G5|0C5U015P2.3#3D5d6S4+513|3C5Z245#6T5W5(3}6X0G3h0C6=6y6I0-5.042w0c0l666x6z2;0Q0=0T0Q6a6P716J0=6g786^3N6B6D0M6q2*6@594!0S0=0U707e6k046m6o0M6F2,7e6K7r7m4_7o04020N0c0A7C4Z4_0k5 040q1B0q4n6P6O7z4r6Z0P5Q3}0z3r7Z5%523$0C5!5$4Q6$3$5*3k7d7Y5N6+7#3a3 5T7`6!5X3}3 7-6)7/4,7;7~3)7e6`5:6h7D1~5_3E8f7M5~0=0k0S0L222P0P2m0I0W2w0M8k5}7a6f8z4s0=2w0_7I0T0c777X8l8B6L6N8D7Z7|0U4l7 876#4j3a4l85258X828!1R6:3E6?793/0=0v6C250P2Z0c697L8A0-7F0e8|3M0k0K0=0B8Q7^5L807!6V4B7(9a7*7;4C8$6*816-3a4C7?6?7l8N8:048=0{0M3x3t0g8L3j9r8}018 915a9395978M2r8S9c3a4T8W6+9g8Z0U4T9j8(9m9W8+6;8.8c0=0g499H4!7t8_8y989E6v9-6A04329z9^1~0S8i2O9}3o8F690l8I8K8D5a6e6M7V8R9a8T4/9S9l7+4/9Y9T7:9Vah3H9q9q8/7f9u8?9x9:9B3J9D3M9G6PaC5a7t9v8@aza28~0=0HaMav9:a97n0=0RaT9_9{0g5;ad9=6Raf9P0U54ai6,7+54amaj7;a,aras6=auaIax9ya!aA2CaGaU0490aFa{8;a}aZ9AaQ7FaPb67s0=ba9L5F3L9O1^5R5la-9U5i3b5la;a.7;5k9$8-a`9)6{0X6~17bf8ga3aw9w8^0S8`b08j7e7F0GaQa|bLbabP7W5F0G5J5p5D5r5A180c5ub+2J2E751V2D5s6O0W0Y0!0v04.
.128013vt4=8fw2pmuP(751,:cSsrk63;0 dg)/+n9iyelh_b*oa-050D0M0c0T0K0N0v0C0t0N0T0v0v0e010c0K0j010406050v0l0k0k0T0w0L040u0S0N0l0/0S0I050G0_0{0}0 0@0j04051f181i0G1f0@0D0K0b0%0)0+0-0)0I0E0l0T0E0M0U0j0L0c0O160C0O0K0E0O0N1K0O0c0=050Y0Q0N0M1r0*0,011J1L1N1L0c1T1V1R0c0w1g1F0%120v0j0T0I0-0i011X1t010g0!0M0I0T0k0M1R1?1^1}1Z201V23250=0a0C0m0w0S0j0S0v0K150I0C0W1;0w0w0M0t2q18280I1g0G1F2D1-1/1.1S0D2a1u0K0I222n1R1o1q0(1Y2N2P0I0S2T1R0j2w1g2B2D2*0^1@2r2V1~2Z0w0|0N1R0T1I2w0g0-030P0P0t2!0M1N2Y0S0U0z0z0U0q0=0C0q180T2+2.0?2-292:1Z2=2@2_2{0M2}012 3133352Q383a1{040C0i3g3i1^3k2B2M013p0T2^1g2`0O2|2~30320W3z2Z3B383d0z3H2A3j0@3L3n0-3O3Q053S3U3v3W3y2O3A390U0d3d0d3)193+3l2/1s3o0S2?3P3r3T3t3V3x3Y3{3!3}0p3d0p422*3,2.3M3:4c3@3w3X344i373}0y3d0y4o443-473/493q3R3s3u4w3`363#0o3d0o4F3J4q3m4I3N4K4b4M4d4O3_4h4R3}0f3d0f4W2C4Y462W4#4a3;3?4e3^4g4y4-3a0J3d0J4=3K4r3.4`4L3=4N4f4x3Z4A3a0q0B0=5k571j2(182T2G0D1/2L5a4x2S1p1g2%0M2)3j3*3J054x5E290K0D0-302B3#3c4M5M5O505h5R1|2e0M5V5g4z5Y2D3h453M0x0=0W0g5G2C5,5a0h3d5=5K4^2;0g0=2O1o0v0t0M0w231U0M0v5{5@4!0;040n6b4H4_0I0=2Z0k0Q2w3f435H6i1~6e0r5{0C6c6j6l0S6n2w3G6r5?6t1Z6e0F0s5{0@6G5|0C5U015P2.3#3D5d6S4+513|3C5Z245#6T5W5(3}6X0G3h0C6=6y6I0-5.042w0c0l666x6z2;0Q0=0T0Q6a6P716J0=6g786^3N6B6D0M6q2*6@594!0S0=0U707e6k046m6o0M6F2,7e6K7r7m4_7o04020N0c0A7C4Z4_0k5 040q1B0q4n6P6O7z4r6Z0P5Q3}0z3r7Z5%523$0C5!5$4Q6$3$5*3k7d7Y5N6+7#3a3 5T7`6!5X3}3 7-6)7/4,7;7~3)7e6`5:6h7D1~5_3E8f7M5~0=0k0S0L222P0P2m0I0W2w0M8k5}7a6f8z4s0=2w0_7I0T0c777X8l8B6L6N8D7Z7|0U4l7 876#4j3a4l85258X828!1R6:3E6?793/0=0v6C250P2Z0c697L8A0-7F0e8|3M0k0K0=0B8Q7^5L807!6V4B7(9a7*7;4C8$6*816-3a4C7?6?7l8N8:048=0{0M3x3t0g8L3j9r8}018 915a9395978M2r8S9c3a4T8W6+9g8Z0U4T9j8(9m9W8+6;8.8c0=0g499H4!7t8_8y989E6v9-6A04329z9^1~0S8i2O9}3o8F690l8I8K8D5a6e6M7V8R9a8T4/9S9l7+4/9Y9T7:9Vah3H9q9q8/7f9u8?9x9:9B3J9D3M9G6PaC5a7t9v8@aza28~0=0HaMav9:a97n0=0RaT9_9{0g5;ad9=6Raf9P0U54ai6,7+54amaj7;a,aras6=auaIax9ya!aA2CaGaU0490aFa{8;a}aZ9AaQ7FaPb67s0=ba9L5F3L9O1^5R5la-9U5i3b5la;a.7;5k9$8-a`9)6{0X6~17bf8ga3aw9w8^0S8`b08j7e7F0GaQa|bLbabP7W5F0G5J5p5D5r5A180c5ub+2J2E751V2D5s6O0W0Y0!0v04.
Exercice 7 : effectifs ( donnees )
Compléter le code de la fonction effectifs qui prend en paramètre une liste donnees contenant des entiers ou des textes et qui renvoie un dictionnaire qui associe à chaque valeur apparaissant dans donnees le nombre de fois où elle y apparaît (c'est à dire le nombre d'occurences de valeur dans donnees).
Par exemple dans la liste [ 4 , 1 , 2 , 4 , 2 , 2 , 6 ] il y a une fois la valeur 1, trois fois la valeur 2, deux fois la valeur 4 et une fois la valeur 6. Le résultat attendu pour cette liste sera donc le dictionnaire { 1 : 1 , 2 : 3 , 4 : 2 , 6 : 1 } .
On rappelle aussi que dans un dictionnaire, l'ordre dans lequel on donne les valeurs n'a pas d'importance. Ainsi, les dictionnaires { 1 : 1 , 2 : 3 , 4 : 2 , 6 : 1 } et
{ 4 : 2 , 1 : 1 , 6 : 1 , 2 : 3 } sont égaux.
>>> effectifs ([ 4 , 1 , 2 , 4 , 2 , 2 , 6 ])
{4: 2, 1: 1, 2: 3, 6: 1}
>>> assert effectifs ([ "chien" , "chat" , "chien" , "chien" , "poisson" , "chat" ])
{'chien': 3, 'chat': 2, 'poisson': 1}
Version sans code à trous Version avec un peu d'aide Version avec beaucoup d'aide
.128013vt4=8fw2pmuP(751:cSsr]k[63 dg)/+niyelh_boa-050C0K0c0Q0I0L0u0B0s0L0Q0u0u0e010c0I0j010406050u0l0k0k0Q0v0J040t0P0L0l0,0P0H050F0?0^0`0|0;0j04051c151f0F1c0;0C0I0b0!0$0(0*0$0H0D0l0Q0D0K0R0j0J0c0M130B0M0I0D0M0L1H0M0c0/050V0O0L0K1o0%0)011G1I1K1I0c1Q1S1O0c0v1d1C0!0 0u0j0Q0H0*0i011U1q010g0X0K0H0Q0k0K1O1:1=1`1W1}1S20220/0a0B0m0v0P0j0P0u0I120H0B0T1.0v0v0K0s2n15250H1d0F1C2A1*1,1+1P0C271r0I0H1 2k1O1l1n0#1V2K2M0H0P2Q1O0j2t1d2y2A2%0=1;2o2S1{2W0v0_0L1O0Q1F2t0g0*030N0N0s2X0K1K2V0P0R0A0p0R0q0/0q150Q2(2+0:2*262-1W2/2;2?2^0K2`012|2~30322N35371^040i3c3e1=3g2y2J013l0Q2=1d2@0M2_2{2}2 0T3v2W3x350/0A3C2x3f0;3G3j0*3J3L053N3P3r3R3u2L3w360R0d0/0d3!163$3h2,1p3k0P2:3K3n3O3p3Q3t3T3?3V3^0p0/0p3}2%3%2+3H3+473/3s3S314d343^0z0/0z4j3 3(423*443m3M3o3q4r3=333W0o0/0o4A3E4l3i4D3I4F464H484J3;4c4M3^0f0/0f4R2z1g2#152Q2D0C1,2I3)014s2P1m1d2!0K2$3f3#3E054s52260I0C0*2}2y3W394H5a5c4b4t4(37390B2b0K5j4s3U4v5n1O0F3d403H0x0/0T0g544.4C2T010h0/0B5G58415J0H0g0/3p0g2u0,0g0u5O5A4`0.040n5#5I2.5D132M0K5!3~555,1W5(0E0r5O0;5?5H4m5i015d2+3W3z3-0B624$5l3@3y1_5q5s4L6d0R675y040B6o5N5^3*5D0I2 0N5V5X5O6q4m4`0P0/0e6z5$4V0H0O6t2v5+6B4V5(0n0E5}6N595b630N5e3^0A3n6a5k5u3W6#5p215r6X5t4u6*5x3d6p6A4U5J5C040g446G6r3I0/0b706O5J0P5L042L756`5-040C5/0K5;6U5Q1{5(5|5 3g7p5A6%6Z373`5h6W6b6)3^3`6,226h4%6j7w3C6^6^6H6{0/0I5F7p6_7l3k737c7T0*787O147R7M7e1l6v6x6M7r717n6T7-617y6Y654f6$7?6:5m0R4g7D6.7z6;7_2A6@7K877%7U7f6u0P6w0g5W7,2)7.0/0y7k4n7V7;7d5_0/0w7W3H6D046F7$710H6L8d7+0c8m5%8k8G6I8o8i767m8s8u6C0/0G8Q4V0k0I3a7:8M6V5j7u0R4x7x7F6c4e374x808+7A8.6?6n877S5B5U0Y0K8J5J7/7p5~8!2o7t7^374O8*6/6i8-0R4O8:9b7G9d997J8_7L8A8C8e8g8F8p7X015(8l9t8n04749y8H048t8z8N1W8w8y2%8`4`8W8Y928m961=3W4*9a827}4*9g9X6j9V9l6o890*6|2t0c0l0v7#9L9*728b7*8f6y9Q7r0F574/514;4~150c4@a42G2B0Q1Ra10F4=5~0T0V0X0u04.
.128013vt4=8fw2pmuP(751:cSsr]k[63 dg)/+niyelh_boa-050C0K0c0Q0I0L0u0B0s0L0Q0u0u0e010c0I0j010406050u0l0k0k0Q0v0J040t0P0L0l0,0P0H050F0?0^0`0|0;0j04051c151f0F1c0;0C0I0b0!0$0(0*0$0H0D0l0Q0D0K0R0j0J0c0M130B0M0I0D0M0L1H0M0c0/050V0O0L0K1o0%0)011G1I1K1I0c1Q1S1O0c0v1d1C0!0 0u0j0Q0H0*0i011U1q010g0X0K0H0Q0k0K1O1:1=1`1W1}1S20220/0a0B0m0v0P0j0P0u0I120H0B0T1.0v0v0K0s2n15250H1d0F1C2A1*1,1+1P0C271r0I0H1 2k1O1l1n0#1V2K2M0H0P2Q1O0j2t1d2y2A2%0=1;2o2S1{2W0v0_0L1O0Q1F2t0g0*030N0N0s2X0K1K2V0P0R0A0z0R0q0/0q150Q2(2+0:2*262-1W2/2;2?2^0K2`012|2~30322N35371^040i3c3e1=3g2y2J013l0Q2=1d2@0M2_2{2}2 0T3v2W3x350/0A3C2x3f0;3G3j0*3J3L053N3P3r3R3u2L3w360R0d0/0d3!163$3h2,1p3k0P2:3K3n3O3p3Q3t3T3?3V3^0p0/0p3}2%3%2+3H3+473/3s3S314d343^0z0/0z4j3 3(423*443m3M3o3q4r3=333W0o0/0o4A3E4l3i4D3I4F464H484J3;4c4M3^0f0/0f4R2z1g2#152Q2D0C1,2I3)014s2P1m1d2!0K2$3f3#3E054s52260I0C0*2}2y3W394H5a5c4b4t4(37390B2b0K5j4s3U4v5n1O0F3d403H0x0/0T0g544.4C2T010h0/0B5G58415J0H0g0/3p0g2u0,0g0u5O5A4`0.040n5#5I2.5D132M0K5!3~555,1W5(0E0r5O0;5?5H4m5i015d2+3W3z3-0B624$5l3@3y1_5q5s4L6d0R675y040B6o5N5^3*5D0I2 0N5V5X5O6q4m4`0P0/0e6z5$4V0H0O6t2v5+6B4V5(0n0E5}6N595b630N5e3^0A3n6a5k5u3W6#5p215r6X5t4u6*5x3d6p6A4U5J5C040g446G6r3I0/0b706O5J0P5L042L756`5-040C5/0K5;6U5Q1{5(5|5 3g7p5A6%6Z373`5h6W6b6)3^3`6,226h4%6j7w3C6^6^6H6{0/0I5F7p6_7l3k737c7T0*787O147R7M7e1l6v6x6M7r717n6T7-617y6Y654f6$7?6:5m0R4g7D6.7z6;7_2A6@7K877%7U7f6u0P6w0g5W7,2)7.0/0y7k4n7V7;7d5_0/0w7W3H6D046F7$710H6L8d7+0c8m5%8k8G6I8o8i767m8s8u6C0/0G8Q4V0k0I3a7:8M6V5j7u0R4x7x7F6c4e374x808+7A8.6?6n877S5B5U0Y0K8J5J7/7p5~8!2o7t7^374O8*6/6i8-0R4O8:9b7G9d997J8_7L8A8C8e8g8F8p7X015(8l9t8n04749y8H048t8z8N1W8w8y2%8`4`8W8Y928m961=3W4*9a827}4*9g9X6j9V9l6o890*6|2t0c0l0v7#9L9*728b7*8f6y9Q7r0F574/514;4~150c4@a42G2B0Q1Ra10F4=5~0T0V0X0u04.
.128013vt4=8fw2pmuP(751:cSsré{]k[63 dg)}/+niyelh_boaO-050E0N0c0T0L0O0u0D0s0O0T0u0u0e010c0L0j010406050u0l0k0k0T0v0M040t0S0O0l0:0S0K050I0`0|0~100^0j04051g191j0I1g0^0E0L0b0(0*0,0.0*0K0F0l0T0F0N0V0j0M0c0P170D0P0L0F0P0O1L0P0c0?050Z0R0O0N1s0+0-011K1M1O1M0c1U1W1S0c0v1h1G0(130u0j0T0K0.0i011Y1u010g0#0N0K0T0k0N1S1@1_1~1!211W24260?0a0D0m0v0S0j0S0u0L160K0D0X1=0v0v0N0s2r19290K1h0I1G2E1.1:1/1T0E2b1v0L0K232o1S1p1r0)1Z2O2Q0K0S2U1S0j2x1h2C2E2+0_1^2s2W1 2!0v0}0O1S0T1J2x0g0.030Q0Q0s2#0N1O2Z0S0V0C0o0V0q0?0q190T2,2/0@2.2a2;1!2?2^2`2|0N2~01303234362R393b1|040i3g3i1_3k2C2N013p0T2_1h2{0P2}2 31330X3z2!3B390?0C3G2B3j0^3K3n0.3N3P053R3T3v3V3y2P3A3a0V0d0?0d3(1a3*3l2:1t3o0S2@3O3r3S3t3U3x3X3`3Z3|0p0?0p412+3+2/3L3/4b3?3w3W354h383|0B0?0B4n433,463.483q3Q3s3u4v3_373!0o0?0o4E3I4p3m4H3M4J4a4L4c4N3^4g4Q3|0f0?0f4V2D1k2)192U2H0E1:2M3-014w2T1q1h2(0N2*3j3)3I054w562a0L0E0.312C3!3d4L5e5g4f4x4,3b3d0D2f0N5n4w3Y4z5r1S0I3h443L0z0?0X0g584=4G2X010h0?0D5K5c455N0K0g0?3t0g2y0:0g0u5S5E4~0=040n5)5M2=5H172Q0N5(42595:1!5,0G0r5S0^5`5L4q5m015h2/3!3D3;0D664*5p3{3C1}5u5w4P6h0V6b5C040D6s5R5|3.5H0L330Q5Z5#5S6u4q4~0S0?0e6D5*4Z0K0R6x2z5/6F4Z5,0n0G6D6E4Y5N0s5k030D0U2s0j0N150D0T0l0,0L0D0w0s0v0L2x2t6y0S6A0g5!2z0D0e0D0x0H616R5d5f670Q5i3|0C3r6e5o5y3!7g5t255v7c5x4y7l5B3h6t6Y5U1 5G040g486K6v3M0?0b7E6S5N0S5P042P7J6Z5;040E5?0N5^797y5}0?60633k7%5E7i7e3b3~5l7b6f7k3|3~7n266l4+6n7.3G7w7w6L5N7A0L5J7%7x4r7H7Q7Z0.7M0?7P86817S1p6z6B6Q7)7F5,7$4o7Y6d7:7d694j7h8u7r5q0V4k7^7p7;7s8x2E7v7 8L8h3o6P6~8l0c8s5+0?0A8T6M898n7K1 5,0y8a3L6H046J8g7F0K8P6 718S8!7R7!048W8^8b7G047I8}3L8%8)6G0?0J954Z0k0L3e78927+8w3b4B7/7`6g4i9i6j7o9l7=9o8J6r8L874~7A350u0N8X5N8p9e2-3K9g1_4R8y9r8H3b4S8E9N8B4S9u9w7 8N6w7T6}8=6C928U8{9D7S919H8#8`8(8.9/8c6I995N9b9d7%629.7a5n7,0V4.9k7q6m9na39p7_a67{a8a47~6t9Y017A2x0c0l0v189=8_9Z8j8Q709%8r7)0I5b4?554^52190c4{aF2K2F0T1VaC0I4_620X0Z0#0u04.
III. Les listes
Exercice 1
Vous devez générer une liste contenant les entiers de 1 à 49 dans l'ordre croissant. Ensuite, votre code doit tirer, sans remise, 6 numéros qu'on stocke dans une liste, puis, toujours sans remise, un dernier numéro (le numéro complémentaire).
Exemple
Votre code affichera la liste des 6 numéros puis le complémentaire comme ceci :
[31, 3, 12, 45, 13, 27]
18
Attention
Vous pourrez importer le module random.
Vous ne devez pas utiliser la fonction choice du module random.
A vous de jouer
Astuce
🌵 Envisagez différentes façons de coder ce problème, utilisant pop, del ou remove ...
Solution avec la méthode pop
C'est la solution préférable.
from random import randint
liste = [ i for i in range ( 1 , 50 )]
reponse = []
for i in range ( 6 ):
numero = liste . pop ( randint ( 0 , len ( liste ) - 1 ))
reponse . append ( numero )
print ( reponse )
complementaire = liste . pop ( randint ( 0 , len ( liste ) - 1 ))
print ( complementaire )
Solution avec del
from random import randint
liste = [ i for i in range ( 1 , 50 )]
reponse = []
for i in range ( 6 ):
i = randint ( 0 , len ( liste ) - 1 )
reponse . append ( liste [ i ])
del liste [ i ]
print ( reponse )
i = randint ( 0 , len ( liste ) - 1 )
print ( liste [ i ])
Solution avec la méthode remove
from random import randint
liste = [ i for i in range ( 1 , 50 )]
reponse = []
for i in range ( 6 ):
i = randint ( 0 , len ( liste ) - 1 )
reponse . append ( liste [ i ])
liste . remove ( liste [ i ])
print ( reponse )
i = randint ( 0 , len ( liste ) - 1 )
print ( liste [ i ])
Exercice 2
Exercice 2
1. On considère le programme suivant :
liste1 = [ 0 ] * 100
liste2 = [ 0 for k in range ( 100 )]
liste3 = []
for k in range ( 100 ):
liste3 . append ( 0 )
Quel est le contenu de chacune des listes ?
Solution
😀 Utiliser l'éditeur Python pour vérifier les réponses ...
2. Ecrire un programme python permettant de créer les listes suivantes :
a. Une liste contenant 12 fois le chiffre 7.
b. La liste des nombres entiers de 1 à 100.
c. Une liste contenant 50 nombres tirés au sort entre 1 et 6.
A vous de jouer
Solution
from random import randint
liste_a = [ 7 for _ in range ( 12 )]
liste_b = [ i for i in range ( 1 , 101 )]
liste_c = [ randint ( 1 , 6 ) for _ in range ( 50 )]
print ( liste_a )
print ( liste_b )
print ( liste_c )
Exercice 3
Écrire une fonction sans_doublon qui prend en paramètre une liste de nombres pouvant contenir des nombres répétés plusieurs fois et renvoie la liste ne contenant qu'une fois chaque nombre.
Exemple
>>> sans_doublon ([ 1 , 2 , 4 , 6 , 6 ])
[ 1 , 2 , 4 , 6 ]
>>> sans_doublon ([ 2 , 5 , 7 , 7 , 7 , 9 ])
[ 2 , 5 , 7 , 9 ]
>>> sans_doublon ([ 5 , 1 , 1 , 2 , 5 , 6 , 3 , 4 , 4 , 4 , 2 ])
[ 5 , 1 , 2 , 6 , 3 , 4 ]
Attention
Il est interdit d'utiliser count
Compléter le code ci-dessous
.128013vt4=wf2pmuP(:51cSsr]k[63 dg)/niyelh_boa.-050A0H0c0N0F0I0s0z0q0I0N0s0s0e010c0F0i010406050s0k0j0j0N0t0G040r0M0I0k0*0M0E050D0;0?0^0`0/0i04051a131d0D1a0/0A0F0b0Y0!0$0(0!0E0B0k0N0B0H0P0i0G0c0J110z0J0F0B0J0I1F0J0c0-050T0L0I0H1m0#0%011E1G1I1G0c1O1Q1M0c0t1b1A0Y0}0s0i0N0E0(0h011S1o010g0V0H0E0N0j0H1M1.1:1^1U1{1Q1~200-0a0z0l0t0M0i0M0s0F100E0z0R1,0t0t0H0q2l13230E1b0D1A2y1(1*1)1N0A251p0F0E1}2i1M1j1l0Z1T2I2K0E0M2O1M0i2r1b2w2y2#0:1/2m2Q1_2U0t0@0I1M0N1D2r0g0(030K0K0q2V0H1I2T0M0P0d0o0P0p0-0p130N2$2)0.2(242+1U2-2/2;2?0H2^012`2|2~302L33351?040h3a3c1:3e2w2H013j0N2:1b2=0J2@2_2{2}0R3t2U3v0P0y0-0y3A2v3d0/3E3h0(3H3J053L3N3p3P3s2J3u34330-0d3Z143#3f2*1n3i0M2.3I3l3M3n3O3r3R3=3T3@0o0-0o3{2#3$2)3F3*453.3q3Q2 4b323@0x0-0x4h3d1e2Z132O2B0A1*2G3(014q2N1k1b2Y0H2!4z3|3C054q4Q240F0A0(2{2w3U373K0z4Y4!494r314%1@290H4,4q3S4t354(3Z3%400(0v0-0R0g3!4T4~2R010f0-0z552x3~4l0g0-0s1:0s0K0A0M0k1P115d4W3 580,040m5s5f4I0E0-1#0H0N0k5z571_5w0C0n5s0/4S5e3E4+014#2)3U3x3,4*4Z5U4-4_5X4;1 4?5$4^4s5)2y3b0z5?5c5J3i0-2U0k0b5F5H5Q045^4k4I0M0-0e5s633g4 015w0w0u5O5I4k5T5V1:3U3W4)6k5%5/3@3W0z4=4@3;4/6t1M0D5=5@5A6c51040g42696F585C042U0j0L2r6L5_0(0M5a042J6U646c6O5E5G6i6b5v0-5N615P2%5S5#6l0E3U0d3l6q5.6z356{6v5+6x4a6 3^5;625@7a6M1_6H0F54616a5u2,5{0M6R6T7h7c1U6X7l0c6#6,1_7s6Z127p6V3G7l5}5 6+7j1U5w6/4i7H5!4,4$4d6|6@6r764e7220744.3?354e787a7)6E7C6O5|5~6*617q6W0-0O7N5B0-0N0i0i1}0A7_6c5w5y7;7,7l7n0H816-040C6h856j7T7Q354v6p7T6~7#0P4v7X5,3:758o8k3A7b7C6H2r0c0k0t7A2#7i4l7E7/607M7;0D4V4A4P4C4M130c4F8U2E2z0N1P8R0D4D5P0R0T0V0s04.
Exercice 4 : Savoir compter
Écrire une fonction compter_triples qui prend en paramètre une liste entiers de nombres entiers et renvoie le nombre de multiples de 3 de cette liste
Attention
Il est interdit d'utiliser count
Compléter le code ci-dessous
.128013vt4=wf2pmuP(:51cSsrk630 dg)/+niyelh_boa%-050z0H0c0N0F0I0s0y0q0I0N0s0s0e010c0F0i010406050s0k0j0j0N0t0G040r0M0I0k0*0M0E050C0;0?0^0`0/0i04051a131d0C1a0/0z0F0b0Y0!0$0(0!0E0A0k0N0A0H0P0i0G0c0J110y0J0F0A0J0I1F0J0c0-050T0L0I0H1m0#0%011E1G1I1G0c1O1Q1M0c0t1b1A0Y0}0s0i0N0E0(0h011S1o010g0V0H0E0N0j0H1M1.1:1^1U1{1Q1~200-0a0y0l0t0M0i0M0s0F100E0y0R1,0t0t0H0q2l13230E1b0C1A2y1(1*1)1N0z251p0F0E1}2i1M1j1l0Z1T2I2K0E0M2O1M0i2r1b2w2y2#0:1/2m2Q1_2U0t0@0I1M0N1D2r0g0(030K0K0q2V0H1I2T0M0P0d0v0P0p0-0p130N2$2)0.2(242+1U2-2/2;2?0H2^012`2|2~302L33351?040h3a3c1:3e2w2H013j0N2:1b2=0J2@2_2{2}0R3t2U3v0P0w0-0w3A2v3d0/3E3h0(3H3J053L3N3p3P3s2J3u34330-0d3Z143#3f2*1n3i0M2.3I3l3M3n3O3r3R3=3T3@0o0-0o3{2#3$2)3F3*453.3q3Q2 4b323@0v0-0v4h3d1e2Z132O2B0z1*2G3(014q2N1k1b2Y0H2!4z3|3C054q4Q240F0z0(2{2w3U373K0y4Y4!494r314%1@290H4,4q3S4t354(3Z3%400(0u0-0R0g3!4T4~2R010f0-0y552x3~4l0g0-2}0j0i0c0H0t0K1(0+1Q0s5d4W3 580,040m5u5f4I0E0-1}0*5n5t4S5e571_5y0B0n5u0/5K5v4*4Z014#2)3U3x3,5V4@3;4/3@1?0y4=5(4a5*3w1M0C3b0y5_5c5M3i5i5l5u5{4k4I0M0-0e605C4 010j0F0-0x5R5B3E4+5X0K4$3@3W4)6i3:5:3?353W5-1 4?6j4^4s3U6n3A5`613g6951040g42675|3)0-2U0j0L2r6M62690M5a042J6U6G585E045G0F5I6g6V5x0-5Q5T5S2%6h5W5Y1:3U0d3l6p4-4_6|4;6w5/4.6s3^2y5^6E5`68586I0F545T6F5w2,6P0M6R6T7i7d1_64040O6#7k1U6b3X7w3F7t0e667q6N6a6c046e5T7r1U5y6;4i6-4X6_6k5Z4d6~7U6z5;0P4e6v2075717X79047b7/7j4l5~0c7B63657^696(0q5 7G6.7s0-0D7{587z04396=7S2m6 6l354v6o7Z5)774v7(6x6q764c8f5?7a5_7N500-2r0c0k0t12806$7l047~7@8a7M0C4V4A4P4C4M130c4F8R2E2z0N1P8O0C4D5S0R0T0V0s04.
Exercice 5 :
Indice du minimum
Exercice 6 :
Maximum
Exercice 7 :
Distribution de costumes
Exercice 8 :
Aplatir un tableau
Exercice 9 : Le nombre mystère
Exercice 9
Trouvez le nombre mystère qui répond aux conditions suivantes :
Il est composé de 3 chiffres.
Il est strictement inférieur à 300.
Il est pair.
Deux de ses chiffres sont identiques.
La somme de ses chiffres est égale à 7.
On vous propose d'employer une méthode dite de « force brute », c'est-à-dire de tester tous les nombres possibles répondants aux trois premières conditions.
Question
Compléter le script suivant
possibles est la liste des nombres répondant aux trois premiers critères.
liste est la liste des nombres répondant au problème.
.128013vt4=8fw2pmuP(751:,cSsFr]kE[63;0 dg)/+n9qiyelh_boaxT%-050H0R0c0X0P0S0v0G0t0S0X0v0v0e010c0P0j010406050v0l0k0k0X0x0Q040u0W0S0l0_0W0M050K101214160~0j04051m1f1p0K1m0~0H0P0b0.0:0=0@0:0M0I0l0X0I0R0#0j0Q0c0T1d0G0T0P0I0T0S1R0T0c0|050)0V0S0R1y0;0?011Q1S1U1S0c1!1$1Y0c0x1n1M0.190v0j0X0M0@0i011(1A010g0+0R0M0X0k0R1Y1}1 241*271$2a2c0|0a0G0m0x0W0j0W0v0P1c0M0G0%1{0x0x0R0t2x1f2f0M1n0K1M2K1@1_1^1Z0H2h1B0P0M292u1Y1v1x0/1)2U2W0M0W2!1Y0j2D1n2I2K2;0 1~2y2$252*0x130S1Y0X1P2D0g0@030U0U0t2+0R1U2)0W0#0d0o0#0q0|0G0q1f0X2=2^0}2@2g2`1*2|2~30320R340136383a3c2X3f3h22040G0i3n3p1 3r2I2T013w0X2 1n310T333537390%3G2*3I0#0D3k0D3O2H3q0~3S3u0@3V3X053Z3#3C3%3F2V3H3g3f3k0d3;1g3?3s2_1z3v0W2}3W3y3!3A3$3E3)433+450p3k0p492;3@2^3T3{4j3 3D3(3b4p3e450C3k0C4v4b3^4e3`4g3x3Y3z3B4D423d3,0o3k0o4M3Q4x3t4P3U4R4i4T4k4V414o4Y450f3k0f4%2J4)4d2%4,4h3|3~4l404n4F4@3h0N3k0N4|3R4y3_514S3}4U4m4E3*4H3h0q0F0|5r5e4~4z4-535l565n4G3,0q3j045F5v4c5x524B554W4?445q3K0q3N0K3o3=4(5K5h4A4/4C4=585R3i3.5H3:5W3P4}5!4+5$5k4:5m4X5+0q0d5t485:5Y5=4O505^544;575o5E4s5H4u624a5Z652{5y5N695C593i4J5H4L6g4w5?666l5%5O5)6b450q4!5H4$6u4N5g5@6y5_5(6a5D6D4_5H4{6I6i6K6x5M6z6n5|4q5q5b5H5d6V646X6k6Z6N6A6P6p0i5s046^5J6j4f6:685{5Q6%0#0i5G756|6.6~5j705B6$5p743K0i5V5X6h6-4*6Y7b5A5P5*730i5-7u787n6/7p5`7d727f0i5 6`617k6v6}4Q6 7q6B6Q3J6d0i6f7J6J7y7a4.6;6#7D3,0i6r7(7x4 7z7Z7c7r6C3J6F0i6H7V6W7X7M7A6O6o5+0i6S817+5L7}6=7 7t6)0i6+7_7m7,7Y5z7B7:7Q3-6_0D0F845#6M7/7P6p0D5G8v8p6L7N8i8t5+0D3K8E8y7o7.7O6?8D5-0D5/8d2K2.0R2K2!2N0H1_2S5h4E2Z1w1n8S2:3q631n4E8*2g0P0H0@372I5E3y8;8?8L733j0G2l0R8|887f5G3;7L010z0|0%0g8,6w250h3k9e980M0g9b0R0l0Y381Q0g0g0R0v0U8;290c9j790@0{040n9B7{3U0|0M0V2D9H8f9D0|0r9O4z0V0|2V9A7l8/9P019E0J9T5h0W0|0#020I0c0E8,0G9f3v9V040V0W199)4+9E9S9Z0~9Z5K8{018@2^7%8`8=a78}7E2391937eaa2K5X989h3L0Gaq9~500v0H0|020O0l0W9:axazaBayaA9;a29Ta6a81 3,5-5kaKaeaNag2b92ad94aSal9!3Tau3kaq0G2D0M0b0W0P1%0Z0x0l1%2v909M1%310%9p0.9s0g2D0-9y0M0_ay9v0s0G0w3W0va?2V1d8,a32?3SaQ8^457GaPac8C735 90aUai7$bm1Y6298a$apaq0A0Y0R0k0j1$0-a16va4bjbp0Ubl3h6dbobv7s7f4sbt2cbV7;0#bTbz9C01bBa(0G9.aB9/0Eb/0E2z9o9q0ta 9v9x0%b40n5U0q9(aIbN4ybka94Iabb#8k4JbZaVbq7f6r97b*b,a(a:a=bgaJbPbR0#6FbUaWaj454!cfcc6pcvb)9Icmaqb?cJb;b^9p9r0P9tb}b30cc17uc4bMbic7csc93h6Scwch3,4_cBcxbwc$byamclavbCb9bb0Rcqc68:c!aM456)c(aRd0aTb!c-bW3,d15:bh8+bO8|ct5rcbd7b$dhc,c)6D6_3Odc3Qa5c~0M5E9631aQaX6D8 ahdj8k5Fc:a!5hcHb.aFaEaDb=dMaHcXddcZdfc#3i3Kd2dA5Sd5cgd3d#aZb-9@3`0|0kaA9=d,019+040ed;9k9_0v1@as259E9Gc|9#0M9Ka_d 1*9%c{cYc}dVc 5qaOdybPd!5,d$cC5}aO5:d+989a04cPd`b*e1e8d-04d/9Yec9#9E0Bez010k0P0|8oe33T9E0yew9Id@0ed_9Z9?9kd.d:eO5heGeIeK5teIeQeS9#0Wao4ge.4ze!eDdT9Ie(e$4+e*5He,0|eReXd=eUeW2;eYb*e5eBe#eEeP0|eHe}50e 5Vfee%f2cW3qf9eTe;0x9=fre4e^f104fhfme~eL04eNfC50e-f498f6e?5#fyfie0fge)fEfle`eFf2bL4beOc8ef3ibneien8~bsdDdn5qbneqb-a(d=et2D0c0l0x1efKb*0z0t0|coc`c5fef$dv6DbTf*dE6p0qbYf.d(3ib(3oerg00|3bbcfzfZ5Zf#du5Ecjgcf/6qemgd5}cjf=f?fw3Tf_0(f|f~f8f^g204ba0,g5dSdsdeaddgcvgygi6EgBgzg$aZdr2Jdteeg95qc%g!ek0qc+ghg?c%cF9#et9ceIao9?fQ3v9m040v0W120RcO9tb1fze2fH2{e69Nh39Q04gsg,d{9Wb4fzfpgVb*d@9-b;eI9Lhqe_hue{9RebfW0Gg85Ed1g=cy6(g%g#dac;9Ih1f@hkb+c?aCaGhZdNaGhGhD2yhJ456^digzh-dmgih-aZd=dKa*a,a.0G0:0Gh7h9b^0-b{cP9u0-2A9LhjgUhodUgXdW75h.h=dCbugC7t96g|a#c?b-bEbGbI1%hn3rgug.7%dYhMc.7ghPek7idHh^iqa(cKb:9:h h82chbb09vcU0Dht5=iyief%7uihiG3.h;i(iIbAiKaq6tiba!h+3Jf)hIejhN74f-ikh/f;3og+i=gvh,gbi_f+7Eggi~h=gkdI4+dKh#dPdOjhh(icedi!g/74gxj7il7Eceg_i{7(dHgm9IfbeCfN4+eUjE66d|d~hWeyhWfbi9gThHfn04iXixg7j47=i%jxcAjwiD7@jzf@eZh6iQjQ3QgH9*0|f7fqd=e fGf!jWizh,g;jsh/g^jbiGg{glj*gn040ge=f jB0|0t14jH25e:hqkh3vfPhge9hFg6hHi?74hLk0h=5bi*jxhRc@jAfxj,h9kl0@jGkckEi02ckHd?0|0LkOhAeuhrjL0|hfjR5@kekgkWjTjlj3j}3h8njZiDk-kzk/dpgFj:4+gJf{f}kS0|kMj.iYj|joaNdxkwek8viFi{l8g*crk+3-iBl6la22k;d8458Ei,fa0|2t0=0P1#9vkOkJgN98e|koeA0PkOetkafukKe@eulwao2VkS9_0x1 1HhefT5t0Fj`h)ff040skOe 8nlXjmfXk(lI5hetevl-k!lKl;50d@0!l$fUlwj=j?lY5hj_fzf3i;g-l3lmehlhk/i)j$llk,ephSkE1Ud}l03Lf5j=kOlAkZ66himlk^50lFkblylp04jPlLkkl@hh04lr2vlu0vlE9W9dmFkp9Fhz9ncNi4cQ9wcSlTjNmthsl}d^l 2Jmv25g1g3a;muf5ao1 0Hk}kFiRmViTmLk%kYm0l=mCk%jUm+1*fMmP0@e 6HlB9$0|0Jm4j{8+0K8.1q2/1f8V1f0c8Xnp2Q2L0Xlu8U8%a30%0)0+0v04.
IV. Les chaines de caractères
Renverser une chaîne
V. Les dictionnaires
Exercice 10
Compléter le script suivant pour qu'il affiche la liste pokemons_rapides des noms des pokémons dont la vitesse est supérieure à 60.
On doit obtenir l'affichage : ['Salameche', 'Reptencil'] ou ['Reptencil', 'Salameche']
Solution 1
Correction possible utilisant la méthode items:
pokemon1 = { 'Nom' : 'Carapuce' , 'HP' : 44 , 'Attaque' : 48 , 'Defense' : 65 , 'Vitesse' : 43 , 'Type' : [ 'Eau' ]}
pokemon2 = { 'Nom' : 'Evoli' , 'HP' : 55 , 'Attaque' : 55 , 'Defense' : 50 , 'Vitesse' : 55 , 'Type' : [ 'Normal' ]}
pokemon3 = { 'Nom' : 'Salameche' , 'HP' : 39 , 'Attaque' : 52 , 'Defense' : 43 , 'Vitesse' : 65 , 'Type' : [ 'Feu' ]}
pokemon4 = { 'Nom' : 'Reptencil' , 'HP' : 58 , 'Attaque' : 64 , 'Defense' : 58 , 'Vitesse' : 80 , 'Type' : [ 'Eau' ]}
liste_pokemon = [ pokemon1 , pokemon2 , pokemon3 , pokemon4 ]
pokemons_rapides = []
for pokemon in liste_pokemon :
for cle , valeur in pokemon . items ():
if cle == 'Vitesse' :
if valeur > 60 :
pokemons_rapides . append ( pokemon [ 'Nom' ])
print ( pokemons_rapides )
Solution 2
Correction possible sans utiliser la méthode items:
pokemon1 = { 'Nom' : 'Carapuce' , 'HP' : 44 , 'Attaque' : 48 , 'Defense' : 65 , 'Vitesse' : 43 , 'Type' : [ 'Eau' ]}
pokemon2 = { 'Nom' : 'Evoli' , 'HP' : 55 , 'Attaque' : 55 , 'Defense' : 50 , 'Vitesse' : 55 , 'Type' : [ 'Normal' ]}
pokemon3 = { 'Nom' : 'Salameche' , 'HP' : 39 , 'Attaque' : 52 , 'Defense' : 43 , 'Vitesse' : 65 , 'Type' : [ 'Feu' ]}
pokemon4 = { 'Nom' : 'Reptencil' , 'HP' : 58 , 'Attaque' : 64 , 'Defense' : 58 , 'Vitesse' : 80 , 'Type' : [ 'Eau' ]}
liste_pokemon = [ pokemon1 , pokemon2 , pokemon3 , pokemon4 ]
pokemons_rapides = []
for pokemon in liste_pokemon :
if pokemon [ 'Vitesse' ] > 60 :
pokemons_rapides . append ( pokemon [ 'Nom' ])
print ( pokemons_rapides )
Solution 3
😀 : Solution beaucoup plus élégante avec une liste en compréhension :
pokemon1 = { 'Nom' : 'Carapuce' , 'HP' : 44 , 'Attaque' : 48 , 'Defense' : 65 , 'Vitesse' : 43 , 'Type' : [ 'Eau' ]}
pokemon2 = { 'Nom' : 'Evoli' , 'HP' : 55 , 'Attaque' : 55 , 'Defense' : 50 , 'Vitesse' : 55 , 'Type' : [ 'Normal' ]}
pokemon3 = { 'Nom' : 'Salameche' , 'HP' : 39 , 'Attaque' : 52 , 'Defense' : 43 , 'Vitesse' : 65 , 'Type' : [ 'Feu' ]}
pokemon4 = { 'Nom' : 'Reptencil' , 'HP' : 58 , 'Attaque' : 64 , 'Defense' : 58 , 'Vitesse' : 80 , 'Type' : [ 'Eau' ]}
liste_pokemon = [ pokemon1 , pokemon2 , pokemon3 , pokemon4 ]
pokemons_rapides = [ pokemon [ "Nom" ] for pokemon in liste_pokemon if pokemon [ "Vitesse" ] > 60 ]
print ( pokemons_rapides )
Exercice 11 : Eurovision
Exercice 12 : Dictionnaire enversé
# Tests(insensible à la casse)(Ctrl+I)
(Alt+: ; Ctrl pour inverser les colonnes)
(Esc)