Python3.7无第三方库实现列表元素相乘计算不规则多边形面积
错误原因
- 你的代码逻辑完全偏离了需求:你写的
j+1是将当前遍历到的坐标数值加1,而非取当前索引的下一个位置的元素 - 第一种写法的双重for循环是两个列表的笛卡尔积遍历,完全不符合「i位置元素和i+1位置元素相乘」的需求
- 报错的核心原因是变量实际类型和预期不符:你代码中使用的
x_vertices/y_vertices存在部分元素为列表的情况,导致+1操作被识别为列表拼接而非数值加法
正确实现
完全不需要引入第三方库,直接通过索引遍历即可实现需求:
# 你的输入数据,如果源数据存在x_vertices/y_vertices变量中,直接替换变量名即可 x_vert = [1, 2, 3, 4, 5, 1] y_vert = [3, 4, 5, 6, 7, 3] # 实际顶点数:因为末尾已补首元素,所以取长度减1 point_count = len(x_vert) - 1 # 按规则计算两个乘积列表 x_vert_mul = [x_vert[i] * y_vert[i+1] for i in range(point_count)] y_vert_mul = [y_vert[i] * x_vert[i+1] for i in range(point_count)]
运行后输出的结果和你预期完全一致:
x_vert_mul = [4, 10, 18, 28, 15] y_vert_mul = [6, 12, 20, 30, 7]
后续计算提示
如果要继续用鞋带公式计算多边形面积,直接用0.5 * abs(sum(x_vert_mul) - sum(y_vert_mul))即可得到最终结果。
内容的提问来源于stack exchange,提问作者Grinnorye
相关产品推荐
相关产品推荐

