# Scientific Computing with Python Projects - Polygon Area Calculator | Calculo de area de poligonos

**URL:** <https://forum.freecodecamp.org/t/scientific-computing-with-python-projects-polygon-area-calculator-calculo-de-area-de-poligonos/434086>\
**Category:** General\
**Created:** [December 6, 2020, 9:22pm UTC](https://forum.freecodecamp.org/t/scientific-computing-with-python-projects-polygon-area-calculator-calculo-de-area-de-poligonos/434086 "2020-12-06T21:22:52Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![lucasuait](https://avatars.discourse-cdn.com/v4/letter/l/9de0a6/32.png) [@lucasuait](https://forum.freecodecamp.org/u/lucasuait)\
**Post date:** [December 6, 2020, 9:22pm UTC](https://forum.freecodecamp.org/t/scientific-computing-with-python-projects-polygon-area-calculator-calculo-de-area-de-poligonos/434086/1 "2020-12-06T21:22:52Z")

</div>

Hola, dejo mi ejercicio de python Polygon Area Calculator, que creen que se podria mejorar?

Hello, I leave my Python Polygon Area Calculator exercise, what do you think could be improved?

```auto
class Rectangle:
    ###
    def __init__ (self, width, height): #Este metodo va a definir lado y alto del rectangulo
        self.width = width
        self.height = height
    ###
    def set_width(self, width): #Este metodo te permite cambiar el lado luego de asignarlo
        self.width = width
    ###
    def set_height(self, height): #Este metodo te permite cambiar el alto luego de asignarlo
        self.height = height
    ###
    def get_area(self): #Este metodo te permite ver el valor de el area
        a = self.height * self.width
        return a
    ###
    def get_perimeter(self): #Este metodo te permite ver el valor de el perimetro
        p = 2*self.height + 2*self.width
        return p
    ###
    def get_diagonal(self): #Este metodo te permite ver el valor de la diagonal
        d = ((self.width **2 + self.height** 2) **.5)
        return d
    ###
    def get_picture(self): #Este metodo te permite ver rectangulo dibujado con *
        if self.height > 50 or self.width > 50:
            pic = "Too big for picture."
        else:
            pic = ""
            while self.height >= 1:
                pic += ("*" * self.width) + "\n" #aca podes cambiar el dibujo que lo representa
                self.height -= 1
        return pic
    ###
    def get_amount_inside(self, Rectangle): #Este metodo te permite saber cuantas veces entra un cuadrado en otro
        return int(self.get_area()) // int(Rectangle.get_area()) 
    ###
    def __str__ (self): #Este metodo permite definir como se va a ver el string de la lase
        return "Rectangle(width=" + str(self.width) + ", height=" + str(self.height) + ")"
    ###

class Square(Rectangle):
    ###
    def __init__ (self, side): #Copia el metodo inicial del rectangulo pero con 1 solo valor y reemplaza altura y ancho.
        self.side = side
        self.height = self.side
        self.width = self.side
    ###
    def set_side(self, side): #Este metodo te permite cambiar ancho/alto del cuadrado luego de definirlo
        self.side = side
    ###
    def set_height(self, height): #Este metodo hace que cuando se cambie la altura, cambie tambien el ancho
        super().set_height(height)
        self.side = self.height
    ###
    def set_width(self,width): #Este metodo hace que cuando se cambie el ancho, cambie tambien la altura
        super().set_width(width)
        self.side = self.width
    ###
    def get_picture(self): #Este metodo permite ver el dibujo del cuadrado con *
        if self.side > 50:
            pic = "Too big for picture."
        else:
            pic = ""
            side = self.side
            while self.side >= 1:
                pic += ("*" * side) + "\n" #Igual que con el rectangulo, acá podes cambiar el dibujo
                self.side -= 1
        return pic
    ###
    def __str__ (self): 
        return "Square(side="+ str(self.side) +")" #Como se va a ver el string del cuadrado

```

Y dejo el link acá / I left the link here :[code in repl.it](https://repl.it/@lucasuait/boilerplate-polygon-area-calculator#shape_calculator.py)

---

<div class="post-metadata">

**Author:** ![lucasuait](https://avatars.discourse-cdn.com/v4/letter/l/9de0a6/32.png) [@lucasuait](https://forum.freecodecamp.org/u/lucasuait)\
**Post date:** [December 9, 2020, 12:22am UTC](https://forum.freecodecamp.org/t/scientific-computing-with-python-projects-polygon-area-calculator-calculo-de-area-de-poligonos/434086/3 "2020-12-09T00:22:47Z")

</div>

u can use this: [https://translate.google.com](https://translate.google.com) or go to another post 😉

---

<div class="post-metadata">

**Author:** ![Bocanada](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/bocanada/32/194624_2.png) [@Bocanada](https://forum.freecodecamp.org/u/Bocanada)\
**Post date:** [December 20, 2020, 4:48am UTC](https://forum.freecodecamp.org/t/scientific-computing-with-python-projects-polygon-area-calculator-calculo-de-area-de-poligonos/434086/5 "2020-12-20T04:48:11Z")

</div>

Hola. Recuerda que Square hereda todos los métodos de Rectangle. No es necesario que repitas los métodos en Square porque ya los hereda de Rectangle.  
Por ejemplo, podrías reemplazar **init** de Square por:

```auto
def __init__ (self, side):
    super(). __init__ (side, side) # llama a __init__ de Rectangle y setea width = side, height = side.

```

Lo mismo con set\_side:

```auto
def set_side(self, side):
   # aca podes cambiar super() por self, ya que Square hereda set_height y set_width de Rectangle.
   super().set_height(side)
   super().set_width(side)

```

Básicamente, Square sólo debería tener **init** , **str** y set\_side, ya que todo lo demás es reutilizable. ^^

---

<div class="post-metadata">

**Author:** ![ILM](https://sea3.discourse-cdn.com/freecodecamp/user_avatar/forum.freecodecamp.org/ilm/32/363239_2.png) [@ILM](https://forum.freecodecamp.org/u/ILM)\
**Post date:** [June 1, 2021, 6:34pm UTC](https://forum.freecodecamp.org/t/scientific-computing-with-python-projects-polygon-area-calculator-calculo-de-area-de-poligonos/434086/6 "2021-06-01T18:34:22Z")

</div>


