(已修改,作者没错)广度优先搜索--算法图解--书中部分"错误"解决记录

在阅读《图解算法》第六章广度优先搜索时,遇到Python代码转换到3.x版本时出现的UnboundLocalError。通过查阅资料,了解到该错误与全局变量使用有关。经过调整,将`search_queue`放入while循环中解决了此问题,但随后又出现'SyntaxError: return outside function'错误。修正方法是确保return语句位于函数内部,最终成功运行代码。然而,发现原书作者的最终版本已解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在<图解算法>的第六章 广度优先搜索中,6.5进行算法实现时,报如下错误:

UnboundLocalError: local variable 'search_queue' referenced before assignment
 

源代码(书本是python2.x代码,转换成python3.x格式)如下:

from collections import deque

graph = {}
graph['you'] = ['alice', 'bob', 'claire']
graph['bob'] = ['anuj', 'peggy']
graph['alice'] = ['peggy']
graph['claire'] = ['thom', 'jonny']
graph['anuj'] = []
graph['peggy'] = []
graph['thom'] = []
graph['jonny'] = []


search_queue = deque()
search_queue += graph['you']

while search_queue:
    person = search_queue.popleft()
    if person_is_seller(person):
        print(person + ' is a mango seller!')
        return True
    else:
        search_queue += graph[person]
return False

def person_is_seller(name):
    return name[-1] == 'm'

按照下面这位博主所总结的第3条(先mark一下,之后在慢慢研究,感谢这位大哥):

-------------------

◆全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值