python-循环中的上一个和下一个元素
作者:互联网
我有这样的要点清单:
a = [(2,4),(34,53),(34,2),(84,64)]
这些点以顺时针顺序列出,并形成一个多边形.我需要找到多边形的周长,这是相邻点之间距离的总和.我将不得不使用距离公式来查找距离,因此它必须是(2,4)与(34,53)之间的距离,然后是(34,53)与(34,2)之间的距离等等.
我将如何编写此for循环,该循环使用距离公式来使用第一个元素和第二个元素的点,然后移动到第二个和第三个元素等等,最后在最后一个元素时使用它在最后一个元素和第一个元素上使用距离公式.有点像自动换行?
解决方法:
定义多边形周边功能
import math
def poly_peri():
a = [(2,4),(34,53),(34,2),(84,64)]
# Intializing perimeter to be 0
perimeter = 0
# MAIN LOOP
#[len(a) - 1] because we dont want to continue after the last number
for i in range(len(a) - 1):
distance = ((a[i + 1][0] - a[i][0])**2 + (a[i+1][1] - a[i][1])**2)
perimeter += math.sqrt(distance)
return perimeter
您也可以将多边形的点列表用作函数poly_peri(a)的参数.意思是,当您调用函数poly_peri()时,您将其称为poly_peri([(2,4),(34,53),(34,2),(84,64)]).不管您把什么作为参数,这都会输出相同的结果.代码看起来像
import math
def poly_peri(a):
points = a
# Intializing perimeter to be 0
perimeter = 0
# MAIN LOOP
#[len(points) - 1] because we dont want to continue after the last number
a.append(a[0])
for i in range(len(points) - 1):
distance = ((points[i + 1][0] - points[i][0])**2 + (points[i+1][1] - points[i][1])**2)
perimeter += math.sqrt(distance)
return perimeter
标签:python-3-x,list,for-loop,python 来源: https://codeday.me/bug/20191119/2035574.html