PYTHON .2 INFO FEUILLE n ° 9 d'ex. 10 Avril 2012 BTS1 SIO
-------------------------------------------------------------------------------------------------------------------
COURS:
Thème : • " list comprehension "
Multiplier par un même réel a tous les termes d'une liste
à l'aide de la fonction elem*a de variable elem
• liste.index(... terme de la liste ..)
Cela donne l'indice du terme de la liste
• ord("caractère")
cela donne le code ASCII du "caractère"
• Moyenne des valeurs deux à deux de deux listes .
• Bulletin trimestriel
-----------------------------------------------------------------------------------------------------------------------
EXERCICE 0
Que donne le script suivant ?
def teuf():
li = [ " Aude" , "Paris"," Lyon", "Champs"]
print li.index("Paris")
------------------------------------------------------------------------------------------------------
Réponse:
Cela donne l'indice de "Paris" dans la liste li
>>> teuf()
1
>>>
----------------------------------------------------------------------------------------------------------------------
EXERCICE 1
Que donne le script suivant ?
def fan():
ljk="figure"
print ljk[1]
------------------------------------------------------------------------------
Réponse: On obtient:
>>> fan()
i
>>>
Cela donne le caractère d'indice 1 de la chaîne.
On a donc i qui est le second caractère de la chaîne.
-------------------------------------------------------------------------------------
EXERCICE 2
1. Code ASCII d'un caractère.
Que donne le script suivant?
def fut():
print ord("z")
2. Caractrère de code ASCII un entier compris entre 0 et 255.
Que donne le script suivant?
def gat():
print chr( 122)
------------------------------------------------------------------------------------
Réponse :
1 . On obtient :
>>> gat()
122
>>>
C'est le le code ASCII du caractère a.
2. On obtient:
z
C'est le caractère de code ASCII 122.
--------------------------------------------------------------------------------------
EXERCICE 3
Soit le script suivant
def prd():
li = [2, 7, 12, 5]
li1= [elem*3 for elem in li]
print li1
Qu'obtient-on?
-------------------------------------------------------
Réponse:
On a la liste li1 dont les termes sont les triples
des termes de la liste li.
On obtient :
>>> prd()
[6, 21, 36, 15]
>>>
-------------------------------------------------------------------------
EXERCICE 4
Que donne le scrip suivant?
def son():
li = [2,7,12,5]
li1= [elem+3 for elem in li]
print li1
---------------------------------------------------------------------------
Réponse:
On a la liste li1 dont les termes sont les sommes de 3 avec chaque
terme de la liste li.
On obtient :
>>> prd()
[5, 10, 15, 8]
>>>
----------------------------------------------------------------------
EXERCICE 5
Que fait le script suivant ?
def plusgrand():
li = [2,7,12,5]
s=li[0]
for element in li:
if element > s:
s = element
print s
---------------------------------------------------------------------------
Réponse:
On obtient :
>>> plusgrand()
12
>>>
C'est le plus grand terme de la liste.
------------------------------------------------------------------------
EXERCICE 6
Que donne le script suivant:
def bulletin():
Nom=["Albert"," Cecile", "Barnabe","roger"]
Dev1=[11,10,12,5]
Dev2=[13,8,8,11]
li=[]
for i in range(4):
c=float((Dev1[i]+Dev2[i])/2)
li.append(c)
M=[Nom,Dev1,Dev2,li]
print M
------------------------------------------------------------------------------------------------------
Réponse:
On obtient un tableau qui donne les moyennes de chacun des
quatre élèves.
>>> bulletin()
[['Albert', ' Cecile', 'Barnabe', 'roger'], [11, 10, 12, 5], [13, 8, 8, 11], [12.0, 9.0, 10.0, 8.0]]
>>>
-------------------------------------------------------------------------------------------------
EXERCICE 7
Reprendre le thème de l'exercice précédent en demandant à quatre
étudiants les notes de maths aux deux devoirs surveillés.
Après que s'affiche le bulletin indiquer la meilleure moyenne
et donner un étudiant qui l'a.
-------------------------------------------------------------------------------------------------------
Réponse:
On peut considérer le script suivant:
def bulletin():
Nom=["Albert"," Cecile", "Barnabe","roger"]
Dev1=input( "Albert, Cecile, Barnabe,roger donnez moi la liste de vos notes du DS n° 1 " )
Dev2=input( "Albert, Cecile, Barnabe,roger donnez moi la liste de vos notes du DS n° 2 " )
li=[]
for i in range(4):
c=float((Dev1[i]+Dev2[i])/2)
li.append(c)
M=[Nom,Dev1,Dev2,li]
print M
s=li[0]
for element in li:
if element > s:
s = element
print ("La meilleure note est :"),s
k=li.index(s)
print (" C'est la note de: " ) , Nom[k]
----------------------------------------
Voici ce que cela peut donner
>>> bulltin()
Albert, Cecile, Barnabe,roger donnez moi la liste de vos notes du DS n° 1 [14,12,16,10]
Albert, Cecile, Barnabe,roger donnez moi la liste de vos notes du DS n° 2 [8,12,9,5]
[['Albert', ' Cecile', 'Barnabe', 'roger'], [14, 12, 16, 10], [8, 12, 9, 5], [11.0, 12.0, 12.0, 7.0]]
La meilleure note est : 12.0
C'est la note de Cecile
>>>
------------------------------------------------------------------------------------------------------------------------------------
Une des caractéristiques les plus puissantes de Python est
la list comprehension (création fonctionnelle de listes)
qui fournit un moyen concis d'appliquer une fonction sur chaque élément
d'une liste afin d'en produire une nouvelle.
Exemple: Présentation des list comprehensions
>>> li = [1, 9, 8, 4]
>>> [elem*2 for elem in li]
1
[2, 18, 16, 8]
>>> li
2
[1, 9, 8, 4]
>>> li = [elem*2 for elem in li]
3 >>> li [2, 18, 16, 8]
1 |
Pour comprendre cette ligne, lisez là de droite à gauche. li est la liste que vous appliquez. Python la parcourt un élément à la fois, en assignant temporairement la valeur de chacun des éléments à la variable elem. Python applique ensuite la fonction elem*2 et ajoute le résultat à la liste retournée.
|
2
|
Notez que les list comprehensions ne modifient pas la liste initiale.
|
3 |
Vous pouvez assigner le résultat d'une list comprehension à la variable que vous traitez. Python assemble la nouvelle liste en mémoire et assigne le résultat à la variable une fois la transformation terminée. |