-1
a=str(raw_input('Enter the word \n'))
def back_word(m):
    b=len(m)
    d=b-1
    print m[d]
    if d>0:
        back_word(m)
        d-1
    else:
        break


print back_word(a)

私の目的は、文字列を取得し、文字を各行に 1 つずつ逆方向に出力することです。break outside loop エラーが発生しています。誰でも私のコードを修正して、エラーの理由を教えてもらえますか?

4

3 に答える 3

5

あなたはそのbreak発言を誤解しています。

breakループから抜け出すために使用されます: ループかwhileループかfor

関数から抜け出したい場合は、 を使用してreturnください。の略ですreturn None。関数が何かを返すと、関数は壊れます。

if d > 0:
    back_word(m)
    d - 1
else:
    return

また、何もすることを期待d - 1しないでください:p。から 1 を削除するにはd、 を使用しますd -= 1。これは と同等d = d - 1です。

そしてraw_input()、すでに文字列を返すので、そうするstr(raw_input(...必要はありません:)。

最後に、関数を再帰的に呼び出すときに文字列をスライスするのを忘れていました。これを行わないと、次のようになりますRuntimeError

if d > 0:
    back_word(m[:-1])
    d -= 1
else:
    return
于 2013-06-30T06:03:05.100 に答える
2

breakループを早期に終了するために使用されます。return関数を早期に終了するために使用されます。あなたが取り組んでいる関数はある意味でループ (再帰) ですが、breakステートメントはこのコンテキストでは機能しません。あなたはこれを必要とします:

if d>0:
    back_word(m)
    d-1
else:
    return
于 2013-06-30T06:03:32.597 に答える
1

break コマンドを誤解していると思います。ループを早期に終了するために使用されます。これを試して:

if d>0:
  back_word(m)
  d-1

else:
  return

幸運を!

于 2013-06-30T06:13:31.897 に答える