メカエンジニアのためのプログラミング #003 バグ・エラー基礎

バグ・エラー基礎

Python でアプリ開発を行っているとよく遭遇するバグ・エラーを紹介する。
ちなみに、2つの違いは以下の通り。それぞれの代表的な項目と原因を記載する。

  • バグ: 意図しない挙動全般
  • エラー:文法的な間違い。プログラムを実行しようとしてもできない。

バグの例

  1. 仕様を満たしていない
    ex) サーマルプリンターでレシート発行が可能だが、桁数が少ない。
    原因:実装ミス
  2. 想定される特定の条件下で意図した挙動を示さない
    ex) 通常はレシートを発行できるが、USBの挿抜を5回、初期化コマンドを2回受け取ったときのみ、レシート発行不可能。
    原因:検証ミス
  3. そもそも想定されていない操作で操作不可能な状態に陥る。
    ex) 異なる2つのドライバー・2つのPCから同時にスクリプトを受け取る
    原因:例外処理の実装ミス(作り込みの不足)

主なエラー

  1. SyntaxError
    そもそもコードとして認識できないような間違え方をした場合に発生する。
    主に以下の原因が挙げられる。これらは通常のエディタでは発見できないのでVScode等を使うべし。
    原因1:全角のスペースが紛れ込んでいる。<<< 全角の文字は使用不可
    原因2:開いた括弧が閉じられていない。ex) print(“Hello World!”
    原因3:関数・型などの名前が間違っている。ex) flaot <<< 正しくはfloat
  2. NameError
    定義されていない変数を使用したときに発生する。
    ライブラリーをimportせずに使用しようとした場合にも発生する。
  3. TypeError
    演算(計算)できないようなコードが存在すると発生する。
    ex) a=1,b=”python”, c = a + b # 文字列と整数は足し算できない。

バグ・エラーの解決策

多くの場合、このページに書いてある情報が原因で、これを修正するだけでうまくいく。
なお、バグ・エラーの解決手段はググることである。
まずもって、解決策が存在しないということはない。

エラーを含むコードと正常なコードの比較

NameError: name 'np' is not defined
SyntaxError: unexpected EOF while parsing
TypeError: unsupported operand type(s) for +: 'int' and 'str'
NameError: name 'm' is not defined

なおエラーは実行時に最も最初にエラーになるもののみが表示される。
そのため上記の例でははじめのNameErrorのみが表示される。
これを修正して再度実行するとSyntaxErrorが表示され……、というようにエラがー複数ある場合には順次解決していく必要がある。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

トップに戻る