0
帮助!我明天有这个程序,要求它必须具有topLeft拐角的X,Y笛卡尔坐标和bottomRight拐角的X,Y笛卡尔坐标作为raw_input。然后打印周边,区域和这两个位置。 但是我不能让raw_input工作。我曾尝试将其转换为整型,分割和多个赋值。具有笛卡尔坐标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',它们是松散的微小* class *工厂,使它们感觉自然。如果'P'是一个名为tuple class的点,则可以执行'top = P(x = xt,y = yt)'和'top.x top.y'。它看起来很自然。 –