Python递归函数simulate_tournament返回None,无法赋值给变量问题
问题原因及修复方案
核心问题
你的simulate_tournament函数在else分支的递归调用未返回结果。
当队伍数量大于1时,你执行了递归调用simulate_tournament(winners),但没有将这个调用的返回值传递出去。Python中,函数如果没有显式执行return语句,会默认返回None,这就是你打印结果为None的原因。
修复代码
修改else分支,添加return关键字返回递归结果:
def simulate_tournament(teams): """Simulate a tournament. Return name of winning team.""" if len(teams) == 1: winner = teams[0] # 直接通过键取值更直观 return winner["name"] else: winners = simulate_round(teams) # 添加return,将递归结果返回 return simulate_tournament(winners)
额外优化
原代码中通过list(winner.values())[0]获取队伍名称的方式不够直观,建议直接使用字典的键"name"取值,这样代码可读性更强,也避免了潜在的键顺序问题(尽管Python 3.7+字典是有序的)。
内容的提问来源于stack exchange,提问作者user18930222
相关产品推荐
相关产品推荐

