Ep 03
ⶠTélécharger le sujet en pdf.
EXERCICE 1
Dans cet exercice, les nombres sont des entiers ou des flottants.
Ăcrire une fonction moyenne
renvoyant la moyenne pondĂ©rĂ©e dâune liste non vide, passĂ©e en paramĂštre, de tuples Ă deux Ă©lĂ©ments de la forme (valeur
, coefficient
) oĂč valeur
et coefficient
sont des nombres positifs ou nuls.
Si la somme des coefficients est nulle, la fonction renvoie None
, si la somme des coefficients est non nulle, la fonction renvoie, sous forme de flottant, la moyenne des valeurs affectées de leur coefficient.
Exemple :
đ Script Python >>> moyenne([(8, 2), (12, 0), (13.5, 1), (5, 0.5)])
9.142857142857142
>>> moyenne([(3, 0), (5, 0)])
None
Dans le premier exemple la moyenne est calculée par la formule :
\(\dfrac{8 \times 2 + 12 \times 0 + 13,5 \times 1 + 5 \times 0,5}{2+0+1+0,5}\)
RĂ©ponse
Complétez le code ci-dessous
# Mettez votre code icibksl-nl
Solution
def moyenne(tab):bksl-nl somme = 0bksl-nl coeffs = 0bksl-nl for couple in tab:bksl-nl somme += couple[0] py-str couple[1]bksl-nl coeffs += couple[1]bksl-nl if coeffs == 0:bksl-nl return Nonebksl-nl return somme / coeffsbksl-nlbksl-nl
```
EXERCICE 2
On travaille sur des dessins en noir et blanc obtenu Ă partir de pixels noirs et blancs :
La figure « cĆur » ci-dessus va servir dâexemple.
On la reprĂ©sente par une grille de nombres, câest-Ă -dire par une liste composĂ©e de sous-listes de mĂȘme longueurs.
Chaque sous-liste représentera donc une ligne du dessin.
Dans le code ci-dessous, la fonction affiche
permet dâafficher le dessin. Les pixels noirs (1 dans la grille) seront reprĂ©sentĂ©s par le caractĂšre "*" et les blancs (0 dans la grille) par deux espaces.
La fonction zoomListe
prend en argument une liste liste_depart
et un entier k
. Elle renvoie une liste oĂč chaque Ă©lĂ©ment de liste_depart
est dupliqué k
fois.
La fonction zoomDessin
prend en argument la grille dessin
et renvoie une grille oĂč toutes les lignes de dessin
sont zoomées k
fois et répétées k
fois.
Soit le code ci-dessous :
RĂ©ponse
Complétez le code ci-dessous
bksl-nlcoeur = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0], \bksl-nl [0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0], \bksl-nl [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], \bksl-nl [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], \bksl-nl [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], \bksl-nl [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], \bksl-nl [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]bksl-nlbksl-nldef affiche(dessin):bksl-nl ''' affichage d'une grille : les 1 sont reprĂ©sentĂ©s par bksl-nl des " py-str" , les 0 par deux espaces " " '''bksl-nl for ligne in dessin:bksl-nl for col in ligne:bksl-nl if col == 1:bksl-nl print(" py-str", end="")bksl-nl else:bksl-nl print(" ", end="")bksl-nl print()bksl-nlbksl-nlbksl-nldef zoomListe(listepy-unddepart,k):bksl-nl '''renvoie une liste contenant k fois chaque bksl-nl Ă©lĂ©ment de listepy-unddepart'''bksl-nl listepy-undzoom = ...bksl-nl for elt in ... :bksl-nl for i in range(k):bksl-nl ...bksl-nl return listepy-undzoombksl-nlbksl-nldef zoomDessin(grille,k):bksl-nl '''renvoie une grille oĂč les lignes sont zoomĂ©es k fois bksl-nl ET rĂ©pĂ©tĂ©es k fois'''bksl-nl grillepy-undzoom=[]bksl-nl for elt in grille:bksl-nl listepy-undzoom = ...bksl-nl for i in range(k):bksl-nl ... .append(...)bksl-nl return grillepy-undzoombksl-nlbksl-nl
Solution
coeur = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0], \bksl-nl [0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0], \bksl-nl [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], \bksl-nl [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], \bksl-nl [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], \bksl-nl [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], \bksl-nl [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], \bksl-nl [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]bksl-nlbksl-nldef affiche(dessin):bksl-nl ''' affichage d'une grille : les 1 sont reprĂ©sentĂ©s par bksl-nl des " py-str" , les 0 par deux espaces " " '''bksl-nl for ligne in dessin:bksl-nl for col in ligne:bksl-nl if col == 1:bksl-nl print(' py-str',end='')bksl-nl else:bksl-nl print(' ',end='')bksl-nl print()bksl-nlbksl-nlbksl-nldef zoomListe(listepy-unddepart, k):bksl-nl '''renvoie une liste contenant k fois chaque bksl-nl Ă©lĂ©ment de listepy-unddepart'''bksl-nl listepy-undzoom = []bksl-nl for elt in listepy-unddepart:bksl-nl for i in range(k):bksl-nl listepy-undzoom.append(elt)bksl-nl return listepy-undzoombksl-nlbksl-nldef zoomDessin(grille, k):bksl-nl '''renvoie une grille oĂč les lignes sont zoomĂ©es k fois bksl-nl ET rĂ©pĂ©tĂ©es k fois'''bksl-nl grillepy-undzoom = []bksl-nl for elt in grille:bksl-nl listepy-undzoom = zoomListe(elt, k)bksl-nl for i in range(k):bksl-nl grillepy-undzoom.append(listepy-undzoom)bksl-nl return grillepy-undzoombksl-nlbksl-nl