Aller au contenu

Index des sujets 2023

Corrigé sujet 03 - Année : 2023

Sujet 03 - 2023

Exercice 1

Attention

Les coefficients peuvent êtres des flottants, on doit tester si leur somme est nulle, or la comparaison de flottant est hautement problématique, on pourra se référer à ce chapitre du cours de première.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
def moyenne(liste):
    somme = 0
    somme_coefficient = 0
    for note,coefficient in liste:
        somme = somme + note*coefficient
        somme_coefficient = somme_coefficient + coefficient
    if somme_coefficient != 0:
        return somme/somme_coefficient
    else:
        return None

Commentaires

Bien comprendre la structure de données utilisée, c'est une liste de tuples. Chaque tuple est un couple (note, coefficient). On peut donc parcourir cette structure avec une boucle du type for note, coefficient in liste (comme dans cette correction) ou alors for note_coeff in liste et dans ce cas note_coeff est un tuple, on accède à la note avec note_coeff[0] et au coefficient avec note_coeff[1]

Exercice 2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
coeur = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], \
         [0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0], \
         [0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0], \
         [0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0], \
         [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], \
         [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], \
         [0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0], \
         [0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0], \
         [0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0], \
         [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0], \
         [0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], \
         [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]

def affiche(dessin):
    ''' affichage d'une grille : les 1 sont repreente par 
        des "*" , les 0 par deux espaces "  " '''
    for ligne in dessin:
        for col in ligne:
            if col == 1:
                print(" *",end="")
            else:
                print("  ",end="")
        print()


def zoomListe(liste_depart,k):
    '''renvoie une liste contenant k fois chaque 
       element de liste_depart'''
    liste_zoom = [] #(1)
    for elt in liste_depart :
        for i in range(k):
            liste_zoom.append(elt)
    return liste_zoom

def zoomDessin(grille,k):
    '''renvoie une grille ou les lignes sont zoomees k fois 
       ET repetees k fois'''
    grille_zoom=[]
    for elt in grille:
        liste_zoom = zoomListe(elt,k) #(2)
        for i in range(k):
            grille_zoom.append(liste_zoom)
    return grille_zoom
  1. On suit l'algorithme de l'énoncé en dupliquant chaque élément de la liste de départ k fois grâce à la boucle for i in range(k)
  2. On zoom chaque ligne en utilisant la fonction précédente