【 Python 】繰り返し処理(for文編)

今回は繰り返し処理についての記事です。

繰り返し処理はループとも言われ、条件分岐(if文)と並び、非常に重要なメソッドになります。

[st-mybox title=”ポイント” fontawesome=”fa-check-circle” color=”#FFD54F” bordercolor=”#FFD54F” bgcolor=”#FFFDE7″ borderwidth=”2″ borderradius=”5″ titleweight=”bold”]「メソッド」は処理のことです。[/st-mybox]

まずはこれを・・・

まずは、以下のコードをIDLEに保存し、実行してみてください。

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]for a in range(10):

print (a)[/python][/st-mybox]

実行結果が0~9まで10行表示されましたね。

[st-mybox title=”1行目” fontawesome=”” color=”#757575″ bordercolor=”#ccc” bgcolor=”#ffffff” borderwidth=”2″ borderradius=”2″ titleweight=”bold”]
for a in range(10):
[st-marumozi fontawesome=”” bgcolor=”#F48FB1″ color=”#fff” radius=”30″ margin=”0 10px 0 0″]日本語訳:[/st-marumozi]

変数aに1ずつ足し、10回インデント内を繰り返しなさい。です。
[/st-mybox]

では、次のコードを実行してみてください。

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]for a in range(10):

print("変数aの",a+1,"回目")

for b in range (10):

print(a+1,"の",b+1,"回目")[/python][/st-mybox] [st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]Pythonでは「c=c+1」を「c+=1」と書けば同じ処理をしてくれるヨ![/st-cmemo]

100行表示されて、変数aと変数bの関係がわかったのではないでしょうか?

このようにfor文の中にfor文を入れて繰り返す処理を多重ループと言います。

今の場合、2重ですが、もちろん3重、4重もできます。

多重ループを重ねると、設定値をミスってしまい、ずっとにループし続ける永久ループが発生させてしまうことがあります。

IDLEでは、「ctrlキー+c」で止めることができるので焦らないでくださいね。

また、Pythonでは他の言語とは違い、{}内に処理を書き込みません。

そうなると、「え?どの中を繰り返すの?」と疑問に思う方もいるかも知れません。

その答えは、繰り返すのはインデント内です。

[st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]メソッドAのインデントの中にメソッドA’を入れることを「入れ子」や「ネスト」と呼んでいます。[/st-cmemo] [st-mybox title=”for文の基本構文” fontawesome=”fa-check-circle” color=”#FFD54F” bordercolor=”#FFD54F” bgcolor=”#FFFDE7″ borderwidth=”2″ borderradius=”5″ titleweight=”bold”]for 変数 in イテラブル・オブジェクト:
(インデント)繰り返すメソッド[/st-mybox]

イテラブル・オブジェクトについてはこちら。
[st-card-ex url=”https://cubkitson.net/2019/02/12/post-925″ target=”_blank” rel=”nofollow” label=”” name=”” bgcolor=”” color=”” readmore=”>>> NEXT”][/st-card-ex]

他の使い方も!

指定した回数を繰り返すfor文ですが、他の使い方もできます。

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]samplelist = ["わ","た","し","は","こ","な","ゆ","き","で","す"] # 配列

for a in samplelist:

print(a)[/python][/st-mybox]

これは、配列と呼ばれるもので、簡単に説明すると、samplelist[0]から順に、文字列型の箱を作って、その箱に1文字ずつ格納しています。
samplelist[0]の中は「わ」という文字列が格納され、
samplelist[1]の中には「た」が格納されて、
最終的にsamplelist[9]に最後の文字「す」が格納されます。

[st-card-ex url=”https://cubkitson.net/2019/02/13/post-932″ target=”_blank” rel=”nofollow” label=”” name=”” bgcolor=”” color=”” readmore=”>>> NEXT”][/st-card-ex]

for 変数 in 配列名:とすることで、変数には順番に配列が代入され、空の配列にたどり着くまでインデント内を繰り返し処理するようになります。

Pythonは多次元配列も可能なため、このfor文も覚えておいた方が良いでしょう。

例えば!

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]☆
☆☆
☆☆☆
☆☆☆☆
☆☆☆☆☆
☆☆☆☆☆☆
☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆
☆☆☆☆☆☆☆☆☆☆[/python][/st-mybox]

実行結果が、上記のように表示されるプログラムを作る場合、どのようなプログラムを組めばよいでしょうか?

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]print("☆")
print("☆☆")
print("☆☆☆")
print("☆☆☆☆")
print("☆☆☆☆☆")
print("☆☆☆☆☆☆")
print("☆☆☆☆☆☆☆")
print("☆☆☆☆☆☆☆☆")
print("☆☆☆☆☆☆☆☆☆")
print("☆☆☆☆☆☆☆☆☆☆")[/python][/st-mybox]

上記プログラムでも、問題なく同じ実行結果になります。

for分を使うと、こんな感じ。

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]star = "☆"

for i in range(10):

print (star * ( i + 1 ))[/python][/st-mybox]

starという変数に文字列型の”☆”を入れ、for文で10回ループ、ループ内に”☆”をi回分表示させるという至極単純なプログラムです。

[st-mybox title=”test.py” fontawesome=”fa-code” color=”#6bb6ff” bordercolor=”#ff6893″ bgcolor=”#ffffff” borderwidth=”2″ borderradius=”5″ titleweight=”bold”] [python highlight=”1,4,9″ collapse=”true” toolbar=”true”]for i in range(10):

print ("☆" * ( i + 1 ))[/python][/st-mybox]

当然ながら、これでも動きます。

[st-cmemo fontawesome=”fa-lightbulb-o” iconcolor=”#FFA726″ bgcolor=”#FFF3E0″ color=”#000000″ iconsize=”100″]3行目にi+1されている理由は、1回目のループ時のiの値は0だからだよ![/st-cmemo]

ループ処理は他にも!?

ループ処理は他にも存在します。

ある条件を満たすまで繰り返す「while文」です。

for文が一定回数ループさせる処理ですが、while文は、条件を満たすまで繰り返すというif文とfor文を混ぜ合わせたようなイメージです。

最後に

いかがでしたでしょうか。

ループ処理が重なると、非常に複雑になってきます。

フローチャートを作るとスッキリ整理できるようになります。

最初はメモ程度でいいので、フローチャートを作ってそのとおり処理させて練習しましょう。

最後までお読みいただき、ありがとうございました。