相変わらず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からの書き直しになるよう。リスクへッジみたい。
このやり方が万人に当てはまるかどうかはなんとも言えんのですが、初学者が本を読んで写経するときは、そのまま鵜呑みにせずちょっと変えてみるのもいいかもしれません。