Pythonのif文for文while文の使い方と違い

未分類

Pythonにおける「if」「for」「while」は其々何をするものなのか

  • if :条件によって実行するコードを実行しないコードを分ける
  • for:リストや文字列などの要素を順番にひとつずつ処理する。
  • while:条件が真である間ずっと同じ処理を繰り返す

if文

条件分岐を行う構文。条件が真か偽かをチェックし真なら真のときのコードを、偽なら偽のときのコードを実行してくれる。

if condition:
    # 条件が真のとき
elif other_condition:
    # それ以外でこちらが真
else:
    # 上のどれでもないとき
いつif文を使うのか
  • 入力値や状態に応じて処理パターンを切り替えたいとき
    • 例:点数によって評価を変える、メニュー番号で処理を分岐。
  • エラー条件や例外的ケースを先に弾きたいとき。
  • 複数条件を組み合わせて「どれを優先するか」を決めたいとき。

For文

w3schoolsの定義によると…

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.

W3Schools.com
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular...

コード例

for x in iterable:
    # x を使って処理

いつFor文を使うのか

  • 「要素の個数があらかじめ決まっている/数えられる」繰り返し:
    • リストの全要素に対して処理する
    • 文字列の各文字を調べる
    • for i in range(n): で n 回ループ
  • 配列・辞書など「コレクション」を1回ずつなめる処理全般。
  • データ処理・集計・フィルタリング・マッピング処理。

ポイント:

  • 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()

要約

  • if:その場の「条件分岐」
  • for:列や回数が分かっている「繰り返し」
  • while:終了条件だけが決まっていて「何回かは分からない繰り返し」

コメント

タイトルとURLをコピーしました