Python:slice:TypeError:无法连接'str'和'int'对象

时间:2013-12-16 05:21:28

标签: python recursion

我正在尝试编写一个模块,用于搜索目标字符串中的键字符串并输出任何匹配项的起始点。我可以写一个实现这个的迭代模块,但是我试图用递归来做(我在本课中使用的教程处理递归和迭代,所以我想我应该尝试两者)并遇到麻烦。

def substringmatchrecursive(target, key):
"""returns a tuple of the starting points of matches of the key string in the target string using a recursive function"""
from string import find
position = find(target, key) #position of the match
answer=() #will be outputted 
if position == -1:
    return 'No match'
else:
    while position != 1:
        answer = answer + (position, )
        position = substringmatchrecursive(target[position+1: ], key)
return answer

加载模块并输入

substringmatchrecursive("fjdkakfjdslkfajfksja", "a")

应该给我一个长度为3的元组,而不是给我一个错误

Traceback (most recent call last):
.....
position = substringmatchrecursive(target[position+1: ], key)

TypeError: cannot concatenate 'str' and 'int' objects

我假设find()会输出一个整数,所以position+1应该有效。这是怎么回事?

1 个答案:

答案 0 :(得分:3)

根据以下代码,如果找不到密钥,则substringmatchrecursive会返回str个对象('No match')。

if position == -1:
    return 'No match'

并且str对象已分配给position

position = substringmatchrecursive(target[position+1: ], key)

使函数一致地返回一个元组。 (应该相应地调整while循环中使用的谓词,或者如果你想要递归,则while应该消失,...)。

position使用不同的名称以避免名称冲突。