前章でリストについて解説しました。今回からそのリストを使って実際にfor文を書いていきます。
またwhile文とfor文のそれぞれの違いについて解説していきます。
for文
for文の書き方
for文の書き方は以下の通りです。
for 変数名 in イテラブルオブジェクト:
処理
実際にプログラムの例を見ていきましょう。前章の練習問題1をfor文で書きます。
コード
# 変数宣言
list_fruits = ["りんご", "バナナ", "みかん"]
# 値を表示
for fruit in list_fruits:
print(fruit)
実行結果
りんご
バナナ
みかん
for文はイテラブルオブジェクトの要素数分ループを繰り返します。
この例で言うと要素数が3個なので3回繰り返します。
for文で宣言された変数(fruit)に対して、1ループごとにイテラブルオブジェクト内の要素が順番に格納され、for文内の処理を実行していきます。
処理を順番に見ていきます。
1ループ目
リストの0番目の要素( りんご )が変数( fruit )に格納され、print(fruit) が実行される。
2ループ目
リストの1番目の要素( バナナ )が変数( fruit )に格納され、print(fruit) が実行される。
3ループ目
リストの2番目の要素( みかん )が変数( fruit )に格納され、print(fruit) が実行される。
リスト内の要素数分繰り返されたので、ループ終了
rangeを使ったfor文
上記で見せた例はリストの要素数分繰り返す場合でした。
もし10回繰り返したい場合はどのようにすればいいでしょうか。
方法としては [1, 2, …, 10] とリストを用意する方法がありますが、これが100回とか1000回だと相当の手間です。
そこで range() を使います。
range() を使うと連続した値を用意してくれます。
使い方は以下の通りです。
range(ループする回数)
コード
for i in range(10):
print(i)
実行結果
0
1
2
3
4
5
6
7
8
9
range(10) とすることで10回ループを行なっています。
ただし変数に格納する要素は0から順番に格納されています。
もし1から10にしたい場合は以下のようにします。
range(開始の数字, 終了させたい数字 + 1)
コード
for i in range(1, 11):
print(i)
実行結果
1
2
3
4
5
6
7
8
9
10
while文とfor文の違い
while文とfor文と繰り返し文が2つあるのはわかったけれど、どうやって使い分ければいいのかと疑問になると思います。
主にwhile文とfor文の違いはループの条件が違います。
while文・・・条件がFalseになるまでループ
for文 ・・・指定された回数分ループ
条件式によってループをさせたい場合は while文
回数が決まっていたり、リストなどのイテラブルオブジェクトを使う場合には for文
と使い分けるようにしましょう。
練習問題
問題1
新宿から渋谷まで山手線を利用した時に停止する駅を表示するプログラムを
リスト[“新宿”, “代々木”, “原宿”, “渋谷”]
を使って作成せよ
また駅を表示する際、新宿は”出発地点”、渋谷は”到着地点”、それ以外の駅は”通過地点”も一緒に表示せよ。
期待する実行結果
出発地点: 新宿
通過地点: 代々木
通過地点: 原宿
到着地点: 渋谷
リストを使うのでfor文で作成しましょう。
「駅を表示する際、新宿は”出発地点”、渋谷は”到着地点”、それ以外の駅は”通過地点”も一緒に表示せよ。」
これを満たすためにはfor文の中で条件分岐をすれば、、、
コード
# 変数宣言
station_list = ["新宿", "代々木", "原宿", "渋谷"]
# 停車駅の表示
for station in station_list:
if station == "新宿":
print("出発地点:", station)
elif station == "渋谷":
print("到着地点:", station)
else:
print("通過地点:", station)
※ コードは解答例です。正解は一つではありません。
問題2
1から10までのうち偶数を足すプログラムをfor文を用いて作成せよ。
期待する実行結果
30
コード
# 変数宣言
result = 0
# 1から10まで繰り返す
for num in range(1, 11):
# 偶数なら足す
if num % 2 == 0:
result = result + num
# 結果出力
print(result)