おかげで、私はほとんど狂気私を運転していたプログラミングの問題で終わりだスタックオーバーフローします。それは再帰的だし、ここでは次のようになります。私が入力した場合ほぼ再帰があります。最後に一つ
def changeling(word,target,steps):
x=word
z=target
if steps==0:
return []
if x==z:
return [z]
if len(word)!=len(target):
print "error"
return None
i=1
if lookup(z[0]+x[1:]) is True and z[0]+x[1:]!=x :
word=z[0]+x[1:]
while i!=len(x):
if lookup(x[:i-1]+z[i-1]+x[i:]) and x[:i-1]+z[i-1]+x[i:]!=x:
word=x[:i-1]+z[i-1]+x[i:]
i+=1
if lookup(x[:len(x)-1]+z[len(word)-1]) and x[:len(x)-1]+z[len(x)-1]!=x :
word=x[:len(x)-1]+z[len(word)-1]
return [x]+changeling(word,target,steps-1)
:
changeling("find","lose"4)
私が受け取る:
['find', 'fine', 'line', 'lone', 'lose']
私が欲しいの正確な出力されます。プログラムの私の次のステップはこれです。特定のステップ数で目的の単語に単語を変更できない場合、関数はNoneを返します。だから私は、入力した場合:
チェンジ( "見つける"、 "負け"、3)
私は何を受け取るべきではありませんが、代わりに私が受け取る:
['find', 'fine', 'line']
私はかなりよく分かりませんどのようにこれを行うには、どのような助けをいただければ幸いです。代わりに、すぐに再帰を返す
サイドノート:不正な入力がすべきは、 'print"エラーではなく例外をトリガーします。 「なし」を返す。 –
'def'行を4つのスペースでインデントするだけでコードをフォーマットしないでください。これは間違ったPythonコードを生成します。コードをハイライト表示し、エディットボックスの上部に表示される '{}'ボタンを押します。自動的にコードをインデントします。 – senderle
ありがとう、私は気づいていませんでした。 – Unknown