_2023
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