【问题标题】:Getting unsupported operand type(s) error for +: 'NoneType' and 'str' while defining a recursion function在定义递归函数时出现 + 不支持的操作数类型错误:“NoneType”和“str”
【发布时间】:2017-11-04 09:37:13
【问题描述】:

所以我应该编写一个函数reverseWrd,它使用递归来反转字符串中的单个单词,例如reverseWrd("Hello it's me") 返回olleH s'ti em。我编写了以下代码,但它给出了不支持的操作数类型错误。

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

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

【问题讨论】:

    标签: python-3.x recursion typeerror nonetype


    【解决方案1】:

    分析

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

    当您了解基本情况时,i[1:] 和 i[0] 并没有您想象的那么灵活。

    修复

    相反,对您进行简单的更改if 声明:

    if len(i) <= 1:
    

    现在,你成功反转了一个单词。

    进一步的工作

    如果你要倒转整个句子,为什么要将它拆分成单词,而只倒转第一个?也许您需要一个将拆分为单词的外部函数,以及一个外部调用的内部函数。内部函数反转单个单词。

    【讨论】:

    • 但是运行 for 循环不会遍历列表中的每个单词吗?
    • for 循环会自动执行您想要的操作;你必须正确编程。您在原始帖子中写的第一个单词一写完就返回。
    猜你喜欢
    • 2014-06-15
    • 2018-07-07
    • 2023-01-04
    • 1970-01-01
    • 2017-07-11
    • 2015-09-21
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多