前回は、条件分岐のif文について触れていきました。
今回は、第2弾として繰り返し処理のfor文とwhile文について触れていきます。
ちなみに前回の記事は、こちらになります。
目次
繰り返し処理
ループ処理とも呼ばれてます。
for文
基本構文はこちら、
1 2 |
for 変数 in シーケンス型(リストや文字列) : 処理 |
末尾の:(コロン)を忘れずに。
シーケンス型は、ほかの言語では”配列”とも言われます。
これについては、別の型のときに触れていきます。
構文の意味としては、シーケンス型に含まれているアイテムについて、
処理が実行されます。
例えば、文字列”ABCDEF”をひとつずつ表示したい場合、
for文を使うと下のようになる。
1 2 3 |
x = "ABCDEF" for i in x: print(i) |
これを実行すると、
1 2 3 4 5 6 |
A B C D E F |
こんな形になります。
この処理を絵にしてみると……
forの処理を表しているのが、台形の部分になります。
回数に応じてループを回したい場合
他の言語の例として、VB.Netでは、for文には2種類あって、
1種類は、前述したPythonでのfor文、これがVB.Netだとfor~each文と位置付けられています。
※for~each文ってなんだ?ってなると思うので簡単に触れます。
したに、VB.Netでのfor~each文を記します。
1 2 3 4 |
Dim x As String = "ABCDEF" For Each i As String in x Console.WriteLine(i) Next i |
これが、Pythonで扱われるfor文に近い処理になります。
Pythonの時と同じ処理になります。
Pythonの方がシンプルに記述されているのがわかるかと思います。
VB.Netの文法については、VisualBasic回でまとめます。
2種類目が、for文で下のような文になります。
1 2 3 4 |
Dim maxNum As Integer = 10 For i As Integer = 0 to maxNum Console.WriteLine(i) Next i |
これは、0から10までを繰り返し、それぞれ表示をしています。
値の出力は、VB.Netだと“Console.WriteLine”で行えます。
このようにVb.Netでは2種類のfor文があります。
ですが、Pythonには、このVB.Netでいうfor文がありません。
したがって回数に応じて繰り返し処理をしたい場合、
1 2 3 4 5 6 7 |
x = 10 for i in x: print(i) # 'int' object is not iterable # File "パス名", line 2, in <module> # for i in x: |
こう書きたくなりますが、エラーとなってしまいます。
じゃあ、どうすればいいのか……そこでrange関数という関数を使います。
range関数
range関数は、必要に応じて整数値を生成する、
範囲オブジェクトと呼ばれるオブジェクトを作成します。
for文においては、特定の回数を繰り返したい場合に使われます。
構文としては、下のようになります。
range(開始番号[、停止番号][、ステップ番号])
パラメータ(開始整数、終了整数、ステップ)を設定することで、
条件を変更できます。
開始番号の初期値は0になります。←注意が必要
ステップ番号は、何個ずつ処理を行うかになります。
負の値も使うことができます。
ステップ番号が与えられていない場合は、0からスタートになります。
ここで例を示します。
1 2 3 4 5 6 7 8 9 10 11 |
# 10回繰り返す処理の場合 for i in range(10): print(i) # 結果 # 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 # 0 ~ 10まで2つずつ繰り返す場合 for i in range(0, 10, 2): print(i) # 結果 # 0, 2, 4, 6, 8 |
こんな感じになります。
開始番号が0なので、10までは繰り返されません。
※ 気を付けてください。筆者もこれでハマった時があります。
このrange関数を使うことで、回数に応じた繰り返しができるようになります。
例えば、前回学んだif文と組み合わせると……
1 2 3 4 |
for i in range(10): if i == 3: print("Hello World") break |
ここでは、3回まで繰り返したら”Hello World”を出力し、
処理を抜けるということをしています。
処理抜ける際に使う文が、breakといわれる文です。
これを使うことで処理を抜けることができます。
絵で描くと、
この他にも、
1 2 3 4 5 |
for i in range(10): if i == 3: continue print(i) |
これは、3回目だけ、値が出力されません。
このcontinue文は、ループをスキップしたいときに使います。
こちらも絵で描くと、
こんな感じになります。
for文については、いろいろ触れてきましたが
ざっと、ここまでわかっていれば使えると思います。
練習問題を……
① forループを10回繰り返したとき、
偶数のときだけ、数値を出力してください。
② forループを10回繰り返したとき、
3回目でループを抜けだしてください。
※ 途中回数は出力してください。
おわりに
while文については、次回に持ち越します……。(すみません。)
興味を持ってもらえたら嬉しいです。
知識の共有が誰かしらの支えや糧になればなと思います。