トップページ -> Python入門 基礎編 -> 繰り返し処理を扱おう while文

繰り返し処理を扱おう! ~while文~

前回は繰り返し処理を細かく制御するbreak continue文について学びました. 今回はwhile文による繰り返し処理を学びます. while文は以下のように使います.


while (条件式): # if文と同じようにダブルコロンを付けます.
    (繰り返したい処理) # if文と同じようにインデントブロックを作ります.
    (繰り返したい処理2行目)
            |
    (繰り返したい処理n行目) # 繰り返したい処理は複数行でもよい
条件式を満たしている(条件式がTrueの)間のみ繰り返し処理が続けられます. 具体的な例を見てみましょう.aが100未満の間はaに2をかけ続ける処理です.

a = 2
while a < 100:
    a = 2*a
    print(a)
繰り返しwhile
これは今までの知識で書き換えることができます.

a = 2

for i in range(1000000):
    if a >= 100:
        break
    a = 2*a
    print(a)
繰り返しfor
for文でも書き換えることができました. しかし,ループの回数がわからないため保険をかけて大きなループ回数を設定しました. 見た目も悪いですし,breakの位置にも気を付けないと1回多く実行してしまったり,逆に少なく実行してしまったりします. ループの回数が分からない場合は while文 が有効なのです. また,while文を使って無限ループを起こすこともできます. while文は条件式がTrueの間に繰り返し処理を実行し続けるのでした. そこで条件式にTrueを与えることで無限ループを引き起こせるのです. 無限ループを起こす前にプログラムの止め方を教えておきます. 以下の画像のように ■(interrupt the kernel) を押すとプログラムが停止します.
停止ボタン
「Hello World」とたくさん表示するプログラムです. 満足したら止めてあげましょう.

while True:
    print("Hello World")
無限ループ
永遠に終わらないプログラムなんて何の役にも立たないじゃないかと思われるかもしれませんが,そうでもありません. 1回は必ず実行したいが,何回繰り返すのか分からないという状況で while Trueによる無限ループが威力を発揮します. 無限ループを使わずに書くと以下のようになります.

(繰り返したい処理) # 1回目は仕方がないのでwhileの外で行う
while (終了条件):
    (繰り返したい処理)
同じ処理を2回書くことになります.1行の処理ならいいですが,これが何十行もの処理になると大変です. while Trueによる無限ループを使うことで以下のように書くことができます.

while True:
    (繰り返したい処理) # 1回は必ず行う
    if (終了条件):
        break
前回学んだbreak文と併用することで1回は必ず行ってほしいが,何回行うかわからない処理を綺麗に書けます.

演習問題

たかし君はお年玉の5万円を年間3%の利息の付く銀行に預けています. しかし,たかし君は預金が100万円を超えるまで引き出さないと言っています. たかし君が預金を引き出すことができるのは何年後でしょうか?

演習問題の解答例


money = 50000 # 元となる5万円
counter = 0 # 年数を数えるカウンター
while money < 1000000: # 100万円を超えるまで
    money = money*1.03 # 利息を付け続ける
    counter = counter + 1 # 年数をカウントする
    
print(counter)
答えは102年後です.残念ながらお年玉を引き出すのは無理そうです.

今回はwhile文による繰り返し処理を学びました. for文と使い分けることでスマートにプログラムを記述できるようになりますのでぜひマスターしてみてください.
次回はPython入門 基礎編のまとめを行います.

<- 前へ戻る 【目次に戻る】 次へ進む ->