Aller au contenu

Ep 10

▶ TĂ©lĂ©charger le sujet en pdf.

EXERCICE 1⚓

Écrire la fonction maxliste, prenant en paramĂštre un tableau non vide de nombres tab (de type list) et renvoyant le plus grand Ă©lĂ©ment de ce tableau.

Exemples :

🐍 Script Python
    >>> maxliste([98, 12, 104, 23, 131, 9])
    131
    >>> maxliste([-27, 24, -3, 15])
    24
RĂ©ponse

Complétez le code ci-dessous

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



Solution

###
def maxliste(tab):bksl-nl maximum = tab[0]bksl-nl for element in tab:bksl-nl if element > maximum:bksl-nl maximum = elementbksl-nl return maximumbksl-nlbksl-nl



EXERCICE 2⚓

On dispose de chaĂźnes de caractĂšres contenant uniquement des parenthĂšses ouvrantes et fermantes.

Un parenthésage est correct si :

  • le nombre de parenthĂšses ouvrantes de la chaĂźne est Ă©gal au nombre de parenthĂšses fermantes.
  • en parcourant la chaĂźne de gauche Ă  droite, le nombre de parenthĂšses dĂ©jĂ  ouvertes doit ĂȘtre, Ă  tout moment, supĂ©rieur ou Ă©gal au nombre de parenthĂšses dĂ©jĂ  fermĂ©es.

Ainsi, ((()())(())) est un parenthésage correct.

Les parenthésages ())(() et (())(() sont, eux, incorrects.

On dispose du code de la classe Pile suivant :

🐍 Script Python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    class Pile:
        """ Classe définissant une pile """
        def __init__(self):
            self.valeurs = []

        def est_vide(self):
            """Renvoie True si la pile est vide, False sinon"""
            return self.valeurs == []

        def empiler(self, c):
            """Place l’élĂ©ment c au sommet de la pile"""
            self.valeurs.append(c)

        def depiler(self):
            """Supprime l’élĂ©ment placĂ© au sommet de la pile, Ă  condition qu’elle soit non vide"""
            if self.est_vide() == False:
                self.valeurs.pop()

On souhaite programmer une fonction parenthesage qui prend en paramÚtre une chaßne de caractÚres ch formée de parenthÚses et renvoie True si la chaßne est bien parenthésée et False sinon.

Cette fonction utilise une pile et suit le principe suivant : en parcourant la chaĂźne de gauche Ă  droite, si on trouve une parenthĂšse ouvrante, on l’empile au sommet de la pile et si on trouve une parenthĂšse fermante, on dĂ©pile (si possible) la parenthĂšse ouvrante stockĂ©e au sommet de la pile.

La chaßne est alors bien parenthésée si, à la fin du parcours, la pile est vide.

Elle est, par contre, mal parenthĂ©sĂ©e : si dans le parcours, on trouve une parenthĂšse fermante, alors que la pile est vide ; ou si, Ă  la fin du parcours, la pile n’est pas vide.

Exemple :

🐍 Script Python
    >>> parenthesage("((()())(()))")
    True
    >>> parenthesage("())(()")
    False
    >>> parenthesage("(())(()")
    False

RĂ©ponse

Complétez le code ci-dessous

###
class Pile:bksl-nl """ Classe dĂ©finissant une pile """bksl-nl def py-undpy-undinitpy-undpy-und(self):bksl-nl self.valeurs = []bksl-nlbksl-nl def estpy-undvide(self):bksl-nl """Renvoie True si la pile est vide, False sinon"""bksl-nl return self.valeurs == []bksl-nlbksl-nl def empiler(self, c):bksl-nl """Place l’élĂ©ment c au sommet de la pile"""bksl-nl self.valeurs.append(c)bksl-nlbksl-nl def depiler(self):bksl-nl """Supprime l’élĂ©ment placĂ© au sommet de la pile, Ă  condition qu’elle soit non vide"""bksl-nl if self.estpy-undvide() == False:bksl-nl self.valeurs.pop()bksl-nlbksl-nldef parenthesage(ch):bksl-nl """Renvoie True si la chaĂźne ch est bien parenthĂ©sĂ©e et False sinon"""bksl-nl p = Pile()bksl-nl for c in ch:bksl-nl if c == ...:bksl-nl p.empiler(c)bksl-nl elif c == ...:bksl-nl if p.estpy-undvide():bksl-nl return ...bksl-nl else:bksl-nl ...bksl-nl return p.estpy-undvide()bksl-nlbksl-nl



Solution

###
class Pile:bksl-nl """ Classe dĂ©finissant une pile """bksl-nl def py-undpy-undinitpy-undpy-und(self):bksl-nl self.valeurs = []bksl-nlbksl-nl def estpy-undvide(self):bksl-nl """Renvoie True si la pile est vide, False sinon"""bksl-nl return self.valeurs == []bksl-nlbksl-nl def empiler(self, c):bksl-nl """Place l’élĂ©ment c au sommet de la pile"""bksl-nl self.valeurs.append(c)bksl-nlbksl-nl def depiler(self):bksl-nl """Supprime l’élĂ©ment placĂ© au sommet de la pile, Ă  condition qu’elle soit non vide"""bksl-nl if self.estpy-undvide() == False:bksl-nl self.valeurs.pop()bksl-nlbksl-nldef parenthesage(ch):bksl-nl """Renvoie True si la chaĂźne ch est bien parenthĂ©sĂ©e et False sinon"""bksl-nl p = Pile()bksl-nl for c in ch:bksl-nl if c == '(':bksl-nl p.empiler(c)bksl-nl elif c == ')':bksl-nl if p.estpy-undvide():bksl-nl return Falsebksl-nl else:bksl-nl p.depiler()bksl-nl return p.estpy-undvide()bksl-nlbksl-nl