Categories: Python

【Python】while文を用いたループ処理の使い方

この記事では、Pythonのwhile文の使い方について解説します。

while文は、指定された条件が真(True)である限りブロック内のコードを反復的に実行する制御構文です。イテラブルを用いてループ処理するfor文とは異なった使い方ができます。

また、その性質から無限ループとして使われることが多々あります。

それでは、while文の使い方を見ていきましょう!

while文の使い方

基本的なwhileループの構造は次のようになります。

while 条件式:
    # 反復する処理

指定した条件式が真(True)である限りブロック内の処理が反復して実行されます。条件式が偽(False)と評価されるとループは終了し、whileブロックの後のコードが実行されます。

以下のコードは、i3未満の間、ループ処理されます。

i = 0

# i が 3 未満だった場合 True
while i < 3:
    # i を出力
    print(i)
    # i をインクリメント
    i += 1

実行結果

0
1
2

上記コードでは、iという変数を 0 で初期化し、その値が3未満である限りループは続けられます。ループの中で現在のiの値を出力し、iをインクリメント(iの値を 1 増やす)します。iの値が3以上になるとi < 3の条件は偽になり、ループは終了する。

ポイント

先に条件式が評価されるため、初めから偽(False)と評価される条件だと1度もブロック内の処理が実行されないこともあります。

i = 10

# i は 3 よりも大きいので False
while i < 3:
    print(i)
    i += 1

i(10) < 3は偽(False)なので1度もwhile文ブロックが実行されませんでした。

while文の使い道

while文は、具体的な繰り返し回数が決まっておらず、特定の条件が満たされるまで操作を続ける必要があるときに使われます。

例えば、以下のコードはユーザーからの適切な入力を得るまで無限ループします。無限ループとbreakについては後述します。

while True:
    user_input = input("操作を続けますか? [はい, いいえ]: ")
    if user_input in {'はい', 'いいえ'}:
        break

実行結果

操作を続けますか? [はい, いいえ]: あ  
操作を続けますか? [はい, いいえ]: いいえ

ただし、可能な場合はfor文を使う方が推奨されています。なので、まずはfor文で実装できるか考えてみて難しそうならwhile文を使いましょう!

反復のスキップ: continue

while文のブロック内にcontinueステートメントを記述することで、continueステートメントが実行された際の反復をスキップし、次の反復をすぐに開始することができます。

以下では、i3の時にcontinueステートメントが実行され、処理をスキップしています。

i = 0

while i < 5:
    i += 1

    if i == 3:
        print('continue')
        continue
    print(i)

実行結果

1
2
continue
4
5

上記コードでは、iが 3 になった際にcontinueが実行されます。そうすることでcontinueより下に記述されているprint()は処理されずにスキップされ、次の反復が開始されます。

if文と組み合わせることで特定の条件の時のみ処理をスキップさせることができます。

ループの終了: break

while文のブロック内にbreakステートメントを記述することで、breakステートメントが実行された際にループを即座に終了させることができます。

以下では、i3になったらbreakステートメントが実行され、ループが即座に終了します。

i = 0

while i < 5:
    i += 1

    if i == 3:
        print('break')
        break
    print(i)

実行結果

1
2
break

if文と組み合わせることで特定の条件でループを終了させることができます。breakは無限ループを終了させるためによく使用されます。

ちなみに、ループがネストされている(ループの中にループがある)場合、breakは最も内側のループのみを終了させます。

無限ループ

while文の条件式に常に真(True)な値を指定すると無限ループさせることができます。

注意

無限ループは実行するとその名の通り無限にループしてしまうので、ターミナルやコマンドプロンプトから実行した場合は、Ctrl + Cで実行を中止しましょう!

以下のコードは、i1ずつ増やして、それを無限に出力し続けるだけのプログラムです。実行すると物凄いスピードで値が出力されていきます。

i = 0

while True:
    print(i)
    i += 1

途中で処理を終わらせたい場合には、breakを使います。

i = 0

while True:
    if i == 3:
        break
    print(i)
    i += 1

i3になった時にbreakが処理され、while文を終了させます。

後処理: else節

else節を定義することでwhile文の条件式が偽だった場合、else節の処理を実行してからループを終了するようにできます。

i = 0

while i < 3:
    print(i)
    i += 1
else:
    print("終了")

実行結果

0
1
2
終了

つまりは、ループが終わった直後にやっておきたい処理を定義できます。

ちなみに、break文を使ってループ処理を終了した場合、else節の処理は実行されないので注意してください。

do...while文

ほかの言語でよく使われているdo...while文はPythonには存在しません。do...while文は、条件に関わらず必ず1度は実行されるwhile文となっています。

Pythonでは、無限ループとbreakを組み合わせることで同じようなコードを実装できます。

while True:
    # なにかしらの処理
    if 条件式:
        break

例えば、以下のような感じで使います。

num = 1

while True:

    print(num)
    num += 1
    if num < 10:
        break

実行結果

1

まとめ

この記事では、Pythonのwhile文の使い方を解説しました!

ループ処理を実装しようと思った際には、まずはfor文での実装方法を考えてみて、無理そうならwhile文で実装を検討しましょう!

Linkfor文を使ってループ処理をする方法

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Dart】コンストラクタのデフォルト引数について

Dartのコンストラクタのデフォルト引数…

2週間 ago

【Unity】有料アセットを無料で手に入れる方法

この記事では、Unityの有料アセットを…

4か月 ago

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

1年 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

1年 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

1年 ago