向后写字符串

2024-06-17 01:00:21 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的简单代码。在

def reverseString(aStr):
    newStr = ''
    if len(aStr) == 0:
        return newStr
    else:
        newStr = newStr + aStr[len(aStr)-1]
        return reverseString(aStr[:len(aStr)-1])

对于'alina'(如果我在return reverseString...之前插入print newStr),输出是:newStr='a'newStr='n'newStr='i'newStr='l'newStr='a'newStr=''。我不明白。它为什么会这样?在


Tags: 代码lenreturnifdefelseprintastr
3条回答

您的函数没有工作的原因是您忘记在结尾返回newStr。每次调用函数时,newStr将被重置回''。在

有一个更简单的方法来做你正在做的事情。使用slicing

def reverseString(s):
    return s[::-1]

示例:

^{pr2}$

正如前面所说,有一种更简单的方法来实现这一点,它避免递归和它所涉及的问题:

>>> ''.join(reversed("abcd"))
'dcba'

类似的东西:

def reverseString(aStr, newStr = ''):
    if len(aStr) == 0:
        return newStr
    else:
        newStr = newStr + aStr[-1]  #-1 returns the last element from the string
        return reverseString(aStr[:-1], newStr) #slice the string up to second last char
print reverseString("foobar")     
#raboof

代码的问题是^{cd1>}在每个递归循环处重新分配给空字符串(^{{cd2>}),您必须在每次递归调用中传递^{cd1>}。

^{pr2}$

相关问题 更多 >