Aller au contenu

Index des sujets 2023

Corrigé sujet 05 - Année : 2023

Sujet 05 - 2023

Exercice 1

Bug

La fonction lancer telle que définie dans l'énoncé renvoie un tableau mais ne produit a priori, pas d'affichage. Or, pendant les tests, on voit :

>>> lancer1 = lancer(5)
[5, 6, 6, 2, 2]
On devrait plutôt avoir :
>>> lancer1 = lancer(5)
>>> lancer1
[5, 6, 6, 2, 2]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
from random import randint 

def lancer(n):
    resultats = []
    for i in range(n):
        de = randint(1,6)
        resultats.append(de)
    return resultats

def paire_6(lancers):
    nb_6 = 0
    for de in lancers:
        if de == 6:
            nb_6 += 1
            if nb_6 == 2:
                return True
    return False

Note

  • On pourrait construire par compréhension la liste des lancers :
    def lancer(n):
        return [randint(1,6) for _ in range(n)]
    
  • Dans cette correction on a choisi pour la deuxième fonction de renvoyer True dès qu'une paire de 6 a été trouvé (sans parcourir le reste de la liste)

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
def nbLig(image):
    '''renvoie le nombre de lignes de l'image'''
    return len(image) #(1)

def nbCol(image):
    '''renvoie la largeur de l'image'''
    return len(image[0]) #(2)

def negatif(image):
    '''renvoie le negatif de l'image sous la forme 
       d'une liste de listes'''
    L = [[0 for k in range(nbCol(image))] for i in range(nbLig(image))] 
# on cree une image de 0 aux memes dimensions que le parametre image 
    for i in range(nbLig(image)):
        for j in range(nbCol(image)): #(3)
            L[i][j] = 255-image[i][j] #(4)
    return L

def binaire(image, seuil):
    '''renvoie une image binarisee de l'image sous la forme 
       d'une liste de listes contenant des 0 si la valeur 
       du pixel est strictement inferieure au seuil 
       et 1 sinon'''
    L = [[0 for k in range(nbCol(image))] for i in range(nbLig(image))] # on cree une image de 0 aux memes dimensions que le parametre image 
    for i in range(len(image)):
        for j in range(nbCol(image)): 
            if image[i][j] < seuil : #(5)
                L[i][j] = 0
            else:
                L[i][j] = 1
    return L
  1. Comme indiqué dans l'énoncé, une image est une listes de listes (toutes de même longueur).la hauteur de l'image est le nombres de listes
  2. La largeur de l'image est la longueur d'une sous-liste (elles ont toute la même longueur).
  3. On utilise la fonction nbCol définie plus haut
  4. Se référer à l'énoncé : la somme du pixel et de son négatif doit faire 255.
  5. On applique l'algorithme donné en commentaire : le pixel est mis à 0 s'il est inférieur au seuil et à 1 sinon.