Aller au contenu

Ep 20

le document

l'algorithme

Issue de : 23-NSI-05⚓

coquille dans le sujet

Exemple mal choisi dans l'exercice 1 et modifié dans la correction

EXERCICE 1⚓

Dans cet exercice les tableaux sont représentés par des listes Python (type list).

Écrire en python deux fonctions :

  • lancer de paramĂštre n, un entier positif, qui renvoie un tableau de n entiers obtenus alĂ©atoirement entre 1 et 6 (1 et 6 inclus) ;

  • paire_6 de paramĂštre tab, un tableau de type list de n entiers entre 1 et 6 obtenus alĂ©atoirement, qui renvoie un boolĂ©en Ă©gal Ă  True si le nombre de 6 est supĂ©rieur ou Ă©gal Ă  2, False sinon.

On pourra utiliser la fonction randint(a,b) du module random pour laquelle la documentation officielle est la suivante :

Random.randint(a, b) :

Renvoie un entier aléatoire N tel que a <=N <= b.

Exemples :

🐍 Script Python
>>> lancer1 = lancer(5)
>>> lancer1
[5, 6, 6, 2, 2]
>>> paire_6(lancer1)
True
>>> lancer2 = lancer(5)
>>> lancer2
[6, 5, 1, 6, 6]
>>> paire_6(lancer2)
True
>>> lancer3 = lancer(3)
[2, 2, 6]
>>> paire_6(lancer3)
False
>>> lancer4 = lancer(0)
[]
>>> paire_6(lancer4)
False
RĂ©ponse

Complétez le code ci-dessous

###
# Mettre votre code icibksl-nlbksl-nl



Solution

###
from random import randintbksl-nlbksl-nldef lancer(n):bksl-nl return [randint(1,6) for py-und in range(n)]bksl-nlbksl-nldef pairepy-und6(tab):bksl-nl nb = 0bksl-nl for elt in tab:bksl-nl if elt == 6:bksl-nl nb += 1bksl-nl if nb >=2 :bksl-nl return Truebksl-nl else:bksl-nl return Falsebksl-nlbksl-nltry:bksl-nl assert len(lancer(5)) == 5bksl-nl assert len(lancer(3)) == 3bksl-nl assert len(lancer(0)) == 0bksl-nlbksl-nl lancer1 = [5, 6, 6, 2, 2]bksl-nl assert pairepy-und6(lancer1) == Truebksl-nlbksl-nl lancer2 = [6, 5, 1, 6, 6]bksl-nl assert pairepy-und6(lancer2) == Truebksl-nlbksl-nl lancer3 = [2, 2, 6]bksl-nl assert pairepy-und6(lancer3) == Falsebksl-nlbksl-nl lancer4 = []bksl-nl assert pairepy-und6(lancer4) == Falsebksl-nl 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-nlbksl-nlbksl-nlbksl-nl



