
photo credit: melystu Mobility Loop via photopin (license)
みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
一般ビジネスマンの初心者向けフォルダを操作するツールを作りながらPythonの基本を学ぶシリーズです。
前回の記事はコチラ。
Pythonのos.mkdir関数を使ってフォルダを作成する方法についてお伝えします。
一応、5つのフォルダを作成したのですが、これが10個、100個、…とその数が増えていったときには、何十行も書くのは面倒です。
そんな時に力を発揮するのが繰り返し処理です。
今回は、Pythonプログラミングにおける繰り返しの基本中の基本、forループ文の作り方についてお伝えします。
前回のおさらい
では、まず前回のおさらいから。
作成したプログラムがこちらです
import os os.mkdir('10_アフリカ') os.mkdir('20_アメリカ') os.mkdir('30_アジア') os.mkdir('40_ヨーロッパ') os.mkdir('50_オセアニア')
os.mkdir関数を使って、フォルダを5つ作っていますね。
ですが、スマートじゃないですね。
いつもこの5つが作りたいならいいですが、別のやつが増えたり、100個作りたかったりしたら、これでは手に負えないですね。
少しずつパワーアップをしていきますよ!
forループとrange関数による繰り返し
まず、数をたくさん作ること、そうですね…奮発して100個作ることを目指していきましょう。
それでいうと、プログラミングが大得意な繰り返し処理です。
Pythonで一定の回数だけ繰り返し処理を行うにはforループとrange関数を使います。
書き方はこうです。
# 処理
forループの仕組みについて順を追って説明しましょう。
- まず、forの後の変数に、range関数の引数として指定した開始値が格納されます。開始値は省略することができ、その場合は0となります。
- 変数の値が終了値に達するまで繰り返し処理がなされます。
- 1回の処理で変数の値はステップ分だけ増えます。ステップは省略することができ、その場合は1です。
- 繰り返しのたびに、インデント(字下げ)されたブロックが実行されます。
インデントがブロックを表すなんて、Python…ほんと素敵です。
forループの最も簡単な例
では、簡単な例を見てみましょう。
以下コードを実行してみてください。なお、インデントは Tab キーで入れることができますよ。
for i in range(5): print(i)
Shellウィンドウにこのように出力されると思います。
range関数の開始値は省略しているので0、終了値は5、ステップは省略しているので1です。
ここで注意すべきは、終了値は5なのですが、出力は4までですね。終了値にちょうど達した時点では処理を行わずにループを終了しますので、注意くださいね。
forループでフォルダをいっぱい作ってみよう
ひとまず、フォルダ名はちょっと横に置いておけるのであれば、forループでフォルダを大量に作ることができますね。
例えばこんなプログラムです。(100個と言ったのですが、ちょっと試しにということで、まずはヒヨって5個からです…汗)
import os for i in range(5): os.mkdir(i)
はい、実行!
…「TypeError: mkdir: path should be string, bytes or os.PathLike, not int」
パスは文字列じゃないとだめだよ
ということが言いたいのでしょう。
str関数で数値を文字列に変換する
変数iの値は数値です。そして、mkdir関数の引数であるパスは文字列でないといけないということですね。
例えば、以下のコードをShellウィンドウで実行してみてください。
>>> print('数値は' + 5)
「TypeError: must be str, not int」と怒られちゃうと思います。
+演算子は文字列連結演算子です。ですが、片っぽが数値なのでダメよと怒られちゃいます。
Pythonはデータ型しっかりしてます。
そこで、数値型の値を文字列型に変換するためにstr関数というものがあります。
以下のコードをShellウィンドウで実行してみてください。
>>> print('数値は' + str(3))
こちらなら「数値は3」と出力がされます。
指定した数だけフォルダを作る
では、このstr関数を使って、フォルダ作成プログラムを変更してみましょう。
こちらですね。
import os for i in range(5): os.mkdir(str(i))
これでOK。では実行してみましょう。
ばっちり、作業フォルダに5つフォルダができていますね。
あ、もちろんrange関数の終了値を100にすれば、100個のフォルダ作れますよ。
ただ…フォルダ名が。ま、これは次回のお楽しみということで。
まとめ
Pythonプログラミングの基本として繰り返しを行うforループの使い方についてお伝えしました。
forループの使い方に関しては他のプログラミングと比較すると
- forブロックをインデントで表現する
- range関数を使う
といったところがPythonの特徴ですね。
また、数値を文字列に変換するstr関数も大事そうです。
次回、リストを使ってフォルダ名も指定できるようにしていきます。
どうぞお楽しみに!