こんにちは、機械学習講師の和泉です。
Python の中でも特に基本的な要素であり、繰り返しの処理を行うために使用する「while」文は、理解するのに最初は少し複雑かもしれません。そこで、この記事では、Python の「while」文の基本的な使い方から、「else」「break」「continue」を使った少し高度なテクニックまでを、わかりやすく解説します!
プログラミングに不慣れな方でも安心して読むことができるよう、具体的な例と共に解説していきます。
ゼロから始めるプログラミング
スモールステップで Python を基礎から学べる、初学者の方向けの講座です。演習問題を通して Python の使い方を理解し、データ分析や機械学習実装のための基礎を身につけることを目指します。
DX を推進する AI ・データサイエンス人材育成コース
プログラミング未経験から、AI やデータサイエンスを学ぶことのできる 6 ヶ月間のコースです。転職実績も豊富で、自走できる AI人材を多く輩出しています。
実行環境
- Google Colaboratory
- Python:3.7.10
ぜひ Google Colaboratory を立ち上げて手を動かしながら学んでください!
Google Colaboratory について詳しくは以下の記事で紹介しています。
Python の while 文とは
while
文は「ある条件のもとで」処理を繰り返すときに用いる制御構文です。繰り返しの構文なので for
文と似ていますが、条件を確認して True
の時のみ処理を実行するところが特徴です。
while
文の基本的な書き方は下図のようになります。
出典:2.7.3. 繰り返し(while 文)|Chainer Tutorial
while
文は条件に当てはまっている間は処理を繰り返し、条件に当てはまらなくなった時に処理が止まります。
そのため、条件に当てはまり続けた場合は、無限に処理を繰り返します。この無限ループには、十分注意してください!
構文をまとめると、下記のようになります。
while
文の構文繰り返したい処理①
繰り返したい処理②
︙
また Python の while
文では、以下 2 点を必ず押さえておきましょう!
- 条件式の直後に
:
(コロン) を付けること - 処理を書く際は、インデントと呼ばれる半角スペースを入れること(字下げ)
while
文のサンプルコード
例えば、5 までの数字を数える場合を考えてみましょう。
はじめは、0 からカウントを始め、5 未満の時は、1 ずつ数え続けます。
数える過程も表示して、どのような処理になるのか、以下のサンプルコードを見てみましょう。
# count = 0 で初期化した状態から始める
count = 0
# count が 5 未満の時は、処理を続ける
while count < 5:
count += 1
print(count)
1
2
3
4
5
このように、カウント 5 未満 (count < 5
) という条件を満たしている間は処理を続けるようになっています。
カウントが5になる (count = 5
) と、条件を満たさないので処理が止まります。
while 文の使い方
while 文を使う時によく使う else
break
continue
についてご紹介します。
これらを使うことで柔軟にプログラムを実行できるのでぜひこちらも押さえておきましょう!
else 文の役割と使い方
else
は while
文で全ての処理が実行された時に行われる処理です。
先ほどの例を使って見てみましょう。
# count = 0 で初期化した状態から始める
count = 0
# count が 5 未満の時は、処理を続ける
while count < 5:
count += 1
print(count)
# 処理が最後まで実行された後に実行される
else:
print('ループ処理終了!')
1
2
3
4
5
ループ処理終了!
このように繰り返し処理の最後にしたい処理を else で記述します。
break 文の役割と使い方
break
は if
文と一緒に使います。 if
文の条件と一致していた場合に処理を中断させます。
例をご紹介します。
# count = 0 で初期化した状態から始める
count = 0
# count が 5 未満の時は、処理を続ける
while count < 5:
count += 1
# count が 3 のときに処理を中断する
if count == 3:
break
print(count)
1
2
このように条件に一致して以降の処理を中断したい時は break
で記述します。
continue 文の役割と使い方
こちらは break
と似ていますが、 continue
の場合は処理を中断させずに次のループに進み処理を継続します。if
文と一緒に使い、 if
文の条件と一致していた場合に現在のループの処理を中断し、次のループに進みます。
例をご紹介します。
# count = 0 で初期化した状態から始める
count = 0
# count が 5 未満の時は、処理を続ける
while count < 5:
count += 1
# count が 3 のときに処理をスキップする
if count == 3:
continue
# count が 3 のときにはこの下の print は実行されない
print(count)
1
2
4
5
このように特定の条件に一致した場合、今のループでの処理を中断して次のループに移る場合は continue
で記述します。
ゼロから始めるプログラミング
スモールステップで Python を基礎から学べる、初学者の方向けの講座です。演習問題を通して Python の使い方を理解し、データ分析や機械学習実装のための基礎を身につけることを目指します。
複数条件を指定した while 文
複数条件の指定方法
Python の while 文では、一つだけでなく複数の条件を指定することが可能です。複数の条件を指定する場合、論理演算子「and」や「or」を使用します。
- ‘and’ 演算子: すべての条件が真である場合に限り、全体の結果が真になります。
- ‘or’ 演算子: 条件のいずれかが真であれば、全体の結果が真になります。
以下のように記述することで、複数の条件を設定することができます。
i = 0
j = 20
while i < 10 and j > 10:
# do something
i += 1
j -= 1
上記の例では、iが10未満であり、かつjが10より大きい場合にループを続けます。
複数条件を持つ while 文のサンプルコードと解説
では、実際に複数条件を持つ while 文の例を見てみましょう。
i = 0
j = 20
while i < 10 and j > 10:
print(f"i: {i}, j: {j}")
i += 1
j -= 1
このコードでは、i の値が 10 未満であり、同時に j の値が 10 より大きい間、ループ内の処理が続きます。ループ内では、まず変数 i と j の値を出力し、次に i の値を 1 増やし、jの値を 1 減らします。これにより、i が 10 に到達すると同時に j が 10 を下回るため、どちらの条件も偽となり、ループが終了します。
このように、複数の条件を指定することで、より複雑な繰り返し処理を実現することが可能になります。ただし、複数の条件を管理することは、一つの条件を管理するより複雑であるため、各条件がどのように動作するかを理解し、適切に管理することが重要です。
while 文を使う時は無限ループに注意
while 文と for 文との違い
while文とfor文は、プログラミングの中で「繰り返し」を表現するためのツールです。それぞれがどのように使われるかを簡単な例とともに見てみましょう。
while文は、「~が成り立つ限り、何かをずっと繰り返す」というような状況で使います。例えば、「ゲームでライフが0になるまでプレイを続ける」というケースです。Pythonでは、こんな風に書きます。
life = 10
while life > 0:
print("ゲームを続ける")
life = life - 1 # ライフを1減らす
これは、「ライフが0より大きい限り、”ゲームを続ける”と表示し、ライフを1ずつ減らす」という繰り返しの動作を表現しています。
一方、for文は、「リストに入っている全ての要素に対して何かをする」という状況で使います。例えば、「友達のリストがあって、全員に挨拶をする」というケースです。Pythonでは、こんな風に書きます。
friends = ["Alice", "Bob", "Charlie"]
for friend in friends:
print("Hello, " + friend + "!")
これは、「friendsリストの各友達(Alice, Bob, Charlie)に対して、”Hello, [友達の名前]!”と表示する」という動作を表現しています。
このように、while文とfor文はそれぞれ異なる種類の「繰り返し」を表現するためのツールと言えます。
while 文で金額自動表示プログラムを作ってみよう!
例えばお店でお客さんが支払った金額のリストがあったとします。
[1100, 3980, 0, 2200, 6600]
これらを while
文を使って「支払った金額は〇〇円です。」と表示します。
ただし、この数字が 0 の時には処理をスキップしたいというプログラムを考えます。
その場合は以下のように書けます。
# 金額のリスト
price = [1100, 3980, 0, 2200, 6600]
# リストの長さを取得する(今回は 5 が入る)
price_length = len(price)
# 繰り返し処理のインデックスを定義する
index = 0
# 現在のインデックスがリストの長さの数値より小さければ処理を継続
while index < price_length:
# price[0] であれば 1100, price[1] であれば 3980 が入る
current_price = price[index]
# もし current_price が 0 だった場合はインデックス +1 して次のループに進む
if current_price == 0:
index += 1
continue
# current_price を文字列に変換して表示
print('支払いは' + str(current_price) + '円です。' )
index += 1
支払いは1100円です。
支払いは3980円です。
支払いは2200円です。
支払いは6600円です。
0 をスキップして処理を行うことができました。
では例えば以下の条件の処理を作るにはどうすればいいでしょうか?
- 金額のリストの中に数字ではなく文字が入っていた場合、「文字が入っていたので処理を中断しました。」と表示する
- 最後まで処理が完了したら「処理が完了しました。」と表示する
その場合は以下のように記述します。
# 金額のリスト
price = [1100, 3980, 0, '2200', 6600]
# リストの長さを取得する(今回は 5 が入る)
price_length = len(price)
# 繰り返し処理のインデックスを定義する
index = 0
# 現在のインデックスがリストの長さの数値より小さければ処理を継続
while index < price_length:
current_price = price[index]
# current_price に文字列が入っていた場合は処理を中断する
if type(current_price) == str:
print('文字が入っていたので処理を中断しました。')
break
# もし current_price が 0 だった場合はインデックス +1 して次のループに進む
if current_price == 0:
index += 1
continue
# current_price を文字列に変換して表示
print('支払いは' + str(current_price) + '円です。' )
index += 1
else:
print('処理が完了しました。')
支払いは1100円です。
支払いは3980円です。
文字が入っていたので処理を中断しました。
また最後まで処理が完了したときにメッセージが表示されることを確認します。
# 金額のリスト
price = [1100, 3980, 0, 2200, 6600]
# リストの長さを取得する(今回は 1 が入る)
price_length = len(price)
# 繰り返し処理のインデックスを定義する
index = 0
# 現在のインデックスがリストの長さの数値より小さければ処理を継続
while index < price_length:
current_price = price[index]
# もしリストに 1 つしか数字が入っておらず、かつその数字が 0 だった場合
if type(current_price) == str:
print('文字が入っていたので処理を中断しました。')
break
# もし current_price が 0 だった場合はインデックス +1 して次のループに進む
if current_price == 0:
index += 1
continue
# current_price を文字列に変換して表示
print('支払いは' + str(current_price) + '円です。' )
index += 1
else:
print('処理が完了しました。')
支払いは1100円です。
支払いは3980円です。
支払いは2200円です。
支払いは6600円です。
処理が完了しました。
まとめ
本記事では、while
文の基本的な仕組みと使い方について解説しました。以下、まとめになります。
while
文は設定した条件を満たすまで、処理を繰り返す構文- 条件の設定を誤ると、無限ループになるので注意
else
break
continue
を使って柔軟に条件づけできる
このように、条件を設けて繰り返しの処理をしたいような特殊な場合は、 while
文を使いましょう。
それ以外の基本的な繰り返しの処理は、for
文でも十分対応できます。
for
文については、以下の記事を参考にしてみてください!
もし、動画で while
文の内容を学習したい!という方は、元副社長の動画がおすすめです。
https://www.youtube.com/watch?v=nE5DTxksjHw
また、Python の特訓動画もあります。Python 勉強中の方は、ぜひチャレンジしてみてください!
https://www.youtube.com/embed/Hd35Zq0efM8
以上、while
文の基礎的な使い方でした。この記事が皆様の楽しい Python ライフの一助になれば嬉しいです!
まずは無料で学びたい方・最速で学びたい方へ
まずは無料で学びたい方: Python&機械学習入門コースがおすすめ
AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!
最速で学びたい方:キカガクの長期コースがおすすめ
続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!
AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?
無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!
- 国も企業も育成に力を入れている先端 IT 人材とは
- キカガクの研修実績
- 長期コースでの学び方、できるようになること
- 料金・給付金について
- 質疑応答
参考リンク
ゼロから始めるプログラミング
スモールステップで Python を基礎から学べる、初学者の方向けの講座です。演習問題を通して Python の使い方を理解し、データ分析や機械学習実装のための基礎を身につけることを目指します。
DX を推進する AI ・データサイエンス人材育成コース
プログラミング未経験から、AI やデータサイエンスを学ぶことのできる 6 ヶ月間のコースです。転職実績も豊富で、自走できる AI人材を多く輩出しています。