这些是我给出的指示:
创建一个Point类,它由一个有序对(x,y)组成,表示x和y轴上的点的位置。构造函数允许传入x和y值,并且默认缺失值为0.必须覆盖 str 方法才能正常打印点(即“(2,5)”)
此外,创建一个由一对Point对象p和q组成的Line类。可以用两种方式之一实例化一行,如下所示。
somePoint = Point(2, 3)
anotherPoint = Point(4, 8)
someLine = Line(somePoint, anotherPoint)
...或
someLine = Line()
在第二种情况下,构造函数应将两个点初始化为原点(0, 0)
。您必须覆盖__str__
方法才能打印该行,如下所示:(2, 5)--(4, 7)
。您的类还必须提供返回的长度方法
段的长度。
import final
somePoint = final.Point(4, 5)
anotherPoint = final.Point(5, 7)
someList = final.Line(somePoint, anotherPoint)
distance = final.Line.distance(someList)
import math
class Point():
def __init__(self, x, y):
self.xy = [x, y]
self.printer = ("(" + str(x) + "," + str(y) + ")")
def __str__(self):
return str(self.printer)
class Line():
def __init__(self, p, q):
self.coor = [p, q]
self.pq = (str(p) + "--" + str(q)) #<--------- From here down is where I'm having trouble.
def distance(self):
self.x1 = self.coor[0][0]
self.x2 = self.coor[1][0]
self.y1 = self.coor[0][1]
self.y2 = self.coor[1][1]
self.xdiff = math.fabs(int(self.x1) - int(self.x2))
self.ydiff = math.fabs(int(self.y1) - int(self.y2))
self.xsq = (self.xdiff ** 2)
self.ysq = (self.ydiff ** 2)
self.distance = float(math.sqrt(self.xsq + self.ysq))
def __str__(self):
return str(self.pq) + "the distance of that line is " + str(self.distance)
答案 0 :(得分:0)
有几件事:
1。)distance
函数有错误。前四行应该是:
self.x1 = self.coor[0].xy[0]
self.x2 = self.coor[1].xy[0]
self.y1 = self.coor[0].xy[1]
self.y2 = self.coor[1].xy[1]
2.)distance
函数不返回任何内容,因此主文件中的distance
变量的值为None
。在函数中添加一个return语句。
3.。)您应该修复Line
的字符串表示。
4.。)要求规定Point
和Line
的参数应该是可选的。通过赋予它们默认值使它们成为可选项。
答案 1 :(得分:0)
如果必须在坐标(0,0)中初始化Point类,则构造函数必须为:
class Point():
def __init__(self, x=0, y=0):
self.xy = [x, y]
self.printer = ("(" + str(x) + "," + str(y) + ")")
# ...
之后,Line类的构造函数必须在构造函数中获得两个Point实例,并且默认情况下,类似于前面的类定义,您必须具有类似
的内容class Line():
def __init__(self, p=Point(), q=Point()):
self.x1 = p.xy[0]
self.y1 = p.xy[1]
self.x2 = q.xy[0]
self.y2 = q.xy[1]
def distance(self):
return math.sqrt((self.x1-self.x2)**2 + (self.y1 - self.y2)**2)
str 覆盖方法的定义很糟糕。如果你想要问题,请使用
def __str__(self):
return str('(' + str(self.x1) + ', ' + str(self.x2) + ')--(' + str(self.x2) + ', ' + str(self.y2) + ')')