Aller au contenu

Ep 29

le document

l'algorithme

Issue de : 23-NSI-17⚓

EXERCICE 1⚓

Écrire une fonction moyenne(notes) qui renvoie la moyenne pondĂ©rĂ©e des rĂ©sultats contenus dans le tableau notes, non vide, donnĂ©e en paramĂštre. Ce tableau contient des couples (note, coefficient) dans lesquels :

  • note est un nombre de type flottant (float) compris entre 0 et 20 ;
  • coefficient est un nombre entier strictement positif.

Ainsi l’expression moyenne([(15,2),(9,1),(12,3)]) devra renvoyer 12.5.

\(\dfrac{2 \times 15 + 1 \times 9 + 3 \times 12 }{2+1+3}=12,5\)

RĂ©ponse

Complétez le code ci-dessous

###
# Mettre ici votre codebksl-nlbksl-nl



Solution

###
def moyenne(listepy-undnotes):bksl-nl sommepy-undnotes = 0bksl-nl sommepy-undcoeffs = 0bksl-nl for devoir in listepy-undnotes:bksl-nl note = devoir[0]bksl-nl coeff = devoir[1]bksl-nl sommepy-undnotes += note py-str coeffbksl-nl sommepy-undcoeffs += coeffbksl-nl return sommepy-undnotes / sommepy-undcoeffsbksl-nlbksl-nltry:bksl-nlbksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl



EXERCICE 2⚓

On cherche à déterminer les valeurs du triangle de Pascal Figure 1.

Dans le triangle de Pascal, chaque ligne commence et se termine par le nombre 1. Comme l’illustre la Figure 2, on additionne deux valeurs successives d’une ligne pour obtenir la valeur qui se situe sous la deuxiùme valeur.

image

Compléter les fonctions ligne_suivante et pascal ci-dessous.

La fonction ligne_suivante prend en paramùtre une liste d’entiers ligne correspondant à une ligne du triangle de Pascal et renvoie la liste correspondant à la ligne suivante du triangle de Pascal.

La fonction pascal prend en paramùtre un entier n et l’utilise pour construire le triangle de Pascal ayant n+1 lignes sous la forme d’une liste de listes.

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
def ligne_suivante(ligne):
    '''Renvoie la ligne suivant ligne du triangle de Pascal'''
    ligne_suiv = [...] 
    for i in range(...): 
        ligne_suiv.append(...) 
    ligne_suiv.append(...) 
    return ligne_suiv

def pascal(n):
    '''Renvoie le triangle de Pascal de hauteur n'''
    triangle = [ [1] ]
    for k in range(...): 
        ligne_k = ... 
        triangle.append(ligne_k)
    return triangle

Pour n = 4, voici ce qu'on devra obtenir :

🐍 Script Python
>>> ligne_suivante([1, 3, 3, 1])
[1, 4, 6, 4, 1]
>>> pascal(2)
[[1], [1, 1], [1, 2, 1]]
>>> pascal(3)
[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]
RĂ©ponse

Complétez le code ci-dessous

###
def lignepy-undsuivante(ligne):bksl-nl '''Renvoie la ligne suivant ligne du triangle de Pascal'''bksl-nl lignepy-undsuiv = [...] bksl-nl for i in range(...): bksl-nl lignepy-undsuiv.append(...) bksl-nl lignepy-undsuiv.append(...) bksl-nl return lignepy-undsuivbksl-nlbksl-nldef pascal(n):bksl-nl '''Renvoie le triangle de Pascal de hauteur n'''bksl-nl triangle = [ [1] ]bksl-nl for k in range(...): bksl-nl lignepy-undk = ... bksl-nl triangle.append(lignepy-undk)bksl-nl return trianglebksl-nl



Solution

###
def lignepy-undsuivante(ligne):bksl-nl '''Renvoie la ligne suivant ligne du triangle de Pascal'''bksl-nl lignepy-undsuiv = [1] bksl-nl for i in range(1, len(ligne)): bksl-nl lignepy-undsuiv.append(ligne[i-1] + ligne[i]) bksl-nl lignepy-undsuiv.append(1) bksl-nl return lignepy-undsuivbksl-nlbksl-nldef pascal(n):bksl-nl '''Renvoie le triangle de Pascal de hauteur n'''bksl-nl triangle = [ [1] ]bksl-nl for k in range(1, n+1): bksl-nl lignepy-undk = lignepy-undsuivante(triangle[k-1]) bksl-nl triangle.append(lignepy-undk)bksl-nl return trianglebksl-nlbksl-nltry:bksl-nlbksl-nl assert lignepy-undsuivante([1, 3, 3, 1]) == [1, 4, 6, 4, 1]bksl-nl assert pascal(2) == [[1], [1, 1], [1, 2, 1]]bksl-nl assert pascal(3) == [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]]bksl-nl print('Tout semble correct 👍')bksl-nlbksl-nlexcept AssertionError as asser:bksl-nl print('Le rĂ©sultat de votre fonction n\'est pas conforme đŸ€”')bksl-nl