ホームページ >バックエンド開発 >Python チュートリアル >Python の for および Break ループ構造での else ステートメントの使用
通常、if 構造で else ステートメントを使用するのは当然のことですが、Python の強力な構文により、Python の for ループと while ループの構造を見てみましょう。 . else ステートメントを使用するためのヒント
Python では、while または for ループの後に else 句を置くこともできます。その機能は、for ループ内の条件が満たされない場合に、最後に else ステートメントが実行されるというものです。
for i in range(5): if i == 1: print 'in for' else: print 'in else' print 'after for-loop' # in for # in else # after for-loop
しかし、ループ中に if 条件が成立し、最終的に else ステートメントの内容が実行されることがわかりました。これはなぜでしょうか。
それでは、次のプログラムを見てみましょう:
for i in range(5): if i == 1: print 'in for' break else: print 'in else' print 'after for-loop' # in for # after for-loop
if にブレークを追加しました。これは、else が for の後に実行されるためですが、これは for ループが正常に終了した場合にのみ発生します。 else ステートメントを実行します (break によってループを終了しないでください)。ループがbreak文で中断された場合、elseは実行されません。
for/else は、C 言語と同様のフラグを追加できます。
found = False for i in range(5): if i == 1: found = True print 'in for' if not found: print 'not found' print 'after for-loop' # in for # after for-loop
for ステートメントと同様に、while ステートメント内の else 節の使用法は同じです。 elseブロックがループ内にある場合 正常終了時およびループ条件不成立時に実行されます。
条件文 if-else についてはすでによく知っていますが、Python では、走査の失敗を処理するために for-else が使用されます。
たとえば、(81, 99) の中で最大の完全二乗数を見つけて、それが見つからない場合はプロンプトを出力する、というような関数を実装したいとします。
C++ for ループを使用して実装する場合は、for ループのトラバーサルが失敗するかどうかを手動で判断する必要があります:
#include <iostream> #include<math.h> using namespace std; int main() { int i; float n; for(i=99;i>81;i--) { n=sqrt((float)i); if(n==int(n)) { cout<<i; break; } } if(i==81) //边界判断 cout<<"didn't find it!"<<endl; return 0; }
この関数は、Python の for-else を使用して簡単に実装できます:
from math import sqrt for n in range(99,81,-1): root = sqrt(n) if root == int(root): print n break else: print"Didn't find it!"
else は、for ループが完全に完了した後にのみ実行してください。途中でブレークから飛び出す場合は、else と一緒に飛び出すことになります。
特に注意が必要なのは、forにif文がある場合、elseのインデントをforに合わせる必要があり、ifに合わせるとif-else文となり、以下のような予期せぬエラーが発生することです。 :
from math import sqrt for n in range(99,81,-1): root = sqrt(n) if root == int(root): print n break else: print"Didn't find it!"
for-else を使用するとコードが 2 行節約され、読みやすくなりますが、if-else と混同されやすくなります。実際にはあまり使用されないようですが、手動で処理される可能性が高くなります。
Python の for および Break ループ構造での else ステートメントの使用に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。