我正在使用递归来反转字符串。我能够使用以下代码成功反转字符串。
def rev(string):
if len(string)==0:
return string
if len(string)==1:
return string
else:
s=string
string = s[-1]+rev(s[:-1])
return string
但是当我用 print 替换 return 时,它只打印 answer 的前两个字符,然后抛出一个错误
"TypeError: cannot concatenate 'str' and 'NoneType' objects"
例子。当给“StackOverflow”函数并返回一个值时,它会正确返回“wolfrevOkcatS” 但是当我试图在函数本身中打印答案时,它只打印“tS”给出上面的错误。
请您参考如下方法:
我怀疑你做了这样的事情:
def rev(string):
if len(string)==0:
print string
if len(string)==1:
print string
else:
s=string
string = s[-1]+rev(s[:-1])
print string
让我们直奔问题。假设您要反转的字符串是 abc。在第一次调用中,您将点击 else 子句并尝试评估:
'c' + rev('ab')
现在的问题是您的函数没有返回语句,rev('ab') 返回 None。当您尝试将字符串与 None 连接时,python 会引发错误。
与返回语句。 rev('ab') 返回 'ba',加号可用于连接 'c' 和 'ba'。
顺便说一句,如果您曾经尝试在生产代码中解决这个问题,您应该使用内置工具。
reversed_str = myStr[::-1]
reversed_str_iterator = reversed(myStr)
