Aller au contenu

La classe Chien⚓︎

On souhaite dans cet exercice créer une classe Chien ayant deux attributs :

  • un nom nom de type str,

  • un poids poids de type float.

Cette classe possède aussi différentes méthodes décrites ci-dessous (chien est un objet de type Chien) :

  • chien.donne_nom() qui renvoie la valeur de l'attribut nom ;

  • chien.donne_poids() qui renvoie la valeur de l'attribut poids ;

  • chien.machouille(jouet) qui renvoie son argument, la chaine de caractères jouet, privé de son dernier caractère ;

  • chien.aboie(nb_fois) qui renvoie la chaine 'Ouaf' * nb_fois, où nb_fois est un entier passé en argument ;

  • chien.mange(ration) qui modifie l'attribut poids en lui ajoutant la valeur de l'argument ration (de type float).

classDiagram
class Chien{
       nom : str
       poids : float
       donne_nom() str
       donne_poids() float
       machouille(jouet : str) str
       aboie(nombre : int) str
       mange(ration : float) bool
}

On ajoute les contraintes suivantes concernant la méthode mange :

  • on vérifiera que la valeur de ration est comprise entre 0 (exclu) et un dixième du poids du chien (inclus),
  • la méthode renverra True si ration satisfait ces conditions et que l'attribut poids est bien modifié, False dans le cas contraire.

Exemples

🐍 Console Python
>>> medor = Chien('Médor', 12.0)
>>> medor.donne_nom()
'Médor'
>>> medor.donne_poids()
12.0
>>> medor.machouille('bâton')
'bâto'
>>> medor.aboie(3)
'OuafOuafOuaf'
>>> medor.mange(2.0)
False
>>> medor.mange(1.0)
True
>>> medor.donne_poids()
13.0
>>> medor.mange(1.3)
True

Compléter le code de la classe Chien.

###
# Tests publicsbksl-nlmedor = Chien("Médor", 12.0)bksl-nlassert medor.donnepy-undnom() == "Médor"bksl-nlassert medor.donnepy-undpoids() == 12.0bksl-nlassert medor.machouille("bâton") == "bâto"bksl-nlassert medor.aboie(3) == "OuafOuafOuaf"bksl-nlassert medor.mange(2.0) == Falsebksl-nlassert medor.mange(1.0) == Truebksl-nlassert medor.donnepy-undpoids() == 13.0bksl-nlassert medor.mange(1.3) == Truebksl-nlbksl-nl# Tests secretsbksl-nltoutou = Chien("toutou", 10.0)bksl-nlassert toutou.donnepy-undnom() == "toutou", "Erreur sur la méthode donnepy-undnom"bksl-nltoutou.nom = "Toutou"bksl-nlassert toutou.donnepy-undnom() == "Toutou", "Attribut mal nommé"bksl-nlassert toutou.donnepy-undpoids() == 10.0, "Erreur sur la méthode donnepy-undpoids"bksl-nlprint("Tests du constructeur passés avec succès")bksl-nltoutou.poids = 11.0bksl-nlassert toutou.donnepy-undpoids() == 11.0, "Attribut mal nommé"bksl-nlassert toutou.machouille("balle") == "ball", "Erreur sur la méthode machouille"bksl-nlassert toutou.machouille("") == "", "Erreur sur la méthode machouille"bksl-nlprint("Tests de la méthode 'machouille' passés avec succès")bksl-nlassert toutou.aboie(30) == "Ouaf" py-str 30, "Erreur sur la méthode aboie"bksl-nlassert toutou.aboie(0) == "", "Erreur sur la méthode aboie"bksl-nlprint("Tests de la méthode 'aboie' passés avec succès")bksl-nlassert not toutou.mange(-1.0), "Erreur sur la méthode mange"bksl-nlassert not toutou.mange(11.0), "Erreur sur la méthode mange"bksl-nlassert not toutou.mange(0.0), "Erreur sur la méthode mange"bksl-nlassert toutou.mange(1.1), "Erreur sur la méthode mange"bksl-nlassert toutou.donnepy-undpoids() == 12.1, "Erreur sur la méthode mange"bksl-nlprint("Tests de la méthode 'mange' passés avec succès")bksl-nlbksl-nl 5/5

class Chien:bksl-nl def py-undpy-undinitpy-undpy-und(self, nom, poids):bksl-nl self.... = nombksl-nl self.... = poidsbksl-nlbksl-nl def donnepy-undnom(self):bksl-nl return self....bksl-nlbksl-nl def ...(self):bksl-nl return self....bksl-nlbksl-nl def machouille(self, jouet):bksl-nl resultat = ""bksl-nl for i in range(...):bksl-nl resultat += jouet[...]bksl-nl return ...bksl-nlbksl-nl def ...(self, ...):bksl-nl ...bksl-nlbksl-nl def ...(self, ration):bksl-nl if ...:bksl-nl ...bksl-nl return Truebksl-nl else:bksl-nl return ...bksl-nlbksl-nlbksl-nl# Testsbksl-nlmedor = Chien('Médor', 12.0)bksl-nlassert medor.donnepy-undnom() == 'Médor'bksl-nlassert medor.donnepy-undpoids() == 12.0bksl-nlassert medor.machouille('bâton') == 'bâto'bksl-nlassert medor.aboie(3) == 'OuafOuafOuaf'bksl-nlassert not medor.mange(2.0)bksl-nlassert medor.mange(1.0)bksl-nlassert medor.donnepy-undpoids() == 13.0bksl-nlassert medor.mange(1.3)bksl-nlbksl-nlNone

A

Z

Aide pour machouille

Pour la méthode machouille on pourra recopier toutes les lettres de jouet sauf la dernière en parcourant les indices à l'aide de la boucle for i in range(len(jouet) - 1):

Retour en haut de la page