我试着从Stepic做一些练习,几乎所有的测试都完成了,但是我
据我所知,当我们进行递归循环时,我们需要显式地设置return。
但在这种情况下,出了点问题。
这让我震惊了一周。你知道吗
initialDict = {}
def add(child, parent):
if child not in (initialDict):
initialDict.update({child: parent})
else:
initialDict[child].append(parent)
def heritage(parent, child):
if parent == child:
print('Yes')
elif child in initialDict and parent in initialDict[child]:
print('Yes')
elif child not in initialDict or parent not in initialDict[child]:
print('No')
else:
for i in range(len(initialDict[child])):
return heritage(initialDict[child][i], initialDict[child])
n = int(input())
for _ in range(n):
class_description = input().split()
class_name = class_description[0]
class_parents = class_description[2:]
add(class_name, class_parents)
q = int(input())
for _ in range(q):
question = input().split()
parent = question[0]
child = question[1]
print(heritage(parent, child))
We set:
4
A
B : A
C : A
D : B C
4
A B
B D
C D
D A
预期结果:
Yes
Yes
Yes
No
实际结果:
Yes
None
Yes
None
Yes
None
No
None
如果不指定return,则默认为None。你知道吗
有两种解决方案
1)返回字符串并打印结果:
2)或者打印函数内部,但不打印函数的结果,因为结果为“无”
本质上,问题在于:
做循环:
因为
heritage
函数包含print
,而print(print(..))
会给出一个额外的None
,因为print
实际上是None
。你知道吗相关问题 更多 >
编程相关推荐