2

次のコードがそのような結果を生成する理由を誰か教えてもらえますか?

def weird(s):
    print s

    for ii in range(len(s)):
        for jj in range(ii, len(s)+1):
            print ii, jj

    return

if __name__=="__main__":
   ss="acaacb"
   weird(ss)

結果:

acaacb
0 0
0 1
0 2
0 3
0 4
0 5
0 6

iiの値は0 から 5 まで繰り返す必要がありますか?

4

2 に答える 2

13

いいえ、return外側のforループ内にステートメントを配置しました。最初の繰り返しの終わりに、関数を終了します。それがreturnステートメントの機能です。現在実行しているループ構造に関係なく、関数を終了します。

ステートメントを削除するreturnと、ループは までずっと実行され続けますi = 5

于 2013-01-19T23:10:47.427 に答える
2

生のコードの貼り付けを見ると、おそらくタブとスペースが混在しているため、インデントが奇妙に見えます(空白が開始したのと同じ状態でSOに貼り付けられない場合があるため、確認するのは困難です)。各行を見て:

'\n'
'\n'
'    def weird(s):\n'
'        print s\n'
'        \n'
'        for ii in range(len(s)):\n'
'            for jj in range(ii, len(s)+1):\n'
'                print ii, jj\n'
'                \n'
'        return\n'
'\n'
'    if __name__=="__main__":\n'
'\t   ss="acaacb"\n'
'\t   weird(ss)\n'

空白の問題は、実際にはコードが思ったほどインデントされていない奇妙なエラーにつながる可能性があります。を使用してプログラムを実行することにより、この理論をテストできます。

python -tt your_program_name.py

次に、タブの代わりに 4 つのスペースを使用するように切り替えます。

于 2013-01-20T03:32:46.063 に答える