Python入門講座

【Python入門講座】forやリストでループ処理!楽するPython

前回までに条件式を理解し、ウィンドウ作成をするライブラリを使ってじゃんけんゲームを作りました。

今回は、ループ処理(繰り返し処理)について学んで行きましょう!

飯田とレッツPython★(今思いつきました、引かずにここは乗ってみてください。)

↓あなたの応援が飯田の力に!!
ブログランキング・にほんブログ村へ
にほんブログ村

んな場面でループ処理は役にたつの?

その名の通り、ループ処理をすると、一定の条件に基づいて、Pythonが同一の処理を繰り返し実行してくれます。

例えば、1+1という処理を100回繰り返さなければいけない場合に、以下のように100行プログラムを書いていたら、もはや手で計算した方がマシですよね?


このように、大量のデータ、ファイルに対して特定の処理を繰り返し実行する場合に繰り返し処理が有効となります。

ープ処理の書き方

そんな何回も処理を走らせるプログラム、書き方難しいんじゃないの?

そんな心配をする方もいるかもしれませんが、大丈夫。

Pythonはとてもシンプルなコードを書くだけで、あなたの期待に応えてくれます。

では早速書いてみますね。

for i in range(1,101):
    i += 1
print(i)

はい、これだけです。3行で済みます。(笑)

実際に出力して確かめてみてください。

101になりますよね。

ループ処理構文の解説

まず、ループ処理をする際のルールとして以下の3個を覚えましょう。

1. 1行目は for 変数 in 繰り返し処理する対象 :
2. 2行目以降、ループ処理する部分を字下げする
3. 対象を変数に代入して行う処理を記載する

基本、ルールはこれだけです。

なお、ループ処理にはfor構文以外にwhile構文もあり、状況によって使い分けるのですが、今回はfor構文をマスターしましょう。

特に1行目の最後の :(ダブルコロン)は忘れがちなので、気をつけてください。
2行目以降の字下げ(インデント)も忘れると、ループ処理に処理が組み込まれません。
こちらも気をつけましょう。

range関数

例示のコードでしれっと書いたので、「こんなの習ったっけ?」という方もいたと思います(笑)

range関数は、ループ処理をする時に多用する関数なので、覚えてしまいましょう。

書き方としては、range (引数1,引数2,引数3) となります。

引数1はスタートする値、0からカウントして「引数2」個目でストップとなります。
引数1が書かれない場合、0スタートとなり、0からカウントして「引数2」個目でストップとなります。
※個数というところがポイントです。0からカウントするので引数2を100にすると、99までしか処理が行われません。
引数3は書いてもかかなくてもいいのですが、例えば引数3に2を書くと、+2で処理が行われ、引数3が3だと+3で処理が行われます。

また、引数3にマイナスの値を書いた場合、マイナス方向に値が用意されます。

では、いくつか練習をしてみましょう。

問題1
0から6までの数をrange関数で出力してみましょう。


for i in range(7):
    print(i)
【出力結果】
0
1
2
3
4
5
6

ちなみに、改行せずに数字を出力したい場合はprint(i,end=””)と書くと、0123456と改行なしで出力されます。

問題2
2から20までの数をrange関数で出力してみましょう。


for i in range(2,21):
    print(i,end=””)
【出力結果】
234567891011121314151617181920

問題3
3から30までの数のうち、3の倍数をrange関数で出力してみましょう。


for i in range(3,31,3):
    print(i,end=””)
【出力結果】
36912151821242730

問題4
20から-5までの数をrange関数で出力してみましょう。


for i in range(20,-6,-1):
    print(i,end=””)
【出力結果】
20191817161514131211109876543210-1-2-3-4-5

どうだったでしょうか?

掴めるまで、自分で問題の数字等を変えて、繰り返し練習してみてください。プログラミング学習は自分で使ってみて、ある程度使いこなせるようになれば、ほぼ習得できたといえます。

リストを使ったループ処理

ループ処理をする時に、range関数と同じくらいよく使うのが、リストを利用したループ処理です。

リストについては、じゃんけんプログラムを作った際に触れましたが、ここで復習がてら、もう1回説明します。
→過去記事はコチラ(Pythonでじゃんけんプログラムを作ろう)

リストは整数型、あるいは数値型等の同じ型を複数格納できるいわゆるルーズリーフのようなものです。


ルーズリーフに閉じられた1頁1頁を順に取り出して、同じ処理を走らせるようなイメージです。

では、試しに処理を書いてみます。

growing = [“ノンストップ飯田”.”https:nonstop-iida-blog.com”.”Python入門講座”] for i in growing :
    print(i+”、サイコーです!”)
【出力結果】
ノンストップ飯田、サイコーです!
https:nonstop-iida-blog.com、サイコーです!
Python入門講座、サイコーです!

別に洗脳しようとしているわけではありません(笑)

こんな感じで、リストから1つ1つ値を取り出しては、せっせと処理をしてくれるわけです。

健気ですよねー!

append関数を使ってループ処理でリストに値を格納

リストに格納を行うappendという関数があり、これもループ処理と組み合わせると非常に便利です。

※リスト.append(値)という記載で括弧内の値がリストに格納されます。

例)1から100までの整数をリストに格納する場合

#まず空のリストを用意する

list_1=[]

#ループ処理で1から100までの整数をリストに追加
for i in range(1,101):
    list_1.append(i)

#追加したあとの、リストを出力
print(list_1)

del関数を使ってリストに格納されている値を削除

今度は反対にdel関数という要素を削除する関数を使ってリストから値を削除してみましょう。
※del リスト[i]という書き方で、リストのi番目の要素を削除します。
例)先程1から100まで格納したリストから、要素を全て消す。

for i in range(101):
    del list_1[0]

100回、リストの要素1番目を消し続ける処理を行うことで、リストの中身が空っぽとなります。

習問題

では、これまで学んだ内容をもとに実際に、ループ処理を使って答えを出力してみてください。
シェルで作業しても、IDLEでファイル作成・保存してからの実行、どちらでもOKです。

問題1
10までの整数のうち、2の倍数のみを出力する


for i in range(0,11,2):
    print(i,end=””)
【出力結果】
0246810

問題2
50から80までの整数のうち、5の倍数のみを出力する


for i in range(50,81,5):
    print(i,end=””)
【出力結果】
50556065707580

問題3
20から-20までの整数を出力する


for i in range(20,-21,-1):
    print(i,end=””)
【出力結果】
20191817161514131211109876543210-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20

問題4
リストに埼玉、神奈川、千葉、茨城、群馬を格納し、全て県をつけて出力する


list = [“埼玉”,”神奈川”,”千葉”,”茨城”,”群馬”]      for i in list:
    print(i + “県”)
【出力結果】
埼玉県
     神奈川県
     千葉県
     茨城県
     群馬県

問題5
リストに5から25までの値を格納し、出力する


list = []      for i in range(5,26)
    list.append(i)
print(list)
【出力結果】
[5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]

問題6
問題5のリストの要素をリストから取り出して、全て出力する


for i in list:
    print(i,end=””)
【出力結果】
5678910111213141516171819202122232425

問題7
問題5のリストから要素を全て削除する


for i in range(21):
    del list[0] print(list)
【出力結果】
[]

繰り返し、練習してみてください!!
次回は同じループ処理ですが、Whileという構文を覚えていきましょう。

↓飯田は今手元にこの本を置きながら、勉強したりこの記事を書いています。