我想通过输入它的坐标来计算任何多边形的面积,我根据图像中的公式制作了计算面积的函数,当我运行程序时,面积的值是错误的。
第 1 点:
n=int(input("Ingrese el número de lados del polígono:"))
x=[]
y=[]
vértices=[]
for i in range(n):
coordenada_x=int(input("Ingrese el valor de la coordenada x"+str(i)+":"))
coordenada_y=int(input("Ingrese el valor de la coordenada y"+str(i)+":"))
x.append(coordenada_x)
y.append(coordenada_y)
vértices.append(coordenada_x,coordenada_y)
x.append(x[0])
y.append(y[0])
第 2 点:
from entrada import n
from entrada import x,y
for i in range(n):
Suma=(x[i]*(y[i+1]-y[i-1]))
Área_Polígono=(1/2)*abs(Suma)
print("Área del polígono=:",Área_Polígono,"U^2")
运行程序时:
Ingrese el número de lados del polígono:3
Ingrese el valor de la coordenada x0:0
Ingrese el valor de la coordenada y0:0
Ingrese el valor de la coordenada x1:1
Ingrese el valor de la coordenada y1:0
Ingrese el valor de la coordenada x2:1
Ingrese el valor de la coordenada y2:1
Coordenadas_x=[0,1,1,0]
Coordenadas_y=[0,0,1,0]
Vértices=[(0,0),(1,0),(1,1)]
该区域发生错误,因为出现以下情况:
Área del polígono=0.0 U^2
当这种情况下的面积应该是 0.5 U^2
您有以下问题:
这样做是使用文字创建一个新列表:
它包含作为第一个元素添加的最后一个坐标
for
:第二个是第一个坐标(列表的索引 0):
并且该新列表将其作为新项目添加到您已经拥有的列表的末尾,在您的情况下:
实际上,您不需要做很多事情就复杂化了,您只需要这样做:
该列表假定至少有一个元素,实际上它必须至少有 3 由多边形定义本身,您可以考虑在用户输入的情况下进行验证
n < 3
。要通过对每个坐标的对分组进行迭代,x您y可以:
最好使用内置
zip
:for in
++enumerate
索引:for
使用y进行索引range
(效率最低且 Pythonic):或者,如果您想要一个包含每个顶点坐标对的新列表:
或直接在中生成列表
for
:在这两种情况下,它都会迭代相同的: