In earlier article,you learned about different python errors. In this article, we will talk about how to debug those errors. There are several techniques, but we will discuss some practical ways to fix errors in python programs.
Types of Debugging in Python
Three types of debugging technique that you can employ in python programming are:
- Print debugging technique
- Scope debugging technique
- Squeeze Debugging technique
You can use any or all other methods mentioned above in your python programming. The ultimate goal should be to fix the error.
print debugging is a technique that you can use to add extra lines of code usually a print statement to check the status of variables or block of code in python program. Consider the following example.
principal = 25000 rate = 0.12 time_in_year = 3 simple_interest = principal * rate * time_in_year total_amount = principle + simple_interest + simple_interest print(total_amount)
In the program above, there is no error. However, the program does a mistake of adding
simple_interest two times resulting in
total_amount. That is incorrect.
To debug the incorrect result error, you need to check the value of simple_interest using a
print statement.See the modified code below.
principal = 25000 rate = 0.12 time_in_year = 3 simple_interest = principal * rate * time_in_year print(simple_interest) total_amount = principle + simple_interest print(total_amount) ## Output following 9000 34000
Now the, you can correct the code and output should be 34000 after removing the second simple_interest in the code.
The error or the problem might be in a block of code resulting in a wrong output. Add print debugging and scope debugging to debug your program block by block would be a good idea.
In the following example, we are trying to take average of a list of marks for a student. There is an error in for loop that results in incorrect output, therefore, we are using both print debugging and scope debugging.
myMarks = [23,55,66,52,99] # get the total marks of the student sum = 0 # get the number of subjects count = 0 for mark in myMarks: sum = mark count = count + 1 print(sum/count)
The program prints following output which does not seems right. The value of average is too low.
================ RESTART: C:/Python_projects/Average_Marks.py ================ 19.8
We need to add a print statement above the
for loop and inside the block to check the difference. This is
scope debugging because we are checking the block separately. See the modified version of the program below.
myMarks = [23,55,66,52,99] # get the total marks of the student sum = 0 # get the number of subjects count = 0 print(sum) for mark in myMarks: sum = mark print(sum) count = count + 1 print(sum/count)
After running the program again, we get following outputs.
================ RESTART: C:/Python_projects/Average_Marks.py ================ 0 23 55 66 52 99 19.8 >>>
The sum variable starts with 0 and then enters the loop. It is not incrementing each time a new iteration starts. The final average is 19.8 which is incorrect. To fix the problem we have to add the previous
sum to the
new sum at each iteration.
myMarks = [23,55,66,52,99] # get the total marks of the student sum = 0 # get the number of subjects count = 0 for mark in myMarks: sum = sum + mark count = count + 1 print(sum/count)
Now, we will get the correct output as follows.
================ RESTART: C:/Python_projects/Average_Marks.py ================ 59.0 >>>
Note: make sure that you remove all the debugging print statements before saving your program for the final time.
Sometimes that programs are large and complex and using print debugging or scope debugging is not enough. The squeeze debugging technique uses a method of solving the logical programming problem by explaining the logic in detail.
When explain the problem and each step of the program in detail, it gives you opportunity to check your program in-depth and debug it completely. Later, you can combine other debugging methods to solve an error in the program.
Python Programming: Using Problem Solving Approach
Python Programming is designed as a textbook to fulfil the requirements of the first-level course in Python programming. It is suited for undergraduate degree students of computer science engineering, information technology as well as computer applications. This book will enable students to apply the Python programming concepts in solving real-world problems. The book begins with an introduction to computers, problem solving approaches, programming languages, object oriented programming and Python programming. Separate chapters dealing with the important constructs of Python language such as control statements, functions, strings, files, data structures, classes and objects, inheritance, operator overloading and exceptions are provided in the book. Each chapter ends with objective-type questions, review questions, programming and debugging exercises to facilitate revision and practice of concepts learnt.