路径距离计算代码问题:结果始终为0,求错误原因及解决方法
代码错误分析与修正
你的代码有两个关键问题导致结果始终为0:
- 遍历逻辑完全错误:你当前是逐个遍历
path字符串里的每个字符(比如'A'、'B'、'-'这类单个字符),然后每次都判断字典的key是否等于完整的path("AB-BE"),但你的字典里根本没有这个key,自然永远不会触发累加操作。 - 注释符号使用不规范:Python的单行注释应该用
#,你用的单引号会被解释为字符串字面量,虽然不会引发报错,但不符合代码规范。
修正后的代码
正确的思路是先把路径按-分割成独立的路段,再逐个从字典中取出对应距离累加:
# 存储路段与对应距离的字典 distances = {"AB": 8, "AC": 4, "AD": 8, "AE": 11, "BC": 5, "BD": 6, "BE": 3} # 目标路径:ABE path = "AB-BE" total_distance = 0 # 将路径拆分为单个路段 segments = path.split("-") for seg in segments: # 累加每个路段的距离,用get避免路段不存在时触发KeyError total_distance += distances.get(seg, 0) print(total_distance) # 输出结果:11
关键改进说明
- 使用
split("-")将复合路径拆分为单独的路段(例如把"AB-BE"拆成["AB", "BE"]),这样就能逐个匹配字典中的key。 - 用
distances.get(seg, 0)替代直接取值distances[seg],这样如果路径中出现字典未定义的路段,程序不会崩溃,而是默认累加0(你可以根据需求修改为抛出提示信息)。
内容的提问来源于stack exchange,提问作者EvA
相关产品推荐
相关产品推荐

