Aller au contenu

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⚓

image 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