未填充python数组

2024-05-16 15:19:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我的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巫师

编辑:脚本的要点是从用户那里获取二维图形上的坐标对,获得所有直线的距离,并给出直线组成的多边形的周长。抱歉,如果问题不清楚的话。但不管输入是什么,列表似乎仍然没有被填充


Tags: 代码fordistdistanceprintx1x2append
2条回答

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],其中ilen(x1)-2

所以你需要range(len(x1)-1)

相关问题 更多 >