您已经从API接收到一个序列化的JSON对象,并使用标准库的JSON库对其进行了反序列化。这个物体代表了你从一个给定的祖先到下一个祖先的遗传。假设你的名字是萨利,你的祖先是珍妮特,你的基因学目标如下:
geneology_object = {
'husband': 'Craig',
'wife': 'Janet',
'children': {
'Chris': {
'husband': 'Chris',
'wife': 'Jesse',
'children': {
'Rebecca': {
'husband': 'Doug',
'wife': 'Rebecca',
}
}
},
'Wonda': {
'husband': 'Kevin',
'wife': 'Wonda',
'children': {
'Sally': {}
}
}
}
}
写一个带有签名get\u generations\u down(geneology\u object,search\u name,generations=0)的函数,递归地搜索search\u name和长祖之间的代数。如果找不到名称,则递归函数将引发NameNotFoundError。你知道吗
假设上面的geneology对象,您的函数应该如下所示:
get_generations_down(geneology_object, 'Chris') 1
get_generations_down(geneology_object, 'Sally') 2
我的代码在这里,对“莎莉”不起作用
class NameNotFoundError(Exception):
pass
count=0
def get_generations_down(geneology_object, search_name, generations=0):
global count
for i in geneology_object:
if isinstance(geneology_object[i],dict):
if i=='children':
generations+=1
if search_name in geneology_object[i]:
count+=1
break
return
get_generations_down(geneology_object[i],search_name,generations)
elif i == search_name:
count+=1
break
elif geneology_object[i]== search_name:
count+=1
break
print(geneology_object)
if count==0:
raise NameNotFoundError
return generations
#raise NotImplementedError()
get_generations_down(geneology_object, 'Sally')
您的代码似乎不是递归解决方案。你知道吗
我是这么想的
相关问题 更多 >
编程相关推荐