Python

【初心者向け】Pythonのwhile文の書き方がわかる!実践方法まで解説

「Pythonのwhile文の使い方がよくわからない。どうやって使って、何ができるの?for文とは何が違うの?」

本記事ではこのような悩みを解決します。

while文は初心者がつまずきがちな文法のひとつ。プログラムがどう動いているのかイメージしにくく、参考書を読んで「なんとなくこうかな」と思っても、実際はちゃんと理解できていなかったことも多いですよね。

プログラミングの勉強はひとつずつ確実に理解していくことが大事です。そこで本記事ではPythonのwhile文について初心者でもわかるように解説します。

本記事を読むことでPythonのwhile文の基礎がわかるようになり、学習を先へ進めることができますよ。

while文とは

まずwhile文とは何なのか基本的な部分を解説します。while文の役割や使い方、for文との違いも説明するので、while文の基礎をおさえましょう。

while文の役割

while文とは、同じ処理を繰り返し行うために使われる構文です。

プログラムを書く時に同じ処理を手で何回も記述するのは非効率的です。たとえば、「Hello world!」と5回表示させたい場合、次のように書くのはよくありません。

print(“Hello world!”)
print(“Hello world!”)
print(“Hello world!”)
print(“Hello world!”)
print(“Hello world!”)

これではソースコードが長くなってしまい、読みにくくなってしまっていますよね。表示内容を変更したい場合には5行すべてを書き換えないといけない手間もあります。

こうした問題を解決するのがwhile文です。

while文を使えば、たった一行のコードで「Hello World」を5回表示させることができます。

そうなれぱソースも短くなりますし、後で修正するのも楽になりますよね。このようにwhile文は、同じ処理を繰り返し行うときに使われる構文です。

for文との違い

while文とfor文を混同している人がよくいます。while文もfor文も「繰り返し処理を行う」点は共通していますが、まったく異なる処理になります。

while文は「条件を指定し、その条件に従う場合のみ処理を繰り返す」場合によく使われるのに対し、for文は「回数を指定して、指定した回数だけ繰り返し処理を行う」場合によく使われます。

多くの場合、for文とwhile文のどちらを使っても同じ処理を実装できますが、「こちらの構文を使った方がプログラムが綺麗に書ける」というのはあります。

たとえば「数字を1から10まで表示させる」など単純な出力の場合はfor文の方が向いています。逆に複雑な処理をする場合はwhile文の方が書きやすいことが多いです。

また、後で詳しく説明しますが、「無限ループ」処理を行うときはwhile文の方が使われます。

実際の現場ではある程度ルールに基づいて使い分けをしているところが多いです。

while文とfor文にはこのような違いがあるので覚えておきましょう。

while文の基本的な使い方

ここではwhile文の基本的な使い方を解説します。

while文は次のような書式となっています。

while 条件式:
    条件式が真の時に実行する文1
    条件式が真の時に実行する文2
    ・・・

まず条件式を書き、その条件に当てはまる場合に処理したい内容をwhile以下にインデントして記述します。書き方の例としては次のようになります。

num = 0
while num < 5:
       print( ” Hello world! ” )
         num = num + 1

■実行結果

Hello world!
Hello world!   
Hello world!   
Hello world!   
Hello world!   

これは「Hello world!」と5回表示させるプログラムです。プログラムはこのとき、次のような流れで動いています。

  1. 「num=0」で変数numに0を入れる
  2.  while文に到達すると、条件式「num<5」に当てはまるか確認。numは0なので当てはまる。
  3. 「print( “Hello world!” )」で「Hello world!」と1回表示
  4. 「num=num+1」でnumの値に1プラスする
  5.  while内の処理が一度終了したので、最初に戻って条件式「num<5」を確認する。numは1なので当てはまる。
  6.  3から5の処理を繰り返す。numが5になると条件式「num<5」に当てはまらなくなるので、そこでwhileの処理が終 了する
  7. プログラムが終了する

このようにwhile文は条件式に当てはまるなら、何度でも処理を繰り返すのです。

while文の実践方法・具体例

それでは、while文の実践方法を解説してきます。

ここでは以下のことを学んでいきましょう。

  • break文
  • continue文
  • 無限ループ
  • else文

これらを覚えていると、while文を実践で使いこなせるようになります。

break文

break文を使うと、while内で処理を強制終了させることができます。

while文は通常、条件式に当てはまるなら永遠に処理を実行させます。しかしbreak文を使うと処理の途中でも、ループを終了させることが可能です。

使い方の例を見ていきます。

num = 0
while num < 5:
     if num == 2:
        break
     print( “Hello world!” )
     num = num + 1

■実行結果

Hello world!
Hello world!

上記のプログラムでは、「numの値が2のとき」にbreak文を使って処理を終了させています。そのため「Hello world!」は2回しか表示されないのです。

