把一些很好的定位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)它不工作 –