1

I'm suppose to find the perimeter of a triangle using a class and a main() function. I just need to somehow make the inputs equal the parameters in the class. I'm not sure how to do this.

Here is the code so far:

class Triangle:
    def __init__(self):
        self.__side1 = 1.0
        self.__side2 = 1.0
        self.__side3 = 1.0
    def getPerimeter(self):
        return self.__side1+self.__side2+self.__side3
    def __str__(self):
        return "side1 : "+str(self.__side1)+" side2 : "+str(self.__side2)+" side3 : "+str(self.__side3)  

def main():
    side1 = input("Enter first side: ")
    side2 = input("Enter second side: ")
    side3 = input("Enter third side: ")
    t1 = Triangle()
    print("The Perimeter of Triangle : ",t1.getPerimeter())
    print(t1)

main()

So basically how do I make the perimeter equal the inputs.

self.__side1 = side1
self.__side2 = side2
self.__side3 = side3

For example lets say I input

side1 = 4
side2 = 5
side3 = 2

Then the perimeter should be 11

2
  • Notice your input asks for the first side three times. Commented Apr 4, 2013 at 12:34
  • @William xD Thank you I'll change it. Commented Apr 4, 2013 at 12:37

2 Answers 2

2

Like this:

class Triangle:
    def __init__(self, a, b, c):
        self.__side1 = a
        self.__side2 = b
        self.__side3 = c

    def getPerimeter(self):
        return self.__side1 + self.__side2 + self.__side3

    def __str__(self):
        return "side1 : " + str(self.__side1) + " side2 : " + str(self.__side2) + " side3 : " + str(self.__side3)  

def main():
    side1 = input("Enter first side: ")
    side2 = input("Enter second side: ")
    side3 = input("Enter third side: ")
    t1 = Triangle(int(side1), int(side2), int(side3))
    print("The Perimeter of Triangle : ", t1.getPerimeter())
    print(t1)

main()

Note that you have to convert the inputs to integers, or you'll get '4' + '5' + '2' = '452':

t1 = Triangle(int(side1), int(side2), int(side3))

 

PS: The __str__ method can be simplified by using string formatting:

return "side1: {} side2: {} side3: {}".format(self.__side1, self.__side2, self.__side3) 

And further if you didn't use name-mangled quasi-private attributes:

class Triangle:
    def __init__(self, a, b, c):
        self.side1 = a
        self.side2 = b
        self.side3 = c

    def getPerimeter(self):
        return self.side1 + self.side2 + self.side3

    def __str__(self):
        return "side1: {0.side1} side2: {0.side2} side3: {0.side3}".format(self) 
Sign up to request clarification or add additional context in comments.

Comments

0
def __init__(self, side1, side2, side3):
    self.side1 = side1
    self.side2 = side2
    self.side3 = side3

Then it's called like this:

t = Triangle(3, 4, 5)  # send in the side lengths

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.