python エラーが出ないバグの対処方 入門 

pythonの学び方
この記事は約3分で読めます。

初心者の頃コードの直し方は教えてくれませんが、現場ではその力こそ求められます

プログラミング講義でしか教えてくれない情報を無料で特別公開します

これからpythonでアプリ開発や案件受注バイトをしていきたい方必見です。

本日の伝えたいこと

✔ print解析で必ずバグは見つけ出せる

困ったこと

教本には、コードの書き方は乗っているが、バグのつぶし方は教えてくれず、

大規模プロジェクトでエラーがでると何をすれば良いかが分からない

具体的な方法

エラーが出ないバグの例

①変数の計算ミス

②if文の条件定義のミス

③インデントがずれている

解析方法

下記2STEPでの実施が基本になる。

元ファイルに対して対象のprintを書き加えることになるので、必ずファイルを

コピーしてファイルに影響がないようにしよう

①対象ファイルをコピーする

②各行の実行前にナンバリングをしたprint()を配置する

バグサンプルを使った練習方法

下記に典型的な代入ミスのバグがあるソースコードを準備した

・aの値が30を越えたらprintをしたいが出てこない。

・エラーは出ておらずバグの原因が分からない。

この時にprint解析の出番だ。

if文の前に関係する変数をprint()にて出力する

# -*- coding: utf-8 -*-

a = 1
cnt = 0
while (cnt < 40):
    #print解析を仕込む
    print(“[1]==>”, a)
    print(“[2]==>”, cnt)
    if(a > 30):
        print(“aの値が30を越えました”)
        #a = a + 1とすべきところをa = 1になっているバグ
    a = 1
    cnt = cnt + 1

[1]==>の出力値がずっと1になっていることが分かる。

想定ではここはaの変数だから1, 2, 3…と順に増えていくはず

この手がかりをもとにaに変数を代入している行を確認していくと

a = 1のバグが発見できる

# -*- coding: utf-8 -*-

a = 1
cnt = 0
while (cnt < 40):
    #print解析を仕込む
    print(“[1]==>”, a)
    print(“[2]==>”, cnt)
    if(a > 30):
        print(“aの値が30を越えました”)
    a = a + 1
    cnt = cnt + 1

バグを修正して正しく動作するようになった

まとめ

 エラーの出ないバグつぶしは、print解析が簡易な上に確実

タイトルとURLをコピーしました