アラフォーからのプログラミングとデザイン

大人から始めたプログラミングとデザインについてのあれこれ

Pythonで頻発するエラーの種類

f:id:simpledancer:20171104033510j:plain


頻発するエラーがAssersion Error

これ調べるとPythonではなくてJavaの説明がたくさん出てきました。

そもそもAssersion Errorってなんなんだよってことで(Rubyの時は出てこなかった)

 

Java 入門 | アサーション

アサーションは、プログラムの仕様をソースコードに明記するものです。具体的には、プログラムの実行時には発生し得ない場合を false とする boolean 式を含み、仮に false になるようなら java.lang.AssertionError を発生させます。AssertionError が発生する場合は、プログラムが予期しない動作を実行していることを示しています。当該行に制御が渡るまでに、なんらかのバグが作り込まれているということです。

Python入門 - 制御構文

Pythonの方で調べてみると

assert はテストの際に値が期待通りに設定されているかを確認するための仕組みです。__debug__ が True の時のみ動作し、式を評価して偽であれば、AssertionError例外を発生させます。python を -O オプション付きで起動することで、__debug__ の値は False になります。

こっちのほうがちょっとわかりやすいですね。

simpledancer.hatenablog.com

写経しても出てくるエラーの対処

とにかく、最初は意味わからなくても写経をしまくります。

なんかそのうちに文のリズムというか。あ、なんとなくこういう法則で書かれているのかっていうのがわかってきます。(もしかしたらこれって遅い学習方法かもしれないけど)

でも写経しても出てくるエラーが冒頭のアサーションエラー。

あとはinvalidって出てきます。

だいたいが{}とか回答の日本語が違う、とか spaceが一個足りないとか。

PyQでやると、一応実行はできるものの、判定を押すとエラーが出て先に進めない!

コードをコピーして貼り付けるのが一番早いので、問題の意味がわかれば、先に進めない時はこれで行ってしまいますが、コードをコピペすると結局どこが悪かったのかわからないので最終手段にします。

そしてインデントエラーが頻発します。これはとにかく他の言語では経験できないくらい頻発。ただ今までインデントってあまり意識せずにきてしまったので癖付けるっことができるのでいいのかな。(Pythonは;で括らずにfor文などはインデントがカッコ代わりになるのです。スペースがインデントで決まるというか)

simpledancer.hatenablog.com

いかんせんまだまだ勉強が滞りますが地道に。地道にやっていこうと思います。

あと、圧倒的に勉強量が少ないのでもう少しプログラミングの時間を増やしてあげないとと。。(思いながらもなかなかねえ。。。)