_2023
Ep 40
ⶠTélécharger le sujet en pdf .
EXERCICE 1
Pour cet exercice :
On appelle « mot » une chaßne de caractÚres composée avec des caractÚres choisis parmi les 26 lettres minuscules ou majuscules de l'alphabet,
On appelle « phrase » une chaßne de caractÚres :
composée avec un ou plusieurs « mots » séparés entre eux par un seul caractÚre espace ' '
,
se finissant :
soit par un point '.'
qui est alors collé au dernier mot,
soit par un point d'exclamation '!'
ou d'interrogation '?'
qui est alors séparé du dernier mot par un seul caractÚre espace ' '
.
Exemples :
'Cet exercice est simple.'
'Le point d exclamation est separe !'
AprÚs avoir remarqué le lien entre le nombre de mots et le nombres de caractÚres espace dans une phrase, programmer une fonction nombre_de_mots
qui prend en paramÚtre une phrase et renvoie le nombre de mots présents dans cette phrase.
đ Script Python >>> nombre_de_mots ( 'Le point d exclamation est separe !' )
6
>>> nombre_de_mots ( 'Il y a un seul espace entre les mots !' )
9
>>> nombre_de_mots ( 'Combien de mots y a t il dans cette phrase ?' )
10
>>> nombre_de_mots ( 'Fin.' )
1
RĂ©ponse
Complétez le code ci-dessous
# Mettre votre code icibksl-nlbksl-nl
Solution
def nombrepy-unddepy-undmots(phrase):bksl-nl nbpy-undmots = 0bksl-nl for caractere in phrase:bksl-nl if caractere == ' ' or caractere == '.':bksl-nl nbpy-undmots += 1bksl-nl return nbpy-undmotsbksl-nlbksl-nl
EXERCICE 2
La classe ABR ci-dessous permet d'implémenter une structure d'arbre binaire de recherche.
ComplĂ©ter la fonction rĂ©cursive inserer afin qu'elle permette dâinsĂ©rer un nĆud dans lâarbre binaire de recherche proposĂ©, Ă lâaide de sa clĂ©.
Voici un exemple d'utilisation :
đ Script Python >>> arbre = Noeud ( 7 )
>>> for cle in ( 3 , 9 , 1 , 6 ):
arbre . inserer ( cle )
>>> arbre . gauche . getValeur ()
3
>>> arbre . droit . getValeur ()
9
>>> arbre . gauche . gauche . getValeur ()
1
>>> arbre . gauche . droit . getValeur ()
6
RĂ©ponse
Complétez le code ci-dessous
class Noeud:bksl-nl def py-undpy-undinitpy-undpy-und(self, valeur):bksl-nl '''Méthode constructeur pour la classe Noeud.bksl-nl ParamÚtre d'entrée : valeur (str)'''bksl-nl self.valeur = valeurbksl-nl self.gauche = Nonebksl-nl self.droit = Nonebksl-nlbksl-nl def getValeur(self):bksl-nl '''Méthode accesseur pour obtenir la valeur du noeudbksl-nl Aucun paramÚtre en entrée'''bksl-nl return self.valeurbksl-nlbksl-nl def droitExiste(self):bksl-nl '''Méthode renvoyant True si l'enfant droit existebksl-nl Aucun paramÚtre en entrée'''bksl-nl return (self.droit is not None)bksl-nlbksl-nl def gaucheExiste(self):bksl-nl '''Méthode renvoyant True si l'enfant gauche existebksl-nl Aucun paramÚtre en entrée'''bksl-nl return (self.gauche is not None)bksl-nlbksl-nl def inserer(self, cle):bksl-nl '''Méthode d'insertion de clé dans un arbre binaire de recherchebksl-nl ParamÚtre d'entrée : cle (int)'''bksl-nl if cle < ...:bksl-nl # on insÚre à gauchebksl-nl if self.gaucheExiste():bksl-nl # on descend à gauche et on retente l'insertion de la clébksl-nl ...bksl-nl else:bksl-nl # on crée un fils gauchebksl-nl self.gauche = ...bksl-nl elif cle > ... :bksl-nl # on insÚre à droitebksl-nl if ... :bksl-nl # on descend à droite et on retente l'insertion de la clébksl-nl ...bksl-nl else:bksl-nl # on crée un fils droitbksl-nl ... = Noeud(cle)bksl-nlbksl-nl
Solution
class Noeud:bksl-nl def py-undpy-undinitpy-undpy-und(self, valeur):bksl-nl '''Méthode constructeur pour la classe Noeud.bksl-nl ParamÚtre d'entrée : valeur (str)'''bksl-nl self.valeur = valeurbksl-nl self.gauche = Nonebksl-nl self.droit = Nonebksl-nlbksl-nl def getValeur(self):bksl-nl '''Méthode accesseur pour obtenir la valeur du noeudbksl-nl Aucun paramÚtre en entrée'''bksl-nl return self.valeurbksl-nlbksl-nl def droitExiste(self):bksl-nl '''Méthode renvoyant True si l'enfant droit existebksl-nl Aucun paramÚtre en entrée'''bksl-nl return (self.droit is not None)bksl-nlbksl-nl def gaucheExiste(self):bksl-nl '''Méthode renvoyant True si l'enfant gauche existebksl-nl Aucun paramÚtre en entrée'''bksl-nl return (self.gauche is not None)bksl-nlbksl-nl def inserer(self, cle):bksl-nl '''Méthode d'insertion de clé dans un arbre binaire de recherchebksl-nl ParamÚtre d'entrée : cle (int)'''bksl-nl if cle < self.valeur:bksl-nl # on insÚre à gauchebksl-nl if self.gaucheExiste():bksl-nl # on descend à gauche et on retente l'insertion de la clébksl-nl self.gauche.inserer(cle)bksl-nl else:bksl-nl # on crée un fils gauchebksl-nl self.gauche = Noeud(cle)bksl-nl elif cle > self.valeur:bksl-nl # on insÚre à droitebksl-nl if self.droitExiste():bksl-nl # on descend à droite et on retente l'insertion de la clébksl-nl self.droit.inserer(cle)bksl-nl else:bksl-nl # on crée un fils droitbksl-nl self.droit = Noeud(cle)bksl-nlbksl-nl