递归 - 不能连接'str'和'NoneType'对象

时间:2014-11-21 02:07:30

标签: python

def main():
    string = raw_input("string:")
    pattern = raw_input("pattern:")
    end = len(string)
    recursiveinsertPattern(string,pattern)

def recursiveinsertPattern(string, pattern):
    if len(string) == 1:
        return ""
    else:
        print string[0]+pattern+recursiveinsertPattern(string[1:],pattern),

所以我需要输出

*h*e*l*l*o*

如果字符串输入为hello且模式输入为*。但是在尝试添加最后一次运行时我收到此错误:

  

TypeError:无法连接' str'和' NoneType'对象

3 个答案:

答案 0 :(得分:0)

原因是你的函数recursiveinsertPattern只返回""如果len(string) == 1,则为None

我会修改此函数,使其看起来像这样:

def recursiveinsertPattern(string, pattern):
    if len(string) == 1:
        return ""
    else:
        return string[0]+pattern+recursiveinsertPattern(string[1:],pattern)

print

main()此函数的结果

答案 1 :(得分:0)

您希望将其返回,而不是打印recursiveinsertPattern的结果。错误是因为您没有为recursiveinsertPattern返回值。你想要:

def main():
    string = raw_input("string:")
    pattern = raw_input("pattern:")
    end = len(string)
    print recursiveinsertPattern(string,pattern)

def recursiveinsertPattern(string, pattern):
    if len(string) == 1:
        return ""
    else:
        return string[0]+pattern+recursiveinsertPattern(string[1:],pattern),

答案 2 :(得分:0)

同时更改条件..而不是1将其更改为0,以便包含最后一个字符..只需复制并粘贴此代码段

def recursiveinsertPattern(string, pattern):
if len(string) == 0:
    return ""
else:
    return string[0]+pattern+recursiveinsertPattern(string[1:],pattern)