We encourage you to adopt an interactive style of debugging and programming. Use the Python shell a lot. Write short pieces of code and check them. It is much simpler to test the individual parts as you go, rather than to take hours writing a large program, and then search it does not work, and must sift through all your program, trying to search the bugs.
But, if you ?nd yourself in the (inevitable) position of having a big program with a error in it, do not despair. Debugging a program does not require brilliance or creativity or much in the way of inside. What it needs is a systematic and persistence approach.
First of all, have a test case (a set of inputs to the procedure you are trying to debug) and know what the answer is considered to be. To check a program, you might start with some special cases: what if the argument is 0 or the empty function? Those cases may be simpler to sort through ?rst (and are also cases that can be easy to get worse). Then try more specific cases.
Now, if your program gets your test case incorrect, what could you do? Resist the temptation to start changing your program around, just to watch if that will ?x the solution. Do not modify any code until you know what is wrong with what you are doing now, and therefore seems that the modify you make is going to correct the problem.
Ultimately, for debugging large programs, it is most useful to use a software development environment with a serious debugger. But these methods may sometimes have a steep explaining curve, so in this class we will study to debug systematically using "print" statements.