Помощь! У меня есть эта программа завтра, требования состоят в том, что она должна иметь декартовы координаты X, Y верхнего угла угла и декартовых координат X, Y нижнего угла в качестве raw_input. Затем он печатает периметр, область и эти две позиции. Однако я не могу заставить raw_input работать. Я попытался преобразовать его в int, split и несколько присваиваний.Класс прямоугольника с raw_input декартовых координат?
topLeft = int(raw_input ('Please enter a coordinate==>')).split()
bottomRight= int(raw_input ('Please enter a coordinate==>')).split()
class Rectangle:
def __init__(self, topLeft, bottomRight):
self.tL = topLeft
self.bR = bottomRight
def perim(self):
return (2 * (self.tL)) + (2 * (self.bR))
def area(self):
return (self.tL) * (self.bR)
def position(self):
return (self.tL, self.bR)
def __str__(self):
return "Rectangle(%s, %s)" % (self.tL, self.bR)
r1 = (Rectangle (topLeft,bottomRight))
print r1
print "Perimeter: %s" % r1.perim()
print "Area: %s" % r1.area()
print "Position: (%s, %s,)" % r1.position()
Это моя ближайшая попытка, но я все еще получаю ошибку:
Traceback (most recent call last):
File "C:\Users\Mary\Desktop\Python Programs\Rectangle.py", line 1, in <module>
topLeft = int(raw_input ('Please enter a coordinate==>')).split()
ValueError: invalid literal for int() with base 10: '(5,10)'
Я новичок, благодарю вас за вашу помощь! Я вошел и скорректировал свои методы класса, я получил их для кого-то другого, но у вас было гораздо больше смысла. Я не понял, что мне нужно проверить целые числа внутри самого класса. Теперь он отлично работает. –
Лучший подход к работе с координатами - сделать их естественными, используя 'collections.namedtuple', которые являются слабо крошечными * классами * фабриками. если 'P' - это точечный класс namedtuple, вы можете сделать' top = P (x = xt, y = yt) 'и' top.x top.y'. Это будет выглядеть очень естественно. –