見出し画像

[Python]PyGradeをやってみた

今回は、PyGradeというWeb上のPythonトレーニングアプリをやってみた感想を書きました。

そもそもの始まりは

2019年10月頃から、ノンプロ研でプログラミング等の勉強をしています。

そのノンプロ研のSlackで@celaeno4 さんからPyGradeの紹介があったので、試しにやってみました。

PyGradeについて

PyGradeは、Pythonのスキルをトレーニング / テストするためのツールです。(PyGradeサイトより引用)
以下からアクセス可能です。詳しい説明もここに載っています。

https://www.pygrade.com/?lang=ja

このサイトにあるトレーニング(全40問)は無償で受けられます。少しやってみたら結構面白かったので、結局最後までやりきってしまいました。

出題形式は、InputとOutput期待値が表示されて、Inputを引数とし、Outputをreturnする関数をPythonコードで記述していく感じです。コードを画面上に書いて実行ボタンを押すと、実行結果が表示されて採点結果が出ます。正解なら「✓」不正解なら「X」が表示されます。

問題の内容は、リスト処理、文字列処理のようなPythonの基本文法もありますが、NumPyでの行列処理が多いイメージです。ほとんどの問題は1行で実現できる程度の短いもので、知っていれば1問10秒程度でサクサク解いていけます。

このトレーニングの最大の特徴は、コードの文字数上限が決められていることです。Outputが正解でも、文字数制限を1文字でも超えると不正解になります。

Pythonは、同じ処理でも色々な書き方が可能ですが、このトレーニングは文字数の制限が厳しいため、答えは実質ほぼ一つに絞られます。組み込み型のメソッド、リストのスライス操作、内包表記、NumPyの関数やメソッドを駆使しないと正解できないようになっています。

やってみた感想

レベル的にはPythonの基本的な所を一通り学んだくらいの初学者にはちょうど良いと思われます。私はPythonの基本を学んだだけで、NumPyについてはまだ学んでなかったので、NumPyはネットで調べながら少しずつ進めていきました。これからデータ分析系の本で勉強しようと思っていたので、ちょうどいい勉強になりました。

トレーニングはパズルをどんどん解いていく感じで楽しいです。
文字数を如何に少なく書くのがポイントなので、ワンライナー好きの人にはたまらないかも。

ただ、たまに文字数制限で正解が出せずにハマります。個人的には、どうしても分からなかったら文字数制限には拘らずに、同じことが実現できるコードが書ければ良いと思います。短いコードが読みやすいコードだとは限らないので。

NumPyを知らないと全問説くのは無理ですが、できない問題をスキップするのも可能ですので、Pythonで腕試しをしたい方はぜひ挑戦してみては如何でしょうか。

PyGradeチートシート

私が今回の問題を説くために勉強したNumPy等のまとめを以下ページにまとめています。(ネタバレあり注意)


最後まで読んで頂き、ありがとうございました。