Aller au contenu

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