我做了一个练习,并尝试使用我在这里找到的部分代码来解决另一个人的问题,但我发现我需要一部分代码,但我不知道为什么要这样做。
我用于我的函数的完整代码是这样的:
def rreverse(s):
if s == "":
return s
else:
return rreverse(s[1:]) + s[0]
但是我只是把else当成一个语句,并没有得到我希望的结果。
def recur_reverse(x):
if x != "":
return recur_reverse(x[1:]) + x[0]
我收到 TypeError 提示“+ 不支持的操作数类型:'NoneType' 和 'str'。”
第一个示例工作正常而第二个示例抛出错误的背后逻辑是什么,区别在于这个 if 语句?为什么我的版本不正确?
谢谢!
最佳答案
第二个构造的问题在于,如果 s
是空字符串,则该函数返回不是字符串的 None
,而最终调用者 expects 一个字符串,即使是空的,所以返回 None
将使调用者代码中断(这会导致类似 Why does my function return None? 的问题)
你可以用三元表达式来编写它,以确保它返回任何 x
def recur_reverse(x):
return recur_reverse(x[1:]) + x[0] if x else ""
关于python - 为什么 rreverse 函数需要两个条件分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497333/