You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试pd_map函数实现标注最近披萨店的网格地图生成

代码问题排查与修复

导致返回None的直接原因

你自定义的near_one函数,在存在唯一最近门店的分支仅写了res.index(min(res)),没有加return语句,Python中函数没有显式返回值时默认返回None,这是运行结果全为None的核心原因。

其他存在的问题

  • 逻辑顺序错误:在计算单门店距离的循环内部就判断最小值,此时还没有遍历完全部门店,判断逻辑完全不成立,需要等所有门店距离计算完成后再做判断。
  • 变量未定义:多门店距离相等的分支返回的X没有加引号,属于未定义变量,运行会直接报错。
  • 依赖未导入:使用了math.sqrt但没有提前导入math模块,运行会报错。
  • 冗余代码:开头创建map1并遍历的代码没有任何实际作用,可以直接删除。

修正后的完整代码

import math

# 系统提供的工具函数
def create_zero_matrix(n,m):
    return [[0 for i in range(m)] for j in range(n)]

def m_tight_print(m):
    for i in range(len(m)):
        line = ''
        for j in range(len(m[0])):
            line += str(m[i][j])
        print(line)

def pd_map(r,c,sites):
    def near_one(x,y,sites):
        res = []
        # 先计算所有门店到当前点的距离
        for n in range(len(sites)):
            # 比较距离可以不用开平方,直接用平方和对比速度更快,不影响结果
            dist = (x-sites[n][0])**2 + (y-sites[n][1])**2
            res.append(dist)
        min_dist = min(res)
        if res.count(min_dist) == 1:
            return res.index(min_dist)
        else:
            # 多门店距离相等时返回X,可根据需求调整填充值
            return 'X'
    map2 = []
    for i in range(r):
        row = []
        for j in range(c):
            row.append(near_one(i,j,sites))
        map2.append(row)
    return map2

内容的提问来源于stack exchange,提问作者hanrui zhang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 14:12:04