把一些很好的定位print
調試語句,我們可以看到,你的問題是不是與checkIfitsLongest
功能或suffixString
變量的作用域。
t = {"asds":"asds","asas":"asas"}
def checkIfitsLongest(str1):
print "checking", str1
for i in range(1, len(str1)-1):
suffixString = str1[i+1:-1]
print "suffix", suffixString
if t.has_key(suffixString):
break
checkIfitsLongest(suffixString)
現在在解釋器中運行:
>>> checkIfitsLongest("asdf")
checking asdf
suffix d
suffix
checking
Traceback (most recent call last):
File "<pyshell#5>", line 1, in <module>
checkIfitsLongest("asdf")
File "C:/Users/me/Desktop/cccc.py", line 10, in checkIfitsLongest
checkIfitsLongest(suffixString)
File "C:/Users/me/Desktop/cccc.py", line 10, in checkIfitsLongest
checkIfitsLongest(suffixString)
UnboundLocalError: local variable 'suffixString' referenced before assignment
>>>
所以我們可以看到,suffixString
被正確地傳遞下去。但是,當您將一個空字符串傳遞給函數時(從不輸入for
循環),它永遠不會被初始化。
您需要考慮如何檢查遞歸基礎案例。通常你在你的函數開始時這樣做。
這不太清楚,請嘗試更好地解釋你正在嘗試做什麼。 – Julien
是的,我們不明白...輸入給定,輸出想要的。明確目的 – Destrif
休息後我想調用checkIfitsLongest(suffixString)它不工作 –