アメリカの大学で奮闘中

アメリカの大学でプログラミングを学ぶべくコンピューターサイエンス学部に留学したものの挫折し数学科に転部した著者が、自分の挫折ポイントを踏まえて数学、プログラミング、アルゴリズムついてできる限り分かりやすく解説してみるブログ。*できる限り記事の内容は技術的な間違いをしないように気をつけていますが、もし間違いがあれば教えていただけると助かります。

<勉強法>プログラミング上達法 by python

*この記事は実際にプログラミングを勉強しているけど上達しないといった初心者に向けて書いています。

さらに前提として実際にコードをかけるようになりたい人を対象にしています。

 

今回は自分が実践して有効だったプログラミング(python)の勉強法を紹介したいと思います。

 

あくまで。一大学生の体験談としてご覧いただき、使えそうなものがあれば自分でトライしてみて有効性を判断していただけると幸いです。

 

勉強法

ズバリ たくさん実験をするということです。

 

何かの構文をマスターしたいとき、何か疑問を思ったときに、実際に簡単なコードを書いて動くかどうか実験してみるんです。

例えば、forループを習ったとしたら

for i in range(3):

        print(i)

 

例えば、「もし辞書型のアブジェクトで存在しない鍵を使って値を得ようとしたらどうなるのか?」と疑問に思ったとします。

test = {"banana":2, "orange":3}

test["apple"]

 

 

簡単ないうのは地味に大切です。複雑なものを書いてしまうとエラーが出たとき修正が大変ですし、本当に理解したい場所が霞みます。あくまで自分のマスターしたいことや解決したいことにフォーカスしたコードを書くのが肝です。

 

 

この勉強をするメリットは主に3つあると思います。

 

1、覚えやすい

実際に手を動かすわけですし、もし何も見ずに書けば小テストにもなるので、教科書を眺めるより記憶しやすくなると思います。

 

 

2、飽きずに勉強をすることができます。

これは人によるかもですが、皆さんはprint("Hello World")のコードを書いて実際に表示されたときの感動しませんでしたか?(もし共感していただけるなら)この勉強法では実際に書いたコードが正しく実行されたときの達成感や満足感を味わいながら進めれるので、前に進んでいる実感があってモチベーションが続くと思います。

 

 

3、教科書では意識していなかったことにも気づける

上の例のアウトプットがどうなるか、皆さんはご存知ですか?

 

正解は

 

です。

僕はよく0からスタートすることを忘れてました。(リスト型を勉強してからは0から始まることにも違和感がなくなったけど。)

このように実際にコードを書いて実行してみることで、「これ、こーなってるんだー」って気づけることは多々あります。

 

また、疑問に感じた箇所を実際に実験することでも新しい発見があります。

上の2番目の例を実際に実行すると

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
test["apple"]
KeyError: 'apple'

このようなエラーメッセージを受け取り、KeyErrorというエラーの存在を知ることができます。

 

 

 

僕はこれらを実験するためだけにcurious.pyというpythonファイルを作ってデスクトップのわかりやすいところに配置しています。

(最近は文法を習うことはないので)実際のプログラミング課題で、ふと疑問に思ったときや自分の想定していないところでエラーが出たりしたときに、実験しながら解決したりしています。

 

例えば

alist =[3,5,6,7,8]
alist.pop(5)


IndexError: pop index out of range

 

が出たとしたら

あれなんで5が消えて[3,6,7,8]にならないんだ?ん?IndexErrorが出てる?

一回5じゃなくて他のインデックスになりうる数を入れてみよう

alist.pop(2)

print(alist)

 

[3,5, 7, 8]

6が消えた。6のインデックスって?あ2か。なるほどpopの後にはインデックスの番号を入れるんだね。ってことは要素をそのまま指定して消去できる組み込み関数ってなんだったっけ? よしGoogle先生に聞いてみよう

 

 

ってなるわけです。

まあ、この場合どう考えてもネットで検索した方が早いので、いい例とは言えませんが苦笑

 

 

ちなみに、エラーの解決の仕方の記事あります。

 

astrostory.hatenablog.com

 

 

 

 

もし皆さんの中で自分のプログラミングの解説に間違いを発見された場合はコメント欄で教えていただけると幸いです。

 

もし皆さんのプログラミングの勉強に1ミリでも役立てたら幸いです。