#1 Le 23/03/2019, à 11:29
- piter42
"RESOLU" résultat script pas tout conforme
bonjour voila ce que j ai comme résultat apres mon script,
un rectangle de 15 sur 30
a une surface de <bound method Rectangle.surface of <__main__.Rectangle object at 0x7f7b588d4e80>> et un perimetre de <bound method Rectangle.perimetre of <__main__.Rectangle object at 0x7f7b588d4e80>>
un carre de 12 sur 12
a une surface de <bound method Rectangle.surface of <__main__.Carre object at 0x7f7b588d4ef0>> et un perimetre de <bound method Rectangle.perimetre of <__main__.Carre object at 0x7f7b588d4ef0>>script:
#!/usr/bin/env python3.6
# -*- coding = utf-8 -*-
class Rectangle(object):
"classe Rectangle"
def __init__(self, longueur= 0, largeur = 0 ):
self.L = longueur
self.l = largeur
self.nom = "rectangle"
def perimetre(self):
return "({0:d} + {1:d} * 2 = {2:d})".format(self.l, self.L, (self.l + self.l*2))
def surface(self):
return "{0:d}*{1:d} = {2:d}".format(self.L * self.l, self.L * self.l)
def mesures(self):
print(f"un {self.nom} de {self.L} sur {self.l}")
print(f"a une surface de {self.surface} et un perimetre de {self.perimetre}")
class Carre(Rectangle):
"classe Carre"
def __init__(self,cote):
Rectangle.__init__(self, cote, cote)
self.nom = "carre"
if __name__ == "__main__":
r1 = Rectangle(15,30)
r1.mesures()
c1 = Carre(12)
c1.mesures()
j avait écrit les méthodes perimetre et surface (avec des f-string mais j ai tout remplacé par des . format pensant que cela venait de là mais apparemment non
merci pour vos réponses
Dernière modification par piter42 (Le 25/03/2019, à 17:40)
Hors ligne
#2 Le 23/03/2019, à 11:56
- kholo

Re : "RESOLU" résultat script pas tout conforme
salut Pit,
bon tu bosses sur l'héritage... ![]()
voyons ton problème
python est orienté objet... donc tu peux lui demander de d'envoyer les coordonnées d'un objet
... et c'est ce qu'il a fait !
donc si tu veux avoir la résolution de la fonction... self.surface()
pour les fstrings, j'ai laissé tombé... tant qu'à avoir une string autant jouer avec :
def mesures(self):
print(self.L)
print("un " + self.nom + " de " + str(self.L) + " sur " + str(self.l))![]()
PS ya d'autres erreurs dans ton code ![]()
class Rectangle(object):
"classe Rectangle"
def __init__(self, longueur=0, largeur=0):
self.L = longueur
self.l = largeur
self.nom = "rectangle"
def perimetre(self):
return (self.l + self.l) * 2
def surface(self):
return self.L * self.l
def mesures(self):
print("un " + self.nom + " de " + str(self.L) + " sur " + str(self.l))
print("a une surface de " + str(self.surface()) + " et un perimetre de " + str(self.perimetre()))
class Carre(Rectangle):
"classe Carre"
def __init__(self,cote):
Rectangle.__init__(self, cote, cote)
self.nom = "carre"
if __name__ == "__main__":
r1 = Rectangle(15,30)
r1.mesures()
c1 = Carre(12)
c1.mesures()et avec les docstrings c'est encore plusss mieux !
#!/usr/bin/env python3
# -*- coding: UTF8 -*-
"""
création d'objets rectangles et carrés
calcul et affichage du perimetre et de la surface
"""
class Rectangle(object):
"classe Rectangle"
def __init__(self, longueur=0, largeur=0):
"initialise la classe"
self.L = longueur
self.l = largeur
self.nom = "rectangle"
def perimetre(self):
"renvoie le périmètre du Rectangle"
return (self.l + self.l) * 2
def surface(self):
"renvoie la surface du Rectangle"
return self.L * self.l
def mesures(self):
"affiche les information de périmetre et de surface du Rectangle"
print("un " + self.nom + " de " + str(self.L) + " sur " + str(self.l))
print("a une surface de " + str(self.surface()) + " et un perimetre de " + str(self.perimetre()))
class Carre(Rectangle):
"classe Carre"
def __init__(self,cote):
"initialise la classe"
Rectangle.__init__(self, cote, cote)
self.nom = "carre"
if __name__ == "__main__":
r1 = Rectangle(15,30)
r1.mesures()
c1 = Carre(12)
c1.mesures()Dernière modification par kholo (Le 23/03/2019, à 12:10)
Hors ligne
#3 Le 23/03/2019, à 12:13
- pingouinux

Re : "RESOLU" résultat script pas tout conforme
Bonjour piter42,
Tu as en effet des erreurs sur 3 lignes.
Ligne n°13
return "(({0:d} + {1:d}) * 2 = {2:d})".format(self.l, self.L, (self.L + self.l)*2)Ligne n°16
return "{0:d}*{1:d} = {2:d}".format(self.L , self.l, self.L * self.l)Ligne n°20
print(f"a une surface de {self.surface()} et un perimetre de {self.perimetre()}")Édité : Ajout de parenthèses dans le format de la ligne 13
Dernière modification par pingouinux (Le 23/03/2019, à 12:24)
Hors ligne
#4 Le 23/03/2019, à 12:15
- kholo

Re : "RESOLU" résultat script pas tout conforme
... et pour aller un peu plus loin :
tu modifies
def mesures(self):
"affiche les information de périmetre et de surface du Rectangle"
retour = ""
retour += "un " + self.nom + " de " + str(self.L) + " sur " + str(self.l)
retour += " a une surface de " + str(self.surface()) + " et un perimetre de " + str(self.perimetre())
return retouret ton if main :
if __name__ == "__main__":
r1 = Rectangle(15,30)
print(r1.mesures())
c1 = Carre(12)
print(c1.mesures())... encore que mesure() n'ai rien à faire dans ta class... mais ça c'est un point de vue !
Dernière modification par kholo (Le 23/03/2019, à 12:17)
Hors ligne
#5 Le 24/03/2019, à 09:18
- piter42
Re : "RESOLU" résultat script pas tout conforme
bonjour à tout les 2 et merci pour vos réponses,j ai modifie mon script en piochant dans vos conseil et le voilà :
#!/usr/bin/env python3.6
# -*- coding = utf-8 -*-
class Rectangle(object):
"classe Rectangle"
def __init__(self, longueur= 0, largeur = 0 ):
"initialise la classe"
self.L = longueur
self.l = largeur
self.nom = "rectangle"
def perimetre(self):
"renvoi le périmetre du rectangle"
return (self.l + self.L)*2
def surface(self):
"renvoi la surface du rectangle"
return self.L * self.l
def mesures(self):
"affiche les informations de perimetre et surface du rectangle"
print(f"un {self.nom} de {self.L} sur {self.l} a une surface de {self.surface()} et un perimetre de {self.perimetre()}")
class Carre(Rectangle):
"classe Carre"
def __init__(self,cote):
"initialise la classe"
Rectangle.__init__(self, cote, cote)
self.nom = "carre"
if __name__ == "__main__":
r1 = Rectangle(15,30)
r1.mesures()
c1 = Carre(12)Dernière modification par piter42 (Le 24/03/2019, à 09:27)
Hors ligne
#6 Le 24/03/2019, à 12:49
- kholo

Re : "RESOLU" résultat script pas tout conforme
salut,
pour les arguments :
def __init__(self, longueur=0, largeur=0):est plus pythonique :
pour faire simple, pas d'espace autour du =
comme tu es sur l'héritage, super est à apprendre...
je sais l'utiliser mais pas encore assez pour l'expliquer.
la classe carré donnerait (sauf erreur):
class Carre(Rectangle):
"classe Carre"
def __init__(self,cote):
"initialise la classe"
# Rectangle.__init__(self, cote, cote)
super().__init__(cote, cote)
self.nom = "carre"Hors ligne