计算任何三角形的周长[python 3]

时间:2016-05-30 11:01:03

标签: python python-3.x

我正在关注python的在线课程,并坚持这项活动:

  

假设已经定义了distance2D(x1,y1,x2,y2)。使用它,定义一个函数trianglePerimeter(xA,yA,xB,yB,xC,yC),它计算三角的周长,其三个点是(xA,yA),(xB,yB)和(xC,yC)。 / p>

现在distance2D是计算两点之间距离的函数:

  

假设已经定义了斜边(a,b)。使用它,定义一个函数distance2D(x1,y1,x2,y2),它计算点(x1,y1)和点(x2,y2)之间的距离。

斜边只是计算直角三角形的斜边。该网站要求我使用distance2D函数来定义trainglePerimeter函数。

以下是我的代码。

def trianglePerimeter(xA,yA,xB,yB,xC,yC):
    a = distance2D(xA,yA,xB,yB)
    b=distance2D(xB,yB,xC,yC)
    return a+b

除此之外,我尝试改变代码,似乎没有任何效果。有人帮助我!

我收到错误消息:

  

在运行代码之前:我们定义了一个函数distance2D。   程序执行时没有崩溃。   平地机说:   运行trianglePerimeter(0,0,0,3,4,0)...错误:trianglePerimeter(0,0,0,3,4,0)的值为10.0,预期值为12.0

4 个答案:

答案 0 :(得分:1)

输入三角形的边长为3,4和5.多边形的周长等于其边长的总和。对于这个三角形,那将是3 + 4 + 5或12.然而,你将两个边长相乘,然后从该产品中减去其中一个边长,为3 * 5-5或10.我做不知道你为什么这样做。只需获取每一侧的长度,然后将它们全部添加:

def trianglePerimeter(xA,yA,xB,yB,xC,yC):
    a = distance2D(xA, yA, xB, yB)
    b = distance2D(xB, yB, xC, yC)
    c = distance2D(xC, yC, xA, yA)
    return a+b+c

答案 1 :(得分:1)

见这个

import math
def distance2D(xA,yA,xB,yB):
    return math.sqrt((xA-xB)*(xA-xB)+(yA-yB)*(yA-yB))

def trianglePerimeter(xA,yA,xB,yB,xC,yC):
    return distance2D(xA,yA,xB,yB)+distance2D(xA,yA,xC,yC)+distance2D(xC,yC,xB,yB)

print trianglePerimeter(1,5,6,2,7,6)
16.0368200508

答案 2 :(得分:1)

我的代码最终是这样的:

a = 0
b = []
triangle = {
'v1': [input('Write the coordinates for the first vector: ') for x in range(2)],
'v2': [input('Write the coordinates for the second vector: ') for x in range(2)],
'v3': [input('Write the coordinates for the third vector: ') for x in range(2)]
}
for z, y in triangle.items():
    for x in y:
        a = int(x)**2 + a
    b.append(a**(1/2))
    a = 0

print(sum(b))

首先我给出了 a = 0 和 b = [] 以便我可以使用它们来添加向量长度。然后我创建了一个列表字典,每个列表包含一个二维向量。然后我使用 for 遍历每个列表,另一个 for 遍历列表中的每个值。然后我继续进行数学运算,并将值附加到另一个列表中 - b。 在查看 dict 中的所有列表后,我的代码打印了所有 b 列表值的总和。

请随时提出任何问题。

答案 3 :(得分:0)

要计算周长,请添加三边的距离。你的等式肯定不是那样做的。

def perimeter(xA,yA,xB,yB,xC,yC):
    len_a = distance2D(xA,yA,xB,yB)
    len_b = distance2D(xB,yB,xC,yC)
    len_c = distance2D(xC,yC,xA,yA)
    return len_a + len_b + len_c

对于给定方,您将正确地得到12的答案。