【发布时间】:2012-04-10 05:45:36
【问题描述】:
我在使用某个程序时遇到问题,该程序需要一个单词,一次更改一个字母,然后将该单词转换为目标单词。不过,请记住,根据我得到的词典,转换后的词必须是合法词。
我无法弄清楚如何使其递归。该程序对其必须执行的步骤数量有限制。
输出需要是一个列表。因此,如果函数更改的参数是
changeling("find","lose"),输出应该是:
['find','fine','line','lone','lose'].
使用我当前的代码:
def changeling(word,target,steps):
holderlist=[]
i=0
if steps<0 and word!=target:
return None
if steps!=-1:
for items in wordList:
if len(items)==len(word):
i=0
if items!=word:
for length in items:
if i==1:
if items[1]==target[1] and items[0]==word[0] and items[2:]==word[2:]:
if items==target:
print "Target Achieved"
holder.list.append(target)
holderlist.append(items)
holderlist.append(changeling(items,target,steps-1))
elif i>0 and i<len(word)-1 and i!=1:
if items[i]==target[i] and items[0:i]==word[0:i] and items[i+1:]==word[i+1:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
holderlist.append(changeling(items,target,steps-1))
elif i==0:
if items[0]==target[0] and items[1:]==word[1:]:
if items==target:
print "Target Achieved"
holderlist.append(items)
holderlist.append(changeling(items,target,steps-1))
elif i==len(word)-1:
if items[len(word)-1]==target[len(word)-1] and items[0:len(word)-1]==word[0:len(word)-1]:
if items==target:
print "Target Achieved"
holderlist.append(items)
holderlist.append(changeling(items,target,steps-1))
else:
return None
i+=1
return holderlist
我收到一个混乱的输出: ['fine', ['line', ['lone', ['lose', []]]], '喜欢', []]
我得到了我想要的答案,但我不确定如何 a) 清理它,因为列表中没有列表。和 b) 喜欢出现,因为当 find 被调用时,它给出了很好和喜欢,罚款是以目标词结尾的那个,喜欢失败,但我不知道一旦我附加了如何摆脱它它到持有人名单。
任何帮助将不胜感激。
干杯。
【问题讨论】:
-
回复您现在已删除的问题:尝试找到一个对您有用的程序(比如检索一些天气数据或新闻,或者计算您的打字速度或其他什么的程序)并对其进行编程.保持简单开始,然后添加一些东西。
标签: python list loops recursion append