このようにbreak文を使うと特定条件で処理を終わらせることができます。

何か例外的なことが起こったときにループを終了させたい場合などにはbreak文が便利です。

continue文

continue文を使うと、while内で処理をスキップさせることができます。

「この場合は処理を飛ばして、後はループさせるようにしたい」といった場合にはcontinue文が役立ちます。

使い方の例を見ていきます。

num = 0
while num < 5:
    if num == 2:
         num = num + 1
         continue
    print(num)
    num = num + 1

■実行結果

 0
 1
 3
 4

上記のプログラムでは数字を0から4まで順に表示させる途中で、「numの値が2のとき」にcontinue文を使って処理をスキップさせていますね。2の値のみが出力されていないことを確認してください。

このように、特定条件のみ処理を飛ばしたいときにconitnue文が役立ちます。

無限ループ

特定の条件に一致するまでずっと同じ処理を繰り返したいときには「無限ループ」が役に立ちます。

while文では「while True:」と書くことで、処理を無限に行う「無限ループ」を実行することができます。

num = 0
while True:
          print( “Hello world!” )
          num = num + 1

上記の例では、「Hello world!」とずっと表示させ続けています。

さらに、break文と組み合わせることによって、無限ループの中でも特定条件のときに処理を終了させることができます。

num = 0
while True:
          if num == 2:
                     break
          print( “Hello world!” )
          num = num + 1

■実行結果

Hello world!
Hello world!   

「numが2の場合」に処理を終了させることができました。こうすることでbreak文は無限ループも終わらせることが可能です。

上記の例では無限ループを使わなくても記述することはできますが、無限ループを使った方がソースコードをすっきり書くことができる場合もあります。while文での無限ループのやり方も覚えておくようにしましょう。

else文

else文を使うと、while文の条件式に当てはまらない場合に処理を実行させることができます。これを利用するば、while文のループ処理が終わった後に処理を実行させることもできます。

else文の書式は次のようになります。

while 条件式:
    条件式が真の時に実行する文1
    条件式が真の時に実行する文2
else:
    条件式が偽の時に実行する文1
    条件式が偽の時に実行する文2
    ・・・

while文の下にelse文を書き、else文の中に繰り返し処理が終わった後に実行したい処理を記述します。例を見ていきましょう。

num = 0
while num 5:
     print( “Hello world!” )
     num = num + 1
else:
     print(‘Hello world!と5回出力しました)

■実行結果

Hello world!
Hello world!   
Hello world!   
Hello world!   
Hello world!   
Hello world!と5回出力しました

上記の例では、まずwhile文で「Hello world!」と5回出力しています。すると「num」の値は5となり条件式を満たさなくなっているので、else文が実行されることになります。最後にelse文で「Hello world!と5回出力しました」と出力しているのです。

このようにwhile文と組み合わせることで、ループ後の処理を明示することが可能です。

今の場合、else文を使わなくても、whileの下にそのまま処理を書いてもかまいません。ただ、else文を使った方が「whileの中の処理と何かしら関連性のある処理」ということを表すことができます。

そうすれば後からコードを見返したときに、プログラムが何をやっているのかがわかりやすくなるのです。ソースコードをわかりやすく書けると現場で役立つので、else文も覚えておきましょう。

Pythonの個別指導なら『Tech Teacher』

引用元:Tech Teacher

このBlogを運営するTech Teacherは、Pythonを学習する社会人を対象に、初心者から挫折した人まで、一人ひとりの目的や学習状況にあわせた個別指導を行っています。

また、オンライン指導も選べるので、自宅でも対面でも受講できます。

一人ひとりに最適化された完全マンツーマン指導を提供

完全マンツーマン指導で着実に身につく!

Tech Teacherでは専任の教師が完全マンツーマン指導を行います。
学習状況や目標をしっかり把握した教師が、生徒様のご要望もふまえながら最適なオーダーメイドの指導をご提供します。

お仕事と両立しながら続けられる!

Tech Teacherなら、受講日時や回数を生徒様のご都合に合わせて柔軟に調整することができます。
そのため、お仕事との両立がしやすく、プログラミング学習を継続的に学習することができます。忙しい合間にプログラミングを学びたいという方におすすめです。

授業料は受けた分だけ!

Tech Teacherでは、生徒様が受けた授業の時間分だけ後払いで請求させていただきます。そのため、気軽にプログラミングの学習を始めることができます

以下のボタンからさらに詳しい情報をご覧いただけます。

まとめ

本記事ではwhile文について解説しました。

while文を使うと同じ処理を繰り返し行うことができ、ソースの記述を大幅に減らすことが可能です。また、break文やconitnue文、else文と組み合わせることで、より複雑なループ処理を行うこともできます。

while文は実務では頻繁に使うことになる処理の一つ。プログラミング初心者はぜひこの機会に使い方を覚えてくださいね。