【必見】Pythonのwhile文の使い方と注意点を丁寧に解説!効率的なプログラムを作ろう

はじめに

Pythonにおける制御構文とは、プログラムの実行順序を制御するための構文です。while文もそのうちの一つで、特定の条件が成立する間、あるいは成立するまで、繰り返し処理を行うためのものです。

while文の基本的な使い方

while文は以下のような構文を持ちます。

while 条件式:
    # 条件式がTrueの場合に実行したい処理

例えば、1から10までの整数を順番に表示するプログラムをwhile文で実装すると、以下のようになります。

i = 1
while i <= 10:
    print(i)
    i += 1

このプログラムでは、iが10以下の場合には繰り返し処理を行い、iを1ずつ増加させながら、iを表示します。最終的に、iが11になった時点で条件式がFalseになり、while文が終了します。

for文との違い

while文とfor文は、どちらも繰り返し処理を行う制御構文ですが、その使い方や適用範囲に違いがあります。

  • while文は、ある条件が成立する限り繰り返し処理を行う。
  • for文は、ある範囲内の要素を順番に取り出しながら繰り返し処理を行う。

例えば、リストの要素を順番に表示するプログラムは、for文で以下のように実装できます。

lst = [1, 2, 3, 4, 5]
for i in lst:
    print(i)

この場合、lstの要素を順番に取り出しながら、iに代入していきます。while文でも同様の処理を行うことができますが、for文の方が簡潔に書くことができます。

while文の実践方法・具体例

無限ループ

while文を使って無限ループを実装する場合、以下のように書きます。

while True:
    # 繰り返し処理

これにより、条件式がTrueになる限り、無限に繰り返し処理が実行されます。無限ループを停止させるには、break文を使います。

break文

break文を使うと、while文を途中で終了させることができます。以下は、1から10までの整数を順番に表示するプログラムで、iが5になった時点でループを終了するようになっています。

i = 1
while i <= 10:
    print(i)
    if i == 5:
        break
    i += 1

実行結果は以下のようになります。

1
2
3
4
5

continue文

continue文を使うと、while文の繰り返し処理をスキップすることができます。以下は、1から10までの整数を順番に表示するプログラムで、iが5の場合は処理をスキップするようになっています。

i = 1
while i <= 10:
    if i == 5:
        i += 1
        continue
    print(i)
    i += 1

実行結果は以下のようになります。

1
2
3
4
6
7
8
9
10

do while文のような処理を記述する方法

Pythonにはdo while文はありませんが、以下のように書くことで同じような処理を実現することができます。

while True:
    # 実行したい処理
    if 条件式:
        break

これにより、最初に1回処理が実行され、その後条件式が成立する限り繰り返し処理が行われます。

else文でループ終了時の処理を記述する方法

else文を使うことで、while文が終了した時に実行する処理を書くことができます。以下は、1から10までの整数を順番に表示するプログラムで、iが11になった時点でループを終了し、ループ終了時に「終了しました」と表示するようになっています。

i = 1
while i <= 10:
    print(i)
    i += 1
else:
    print("終了しました")

実行結果は以下のようになります。

1
2
3
4
5
6
7
8
9
10
終了しました

while文の注意点

while文を使う際には、以下の点に注意が必要です。

  • 条件式が常にTrueにならないように注意する。
  • 条件式が更新されない場合、無限ループに陥ることがある。

意図せず条件式が常にTrueにならないように注意する

while文の条件式が常にTrueになってしまうと、ループが無限に続いてしまい、プログラムが停止しなくなってしまいます。条件式を適切に設定することで、ループが正常に終了させるかbreak文でループを抜けられるようにしましょう。

以下は、条件式が常にTrueになってしまい、無限ループに陥る例です。

# 条件式が常にTrueになってしまうため、無限ループに陥る
while True:
    print("Hello, world!")

条件式が更新されない場合、無限ループに陥ることがある

while文の条件式が更新されない場合、ループが無限に続いてしまいます。条件式を更新する処理をループ内に含めて、適切にループを制御するようにしましょう。

以下は、条件式が更新されないため、無限ループに陥る例です。

# iが1のまま更新されないため、ループが無限に続く
i = 1
while i <= 10:
    print(i)

この例では、iが1のまま更新されず、条件式が常にTrueとなってしまいます。

以下のように適切に条件式を更新するようにすることで、ループを正常に制御するようにしましょう。

i = 1
while i <= 10:
    print(i)
    i += 1

まとめ

Pythonのwhile文は、特定の条件が成立する限り繰り返し処理を行うための制御構文です。for文との違いや基本的な使い方、注意点や実践的な方法について説明しました。また、break文やcontinue文を使ってループを制御する方法や、do while文に似た処理を実現する方法、else文を使ってループ終了時に特定の処理を実行する方法も説明しました。while文を使いこなすことで、より複雑なプログラムの実装や効率的なプログラムの作成が可能になります。

コメント

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