Python代码中root_a返回None值的原因排查求助
问题原因与解决方法
问题根源
你的find_root函数存在返回值缺失的问题:当x != root_list[x]时,递归调用find_root(root_list[x])并更新root_list[x]后,没有将最终找到的根节点返回。这就导致函数执行到这里时默认返回None,也就是你遇到的root_a为None的情况。
修复后的代码
node, edge = list(map(int, input().split())) root_list = [x for x in range(node)] def find_root(x): print(x, 'x') if x == root_list[x]: return x root_x = find_root(root_list[x]) root_list[x] = root_x return root_x # 新增这行,返回找到的根节点 for _ in range(edge): a, b = list(map(int, input().split())) a = a - 1 b = b - 1 root_a = find_root(a) root_b = find_root(b) print(root_a, root_b, 'root') if root_a != root_b: root_list[b] = root_a print(root_list)
验证说明
当处理输入2 4(转换为索引1和3)时,修复后的find_root(1)会递归找到根节点0,更新root_list[1] = 0后返回0,此时root_a就能正确拿到根节点值,不会再出现None。
内容的提问来源于stack exchange,提问作者Fisher
相关产品推荐
相关产品推荐