```

EXERCICE 2⚓

On considĂšre une image en 256 niveaux de gris que l’on reprĂ©sente par une grille de nombres, c’est-Ă -dire une liste composĂ©e de sous-listes toutes de longueurs identiques.

La largeur de l’image est donc la longueur d’une sous-liste et la hauteur de l’image est le nombre de sous-listes.

Chaque sous-liste reprĂ©sente une ligne de l’image et chaque Ă©lĂ©ment des sous-listes est un entier compris entre 0 et 255, reprĂ©sentant l’intensitĂ© lumineuse du pixel.

Le nĂ©gatif d’une image est l’image constituĂ©e des pixels x_n tels que x_n + x_i = 255 oĂč x_i est le pixel correspondant de l’image initiale.

Compléter le programme suivant :

🐍 Script Python
 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
def nombre_lignes(image):
    '''renvoie le nombre de lignes de l'image'''
    return ... 

def nombre_colonnes(image):
    '''renvoie la largeur de l'image'''
    return ... 

def negatif(image):
    '''renvoie le negatif de l'image sous la forme
       d'une liste de listes'''
    # on cree une image de 0 aux memes dimensions 
    # que le parametre image
    nouvelle_image = [[0 for k in range(nombre_colonnes(image))]
         for i in range(nombre_lignes(image))]

    for i in range(nombre_lignes(image)):
        for j in range(...): 
            nouvelle_image[i][j] = ... 
    return nouvelle_image

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'''
    nouvelle_image = [[0] * nombre_colonnes(image)
                      for i in range(nombre_lignes(image))]

    for i in range(nombre_lignes(image)):
        for j in range(...): 
            if image[i][j] < ... : 
                nouvelle_image[i][j] = ... 
            else:
                nouvelle_image[i][j] = ... 
    return nouvelle_image

Exemple :

🐍 Script Python
>>> img=[[20, 34, 254, 145, 6], [23, 124, 237, 225, 69],
[197, 174, 207, 25, 87], [255, 0, 24, 197, 189]]
>>> nombre_lignes(img)
4
>>> nombre_colonnes(img)
5
>>> negatif(img)
[[235, 221, 1, 110, 249], [232, 131, 18, 30, 186],
[58, 81, 48, 230, 168], [0, 255, 231, 58, 66]]
>>> binaire(img,120)
[[0, 0, 1, 1, 0],[0, 1, 1, 1, 0],[1, 1, 1, 0, 0],[1, 0, 0, 1, 1]]

RĂ©ponse

Complétez le code ci-dessous

###
def nbLig(image):bksl-nl '''renvoie le nombre de lignes de l'image'''bksl-nl return ...bksl-nlbksl-nldef nbCol(image):bksl-nl '''renvoie la largeur de l'image'''bksl-nl return ...bksl-nlbksl-nldef negatif(image):bksl-nl '''renvoie le negatif de l'image sous la formebksl-nl d'une liste de listes'''bksl-nlbksl-nl # on cree une image de 0 aux memes dimensions que le parametre imagebksl-nl L = [[0 for k in range(nbCol(image))] for i in range(nbLig(image))]bksl-nlbksl-nl for i in range(nbLig(image)):bksl-nl for j in range(...):bksl-nl L[i][j] = ...bksl-nl return Lbksl-nlbksl-nldef binaire(image, seuil):bksl-nl '''renvoie une image binarisee de l'image sous la formebksl-nl d'une liste de listes contenant des 0 si la valeurbksl-nl du pixel est strictement inferieure au seuilbksl-nl et 1 sinon'''bksl-nlbksl-nl # on cree une image de 0 aux memes dimensions que le parametre imagebksl-nl L = [[0 for k in range(nbCol(image))] for i in range(nbLig(image))]bksl-nlbksl-nl for i in range(nbLig(image)):bksl-nl for j in range(...):bksl-nl if image[i][j] < ... :bksl-nl L[i][j] = ...bksl-nl else:bksl-nl L[i][j] = ...bksl-nl return Lbksl-nlbksl-nl



Solution

###
bksl-nldef nombrepy-undlignes(image):bksl-nl '''renvoie le nombre de lignes de l'image'''bksl-nl return len(image) bksl-nlbksl-nldef nombrepy-undcolonnes(image):bksl-nl '''renvoie la largeur de l'image'''bksl-nl return len(image[0]) bksl-nlbksl-nldef negatif(image):bksl-nl '''renvoie le negatif de l'image sous la formebksl-nl d'une liste de listes'''bksl-nl # on cree une image de 0 aux memes dimensions bksl-nl # que le parametre imagebksl-nl nouvellepy-undimage = [[0 for k in range(nombrepy-undcolonnes(image))]bksl-nl for i in range(nombrepy-undlignes(image))]bksl-nlbksl-nl for i in range(nombrepy-undlignes(image)):bksl-nl for j in range(nombrepy-undcolonnes(image)): bksl-nl nouvellepy-undimage[i][j] = 255 - image[i][j]bksl-nl return nouvellepy-undimagebksl-nlbksl-nldef binaire(image, seuil):bksl-nl '''renvoie une image binarisee de l'image sous la formebksl-nl d'une liste de listes contenant des 0 si la valeurbksl-nl du pixel est strictement inferieure au seuil et 1 sinon'''bksl-nl nouvellepy-undimage = [[0] py-str nombrepy-undcolonnes(image)bksl-nl for i in range(nombrepy-undlignes(image))]bksl-nlbksl-nl for i in range(nombrepy-undlignes(image)):bksl-nl for j in range(nombrepy-undcolonnes(image)): bksl-nl if image[i][j] < seuil : bksl-nl nouvellepy-undimage[i][j] = 0 bksl-nl else:bksl-nl nouvellepy-undimage[i][j] = 1 bksl-nl return nouvellepy-undimagebksl-nlbksl-nltry:bksl-nl img=[[20, 34, 254, 145, 6], bksl-nl [23, 124, 237, 225, 69],bksl-nl [197, 174, 207, 25, 87], bksl-nl [255, 0, 24, 197, 189]]bksl-nlbksl-nl assert nombrepy-undlignes(img) == 4bksl-nl assert nombrepy-undcolonnes(img) == 5bksl-nl assert negatif(img) == [[235, 221, 1, 110, 249],bksl-nl [232, 131, 18, 30, 186],bksl-nl [58, 81, 48, 230, 168],bksl-nl [0, 255, 231, 58, 66]]bksl-nl assert binaire(img,120) == [[0, 0, 1, 1, 0],bksl-nl [0, 1, 1, 1, 0],bksl-nl [1, 1, 1, 0, 0],bksl-nl [1, 0, 0, 1, 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-nlbksl-nlbksl-nl