Re: Complex evaluation bug
Heiko Wundram wrote: Am Freitag 19 Mai 2006 18:03 schrieb Paul McGuire: An eval-less approach - the problem is the enclosing parens. snip I've just submitted two patches to the Python bugtracker at: http://sourceforge.net/tracker/index.php?func=detailaid=1491866group_id=5470atid=305470 which either change the repr() format (removing the parentheses), which I find doubtful, because it's not backwards-compatible, or alter the constructor to accept the repr() format for complex numbers (a bracketed number). Feel free to comment. --- Heiko. thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
Gary Herron a écrit : of wrote: a = 1+3j complex(str(a)) Why does this not work ? It should Says who? By normal conventions in Python, str attempts only to make a nice human readable representation. The function repr is usually expected to provide output that can be parsed back into the original object. (Although for the numeric complex type the two produce identical results.) Further, constructors are rarely expected to parse a string representation to return an object. The function eval is usually expected to provide that functionality. So, putting them together, you could expect eval(repr(a)) to reproduce a, and in fact it does so. Says who ? Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. repr(1+3j) '(1+3j)' complex(repr(1+3j)) Traceback (most recent call last): File stdin, line 1, in ? ValueError: complex() arg is a malformed string -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
Christophe wrote: So, putting them together, you could expect eval(repr(a)) to reproduce a, and in fact it does so. Says who ? Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. repr(1+3j) '(1+3j)' complex(repr(1+3j)) Traceback (most recent call last): File stdin, line 1, in ? ValueError: complex() arg is a malformed string in what language is eval spelled complex ? /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
Fredrik Lundh a écrit : Christophe wrote: So, putting them together, you could expect eval(repr(a)) to reproduce a, and in fact it does so. Says who ? Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on win32 Type help, copyright, credits or license for more information. repr(1+3j) '(1+3j)' complex(repr(1+3j)) Traceback (most recent call last): File stdin, line 1, in ? ValueError: complex() arg is a malformed string in what language is eval spelled complex ? /F Oups, I was too fast to read what was written. I though you only changed one of the terms ( str - repr ). You'll note that repr and str produce the exact same result for complex. And also, I'm not sure using eval anywhere is a good idea so it probably doesn't help for what the OP wants to do. -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
Christophe [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] snip Oups, I was too fast to read what was written. I though you only changed one of the terms ( str - repr ). You'll note that repr and str produce the exact same result for complex. And also, I'm not sure using eval anywhere is a good idea so it probably doesn't help for what the OP wants to do. An eval-less approach - the problem is the enclosing parens. a = 1+3j str(a) '(1+3j)' complex(str(a)) Traceback (most recent call last): File stdin, line 1, in ? ValueError: complex() arg is a malformed string complex(str(a)[1:-1]) (1+3j) complex(str(a).strip(())) (1+3j) -- Paul -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
Am Freitag 19 Mai 2006 18:03 schrieb Paul McGuire: An eval-less approach - the problem is the enclosing parens. snip I've just submitted two patches to the Python bugtracker at: http://sourceforge.net/tracker/index.php?func=detailaid=1491866group_id=5470atid=305470 which either change the repr() format (removing the parentheses), which I find doubtful, because it's not backwards-compatible, or alter the constructor to accept the repr() format for complex numbers (a bracketed number). Feel free to comment. --- Heiko. -- http://mail.python.org/mailman/listinfo/python-list
Complex evaluation bug
a = 1+3j complex(str(a)) Why does this not work ? It should -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
I am not exactly sure what is going on, but I get the error: ValueError: complex() arg is a malformed string I think that it might be because the value of 'j' is not defined. But I am a newbie so I could very well be wrong. Brian Blazer [EMAIL PROTECTED] On May 18, 2006, at 11:36 AM, of wrote: a = 1+3j complex(str(a)) Why does this not work ? It should -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
of wrote: a = 1+3j complex(str(a)) Why does this not work ? It should Says who? By normal conventions in Python, str attempts only to make a nice human readable representation. The function repr is usually expected to provide output that can be parsed back into the original object. (Although for the numeric complex type the two produce identical results.) Further, constructors are rarely expected to parse a string representation to return an object. The function eval is usually expected to provide that functionality. So, putting them together, you could expect eval(repr(a)) to reproduce a, and in fact it does so. Gary Herron -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
py c = complex(1, 3) py print c (1+3j) py d = complex('1+3j') py print d (1+3j) py str(1+3j) '(1+3j)' complex takes two numbers, or a string representing a complex number. the string you supply isn't a representation of valid complex number. -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
of wrote: a = 1+3j complex(str(a)) Why does this not work ? It should It would be nice. Looks like str(1+3j) is returning an expression in string form. Maybe there is no actual complex literal. eval (str(1+3j)) works. Python 2.4.2 (#1, Jan 23 2006, 21:24:54) [GCC 3.3.4] on linux2 Type help, copyright, credits or license for more information. 1+3j (1+3j) str(1+3j) '(1+3j)' complex (str(1+3j)) Traceback (most recent call last): File stdin, line 1, in ? ValueError: complex() arg is a malformed string eval (str(1+3j)) (1+3j) eval(str(1+3j))**2 (-8+6j) -- http://mail.python.org/mailman/listinfo/python-list
Re: Complex evaluation bug
Mel Wilson [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] of wrote: a = 1+3j complex(str(a)) Why does this not work ? It should It would be nice. Looks like str(1+3j) is returning an expression in string form. Maybe there is no actual complex literal. The problem is that str(1+3j) emits a string enclosed in parens. Stripping them off makes the string acceptable to complex's constructor, without invoking eval. a = 1+3j str(a) '(1+3j)' complex(str(a)) Traceback (most recent call last): File stdin, line 1, in ? ValueError: complex() arg is a malformed string complex(str(a)[1:-1]) (1+3j) complex(str(a).strip(())) (1+3j) -- Paul -- http://mail.python.org/mailman/listinfo/python-list