如何用Python脚本从文本文件导入坐标计算距离及City Block Distance
解决坐标点距离计算的Python方案
第一步:准备数据文件
首先你需要手动创建一个名为coordinates.txt的文件,按照题目要求的格式整理内容,具体如下:
A:0,0;B:3,4 C:4,7;D:2,9 E:8,2;F:0,6
(注意要把原始的逗号分隔改成冒号分隔,严格遵循<Name1>:X1,Y1;<Name2>:X2,Y2的行格式)
第二步:编写Python计算脚本
下面是针对新手友好的完整代码,我会把每一步的逻辑写清楚:
import math # 安全读取数据文件(自动关闭文件,避免资源泄漏) with open('coordinates.txt', 'r') as file: # 读取所有行并去除空行/换行符 point_pairs = [line.strip() for line in file if line.strip()] # 遍历每组点对进行计算 for pair in point_pairs: # 用分号拆分两个点的信息 point1_info, point2_info = pair.split(';') # 提取第一个点的名称和坐标 name1, coord1 = point1_info.split(':') x1, y1 = map(int, coord1.split(',')) # 提取第二个点的名称和坐标 name2, coord2 = point2_info.split(':') x2, y2 = map(int, coord2.split(',')) # 按公式计算两种距离 actual_distance = math.sqrt((x1 - x2)**2 + (y1 - y2)**2) city_block_distance = abs(x1 - x2) + abs(y1 - y2) # 按要求格式输出,实际距离保留三位小数 print(f"From {name1} ({x1}, {y1}) to {name2} ({x2}, {y2}): actual distance {actual_distance:.3f}; city block distance {city_block_distance}")
脚本逻辑说明
- 导入
math模块是为了用sqrt()计算平方根 - 用
with open读取文件是Python推荐的安全写法,不用手动关闭文件 - 逐行处理数据时,先拆分点对,再分别提取每个点的名称和坐标(把字符串转成整数才能计算)
- 严格使用题目给出的公式计算两种距离,实际距离用
.3f格式化保证三位小数的输出格式 - 最后直接打印出符合要求的结果
运行这个脚本后,你就能得到和题目示例完全一致的输出啦!
小提示(针对Excel导入需求)
如果你之后需要从Excel读取坐标数据,可以先安装pandas库(执行pip install pandas),然后用pandas.read_excel()读取数据,处理逻辑和上面的文本文件方案类似——核心都是提取坐标、代入公式计算,只是读取数据源的方式不同。先把当前的文本文件方案吃透,再尝试Excel导入会更顺手哦~
内容的提问来源于stack exchange,提问作者Arun Sehrawat
相关产品推荐
相关产品推荐

