2017-06-02 62 views
1

因此,我应该编写一个函数reverseWrd,它使用递归来反转字符串中的单个单词,例如reverseWrd("Hello it's me")olleH s'ti em。我写了下面的代码,但它给了一个不受支持的操作数类型错误。在定义递归函数时获取不支持的操作数类型(s)错误:“NoneType”和“str”

def reverseWrd(sentence): 
    if i=="": 
     return i 
    else: 
     return reverseWrd(i[1:]) + i[0] 

编辑:我已经改变了我的代码,我才意识到,我不能使用循环的这个问题。但是这段代码反转了整个字符串。关于如何扭转个别单词的任何建议?

回答

0

分析

的问题是在基VS递归逻辑。基本情况处理空字符串,递归(else部分)处理长度为2或更长的字符串。

当你回到基本情况时,我[1:]和i [0]没有你想象的那么灵活。

REPAIR

相反,做一个简单的改变你if声明:

if len(i) <= 1: 

现在,您成功地扭转一个字。

下一步工作

如果你应该扭转整个句子,你为什么把它分解成字和反向只有第一个?也许你需要一个外部函数来分割成单词,还有一个外部函数可以被外部函数调用。内部函数反转一个单词。

+0

但是不会运行for循环遍历列表中的每个单词? – ColeJ

+0

没有'for'循环会自动做你想要的;你必须正确编程。一旦完成第一个单词,您在原始发布中写的那个就会返回。 – Prune

相关问题