A for loop is used for iterating over a sequence (that is either a list, a tuple, a dictionary, a set, or a string).
This is less like the for keyword in other programming languages, and works more like an iterator method as found in other object-orientated programming languages.
With the for loop we can execute a set of statements, once for each item in a list, tuple, set etc.
C系の for (i = 0; i < n; i++) よりも「何を列挙するか」に注目した構文になっている。([w3schools.com][3])
「決まった個数ぶん回したい・シーケンスを全部処理したい」なら基本は for。
While文
条件が真である間、ブロックを繰り返し実行する。条件が偽になるか break するまで続く。
コード例
while condition:
# condition が真の間くり返す
いつ使うのか
「何回繰り返すか事前には決めづらい」処理:
ユーザ入力を「正しい値が入るまで」繰り返す。
ある値が条件を満たすまで計算を続ける数値計算。
ネットワーク・ファイルの読み取りなど、終了条件が外部要因に依存する処理。
補足:for が「列を最後までなめる」のに対し、while は「条件を満たす限り続ける」。Pythonでは for が強力なので、単なる回数ループは for、条件駆動のループだけ while にすると整理しやすい。
其々どう使い分ければいいのか
if を使うべきとき
条件によって処理のパス自体を変えたいとき。
何かを「する/しない」を決める。
レンジチェック・分岐・例外ケースの処理。
for を使うべきとき
コレクションやレンジを「1要素ずつ」処理したいとき。
for item in items:
for i in range(n):
ループ回数が明確、または「列の長さ」で自然に決まるとき。
データ構造の走査や集計。
while を使うべきとき
ループ回数ではなく条件で終了を決めたいとき。
「ユーザが ‘q’ を押すまで続ける」
「誤入力なら再入力させる」
「値が収束するまで繰り返す」
for では表しづらい「無限ループ+内部で break」パターン。
具体例
# if: 条件によって処理を分ける
if score >= 60:
print("pass")
else:
print("fail")
# for: 決まった個数 / シーケンスを回す
for x in [1, 2, 3]:
print(x)
for i in range(10): # 10回
print(i)
# while: 条件が成り立つ間だけ続ける
while not is_ok():
print("try again")
ask_user_input()
コメント