我正在为我的Python类做一个赋值,我非常接近完成它,但是有一个恼人的问题我似乎无法解决,但是在我解释之前,这里是我的代码:
import math as m
def distance(x1,y1,x2,y2):
xdel=(x2-x1)**2
ydel=(y2-y1)**2
print(xdel, "is xdel")
print(ydel, "is ydel")
dist = m.sqrt(xdel+ydel)
return dist
xl = []
yl = []
dists = []
while True:
ux = input("X for coordinate (blank for exit): ")
if ux == "":
break
ux = int(ux)
uy = int(input("Y for coordinate: "))
xl.append(ux)
yl.append(uy)
for i in range(len(xl)-2):
x2 = xl[i+1]
y2 = yl[i+1]
dist = distance(xl[i],yl[i],x2,y2)
dists.append(float(dist))
perimeter = sum(dists)
print(perimeter)
我的列表dists
没有被for循环中的最后一行代码追加,我不知道为什么。我觉得我已经用尽了我的新生代码技巧来解决这个问题,所以我转向你,哦,崇高的StackOverflow巫师
编辑:脚本的要点是从用户那里获取二维图形上的坐标对,获得所有直线的距离,并给出直线组成的多边形的周长。抱歉,如果问题不清楚的话。但不管输入是什么,列表似乎仍然没有被填充
range(x)
给出从0到x-1假设您的列表中有10个元素,您需要的是使
for
循环的i
从0到8,并为每个循环计算点i和i+1之间的距离因此应该是
for i in range(len(xl) -1):
range(end)
在[0,end]中迭代,不包括end在本例中,您希望最后一轮循环具有
x1[i]
和x2=x1[len(x)-1]
,其中i
是len(x1)-2
所以你需要
range(len(x1)-1)
相关问题 更多 >
编程相关推荐