1
我正在嘗試編寫一個模塊,用於搜索目標字符串中的鍵字符串並輸出任何匹配的起始點。我可以編寫一個迭代模塊來實現這一點,但我試圖用遞歸來實現它(我使用的教程處理本課中的遞歸和迭代,所以我想我應該嘗試這兩種)並遇到一些麻煩。Python:slice:TypeError:無法連接'str'和'int'對象
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
應該工作。這裏發生了什麼?
感謝您的迅速回復。 爲什麼我不應該在遞歸中使用while循環? 當你談到名稱衝突時,你是什麼意思?我無法看到我已將「位置」分配給兩個不同的事物。 – user3106040
@ user3106040,'position = find(target,key)'< - 'int','position = substringmatchrecursive(target [position + 1:],key)'< - 'tuple'或'string'。 – falsetru
@ user3106040,您可以使用while循環。但它會涉及不必要的重複操作。 – falsetru