エビデンスで教育を考えた

頭が良くなる科学論文を紹介していきます。お勧め商品は楽天ルームで!https://room.rakuten.co.jp/room_12b7a40f6d/items

今週のpython。本を写経するときの小技。

 

 

  相変わらずpythonの奮闘しております。

 

 今週はやってもやってもエラーが続き、かなり焦っておりました。

 

 pyhtonのいいところは、1行ごとに命令を出すので、どこでエラーが出たかがすぐわかります。(もちろん、初心者はこの後どう改善するかで悩むんですが)

 

 一方で、1たびエラーが出てしまうと、そこまで書いた部分の多くを書き直さなくてはなりません。恥ずかしいのですが、こんなエラーをしました。

 

 

>>> class block:
...     def update(self, count):
...             erased = 0
...             if is_overlapped(self.xpos, self.ypos + 1, self.turn):
...                     for y_offset in range(BLOCK.size):
...                             for x_offset in range(BLOCK.size):
...                                     if 0 <= self.xpos+x_offset < WIDTH and \
...                                             0 <= self.ypos+y_offset < HEIGHT:
...                                                     val = BLOCK.data[y_offset*BLOCK.size \
...                                                             + x_offset]
...                                                                     if val != 0:
  File "<stdin>", line 11
    if val != 0:
    ^
IndentationError: unexpected indent
>>> 

 

 単に行を開けすぎたのが原因なのですが、これを直すとき、もう一度class blockからやり直しのようです。defが1個だからよかったものの、最初は他のdefも入れてたので、もっと書き直ししてました。

 

 そこで最近思いついたのが、1つ1つ書いていくこと。どういうことかというと、

 

以前は

class block:
...     def update(self, count):

...     def1

...     def2

 

と書いていたんですが、こうではなく、

class block:

...     def1

class block:

...     def2

 

と書いてます。一見すると余計に書いていて美しくはないのですが、上の場合で途中エラーをするとdef1から描き直しなんですが、下の場合は、def2からの書き直しになるよう。リスクへッジみたい。

 

 

 このやり方が万人に当てはまるかどうかはなんとも言えんのですが、初学者が本を読んで写経するときは、そのまま鵜呑みにせずちょっと変えてみるのもいいかもしれません。