Section 2.13 Debugging
At this point, the syntax error you are most likely to make is an illegal variable name, like class
and yield
, which are keywords, or odd~job
and US$
, which contain illegal characters.
If you put a space in a variable name, Python thinks it is two operands without an operator:
Checkpoint 2.13.1.
csp-10-2-2: Which error will you get if you name a variable “bad name”?
NameError
No, a NameError occurs when a variable is used before it is defined.
SyntaxError
This error comes from bad input.
TypeError
No, a TypeError occurs when an operation or function is applied to an object of inappropriate type.
There will not be an error
No, this will cause an error - see above for an example.
For syntax errors, the error messages don't help much. The most common messages are SyntaxError: invalid syntax
and SyntaxError: invalid token
, neither of which is very informative.
The runtime error you are most likely to make is a “use before def;” that is, trying to use a variable before you have assigned a value. This can happen if you spell a variable name wrong:
Variables names are case sensitive, so LaTeX
is not the same as latex
.
At this point, the most likely cause of a semantic error is the order of operations. For example, to evaluate \(1 \over {2\pi }\) (which is .159), you might be tempted to write
But the division happens first, so you would get \(\pi \over 2\text{,}\) which is not the same thing! There is no way for Python to know what you meant to write, so in this case you don't get an error message; you just get the wrong answer. Try adding parentheses to the code above to return the correct answer.
Checkpoint 2.13.2.
Checkpoint 2.13.3.
csp-10-2-6: Which error will you get if you use the equation 1/2*3.14 instead of 1/(2*3.14)?
NameError
No, a NameError occurs when a variable is used before it is defined.
SyntaxError
No, a SyntaxError occurs when the program cannot understand a line of code.
TypeError
No, a TypeError occurs when an operation or function is applied to an object of inappropriate type.
There will not be an error
This will still compute, but will not return the expected result.