【Python】for文とwhile文の使い分けを場面で比較!サンプルコード付き!
様々な場面で繰り返し処理を使用することがありますが、どちらを使うべきかで迷ったことがあるかと思います。
今回は、2つの場面でfor文、while文をそれぞれ使用するとどうなるのかを実際に比較していきます。
・回数を指定して繰り返し処理を行う場合
・条件次第で繰り返し処理を行う場合
for文とは
for文とはある処理を繰り返し行いたい場合に使用する処理です。
同じ文を何度も書く代わりにfor文の中に処理を書くことでその処理を決められた回数繰り返すことができます。
Pythonのfor文はfor inとなります。
for文について詳しく知りたい場合は【Python】for文(for in)で繰り返し処理を行う!書き方や使い方を徹底解説!を先にご覧ください。
while文とは
while文は「条件式がtrueである限り」処理を繰り返します。
条件式が「n == 1」とすれば、変数nの値が1である限り処理を繰り返し、「n != 1」とすれば変数nの値が1でない限り処理を繰り返すようになります。
while文について詳しく知りたい場合は【Python】while文を使って繰り返し処理を行う!サンプルコード付き!を先にご覧ください。
回数を指定して繰り返し処理を行う場合
回数を指定して繰り返し処理を行う場合を見てみます。
回数を指定して繰り返し処理を行う場合はfor文が適していますが、while文で行うとどうなるのかそれぞれで比較してみましょう。
for文を使った例
1 2 3 4 |
for i in range(10): print(str(i+ 1) + "回目の処理が実行されました。") print("処理を終了しました。") |
出力結果
1回目の処理が実行されました。
2回目の処理が実行されました。
3回目の処理が実行されました。
4回目の処理が実行されました。
5回目の処理が実行されました。
6回目の処理が実行されました。
7回目の処理が実行されました。
8回目の処理が実行されました。
9回目の処理が実行されました。
10回目の処理が実行されました。
処理を終了しました。
range()関数を使うことで何回繰り返し処理を行うのか明確になっています。
これをwhile文で作成してみます。
while文を使った例
1 2 3 4 5 6 7 8 |
cnt = 1 while cnt <= 10: print(str(cnt) + "回目の処理が実行されました。") cnt = cnt + 1 print("処理を終了しました。") |
出力結果
1回目の処理が実行されました。
2回目の処理が実行されました。
3回目の処理が実行されました。
4回目の処理が実行されました。
5回目の処理が実行されました。
6回目の処理が実行されました。
7回目の処理が実行されました。
8回目の処理が実行されました。
9回目の処理が実行されました。
10回目の処理が実行されました。
処理を終了しました。
for文と同じように処理が実行されましたが、「10回処理を繰り返して処理を行った」というよりも「10以下になるまで1ずつ増やしながら繰り返し処理を続けた。その結果、10回処理が実行された。」というような意味合いになります。
何回繰り返して処理を行えば良いのかが明確であればfor文を使うようにしましょう。
条件次第で繰り返し処理を行う場合
条件次第で繰り返し処理を行う場合を見てみます。
条件次第で繰り返し処理を行う場合はwhile文が適していますが、for文で行うとどうなるのかそれぞれで比較してみましょう。
while文での例
1 2 3 4 5 6 7 8 9 10 |
num = 1 sum = 0 while sum <= 50: sum = num + sum print ("条件を満たしているため実行" + "合計"+ str(sum)) num = num + 1 print("処理を終了する。") |
出力結果
条件を満たしているため実行合計1
条件を満たしているため実行合計3
条件を満たしているため実行合計6
条件を満たしているため実行合計10
条件を満たしているため実行合計15
条件を満たしているため実行合計21
条件を満たしているため実行合計28
条件を満たしているため実行合計36
条件を満たしているため実行合計45
条件を満たしているため実行合計55
処理を終了する。
次はこれをfor文で作成してみます。
for文を使った例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
sum = 0 for i in range(1, 100): sum = i + sum print ("条件を満たしているため実行" + "合計"+ str(sum)) if sum >= 50: break print("処理を終了する。") |
出力結果
条件を満たしているため実行合計1
条件を満たしているため実行合計3
条件を満たしているため実行合計6
条件を満たしているため実行合計10
条件を満たしているため実行合計15
条件を満たしているため実行合計21
条件を満たしているため実行合計28
条件を満たしているため実行合計36
条件を満たしているため実行合計45
条件を満たしているため実行合計55
処理を終了する。
while文ではsum <= 50である場合は繰り返して処理が行われており、sumが50以上になると処理を終了しています。 しかし、for文では何回処理を繰り返せば良いのか未定なので、range()関数を使ってとにかく1から100を繰り返すようにしています。 そして、breakを使うことでsum <= 50になると処理を終了するようになっています。
条件による繰り返し処理だとwhile文の方が適していることが分かります。
do-while文を再現
javaやC#などの言語を使った方ならわかると思いますが、Pythonにはdo~whileは存在しません。
do~whileとは1回目は必ず処理を行い、2回目以降は条件を満たす限り繰り返すという処理になります。
その為、Pythonでdo〜whileを再現してみます。
例
1 2 3 4 5 6 |
cnt = 1 while True: print(str(cnt) + "回に処理を行う") cnt += 1 if cnt == 10: break |
出力結果
1回目に処理を行う
2回目に処理を行う
3回目に処理を行う
4回目に処理を行う
5回目に処理を行う
6回目に処理を行う
7回目に処理を行う
8回目に処理を行う
9回目に処理を行う
このように書くことでdo〜whileを再現することができます。
しかし、whileの条件がTrueの場合は無限ループの状態となりますので、breakを必ず使用しましょう。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。