import math error
Ian Kelly
ian.g.kelly at gmail.com
Sun Nov 16 22:41:23 CET 2014
On Sun, Nov 16, 2014 at 1:07 PM, ryguy7272 <ryanshuell at gmail.com> wrote:
> When I type 'import math', it seems like my Python recognizes this library. Great. When I try to run the following script, I get an error, which suggests (to me) the math library is not working correctly.
>
> Script:
> import math
> def main():
> print "This program finds the real solutions to a quadratic"
> print
> a, b, c = input("Please enter the coefficients (a, b, c): ")
> discRoot = math.sqrt(b * b - 4 * a * c)
> root1 = (-b + discRoot) / (2 * a)
> root2 = (-b - discRoot) / (2 * a)
> print
> print "The solutions are:", root1, root2
> main()
>
> Error:
> Traceback (most recent call last):
> File "C:\Users\Ryan\Desktop\QuadraticEquation.py", line 11, in <module>
> main()
> File "C:\Users\Ryan\Desktop\QuadraticEquation.py", line 5, in main
> a, b, c = input("Please enter the coefficients (a, b, c): ")
> File "<string>", line 1
> (1,1,2):
> ^
> SyntaxError: unexpected EOF while parsing
>
> The last line is line 11. It seems like I need this, but that's what's causing the error. Does anyone here have any idea what is wrong here?
This has nothing to do with the math module. You're using input() in
Python 2, which is equivalent to eval(raw_input()). Because of the
eval, the string that is entered needs to be a valid Python
expression. You apparently entered "(1,1,2):" which is not a valid
Python expression because of the colon.
By the way, general use of the Python 2 input and eval functions are
strongly discouraged because they can lead to execution of arbitrary
code when given untrusted input. The recommended approach is to use
raw_input() instead (which is renamed to just input() in Python 3) and
then parse the input properly without resorting to eval. For example,
the above could be written as something like:
coeff_str = raw_input("Please enter the coefficients a, b, c:")
a, b, c = map(float, coeff_str.split(','))
More information about the Python-list
mailing list