【Python勉強会】1つの.pyファイルで練習問題を解く効率的な方法

どうも!リョクちゃです!

今回は、プログラミングの上達において練習問題を解くことって大事ですよね。

皆さんは、練習問題を解くとき、どのように解かれていますか?

「練習問題ごとに1つの.pyファイルを作って」解かれるのが、一般的ではないでしょうか?

ある時までは、筆者もそうでした。

これって、練習問題が多いと、後々の管理って大変なんですよ……。

練習問題を解いているときは、特に気にならないんですが、後日……

ファイル整理などしようとするときに、ファイル数が多いことで発狂してしまいますね。

※練習問題が決まったフォルダに入っていれば、フォルダごと削除してしまえばいいのですが

それも非効率ですよね。

そんな時に、どうしたらいいか?

1つのファイルで練習問題を管理すればいいじゃないか!

ということで、1つのファイルで練習問題を管理する方法を紹介していきます。

ちなみに前回はこちら

SeleniumとPandasを活用して、Web上に表示されるテーブルデータ(以下、表)を取得してExcelに出力する方法を簡単に紹介しています。Web上の表を簡単に取得してExcelで保存してみたいというニーズがあるのであれば、参考にしていただけたらと思います。

1つのpyファイルで練習問題を管理

まず筆者の環境は、VSCodeをメインで使っています。

そのため、本記事はVSCodeを基に進めていきます。

以降は、練習問題を解いていくうえで、ファイルを作成し、

実際に手順を追って説明します。

今回、練習問題で使用させていただくサイトは、こちらになります。

【python3.x】 練習問題55本ノック【問題のみ】

ありがとうございます。

スポンサーリンク




練習問題用にpyファイルを作成

それでは、VSCodeを起動します。

起動したら、メインで使用されているワークスペースもしくはサブのワークスペースに

練習問題用のフォルダをローカルの適当な場所に作成しておき、追加しておきます。

筆者の場合、Eドライブに”Practice”フォルダを作成し、

このフォルダをワークスペースに追加しています。

追加出来たら、Practiceに今回、対象となる練習問題用のファイルを新たに作成します。

今回は、「python_55.py」という名前のファイルを作成しました。

作成出来たら、pyファイルに練習問題を解くコードを書いていきます。

練習問題を効率的に解く

効率的にファイルを管理する上で、1つのファイルで行うといいました。

例えば、下図の問題を解くとき、皆さんなら、どうやってファイルに書いていきますか?

普通に解く

まずは、普通に解くため、書いていきます。

このようになります。これを、一度にすべて実行すると、

print()の()の中が期待する出力として、出力されるのですが、

1つの問題を見たいとき、例えば、1.変数の期待する出力だけを見たいとき

この場合、2,3はコメントアウトしなくてはいけません。

これって、いちいちコメントアウトしないといけないので大変ですね。

練習問題に従うので、あまり気にはしませんが、汎用性も持たせたくなりませんか?

変数に直接値を代入するのではなく、

必要に応じて値を変えて出力がどうなるかも気になりますよね。

関数を駆使して解く

こんな時に汎用性を持たせた効率的に解く方法として、関数を使うことが挙げられます。

例えば、先ほどの問題を関数を駆使して、手を加えると、

こんな風に、書き換えることができます。

どうでしょう。

関数に書き換えることで、関数を呼び出すときに好きな値でテストをすることが

できるようになります。

また、呼び出すだけで、ソースをコメントアウトすることはなくなります。

呼び出したい関数を変える時に場合によっては、コメントアウトするかもしれないですね。

では、1.変数の問題を呼びだしてみます。

このようになります。この、メイン処理に練習問題を関数化し、呼び出すことで

好きな練習問題を呼び出せます。また同じ変数を使うことも可能です。

関数内で使う場合、変数の適用範囲が異なるため。

筆者的にはやみくもに練習問題のソースを書いては、コメントアウトをするのではなく

関数を使って、練習問題を解くようにするのが気に入っています。

関数化の場合に、Docstringを残す

ただ練習問題を関数化するのではなく、わかりやすいように説明を残しておきます。

VSCodeでは、拡張機能をインストールすることで、便利に使える機能が充実しています。

説明に関しては、Docstringを使います。

これは、関数などの仕様を説明するために定義に基づいて記述する記法になります。

Pythonでは、”””(トリプルクォート文字列)を関数内で打ち込むことで、

生成することができます。

また、これを便利に定義されたテンプレートを呼び出せる拡張機能が、

VSCodeではあります。

それが、「autoDocstring – Python Docstring Generator」になります。

これをインストールしておくことで、定義されたDocstringを呼び出すことができます。

使い方は、

関数内で、”””(トリプルクウォート)を打つと、「Generate Docstring」と出てくるので、

選択して、Enterキーを押します。

すると、以下のようにDocstringが生成されます。

練習問題用の関数では、

  • summary ⇒ 問題文を載せておきます。
  • Args ⇒ 引数の説明を載せておきます。

を載せておくことで、わかりやすく且つ練習問題の管理がしやすくなります。

このように記述することで、練習問題の整理ができ、1つ1つ用意するよりも

分かりやすくなるのではないかと思います。

全ての練習問題(3問)に対して、Docstringを整備すると以下のようになります。

まとめ

練習問題を解く際に、1つ1つファイルを作成するのではなく、1つのファイルで

練習問題を関数化してしまうのが、後々効率的かなということで紹介しました。

少しでもご参考になれば、嬉しいです。

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

・こちらの書籍を参考にPythonの理解を深めました。

スポンサーリンク