Skip to main content
 首页 » 编程设计

python之字符串反转函数的奇怪行为

2025年05月04日57开发

我正在使用递归来反转字符串。我能够使用以下代码成功反转字符串。

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)