O
of
a = 1+3j
complex(str(a))
Why does this not work ? It should
complex(str(a))
Why does this not work ? It should
Says who?of said:a = 1+3j
complex(str(a))
Why does this not work ? It should
of said:a = 1+3j
complex(str(a))
Why does this not work ? It should
Mel Wilson said:It would be nice.
Looks like str(1+3j) is returning an expression in string
form. Maybe there is no actual complex literal.
(1+3j)File said:complex(str(a)[1:-1]) (1+3j)
complex(str(a).strip("()"))
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.
Christophe said: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.Traceback (most recent call last):
Christophe said: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.Traceback (most recent call last):repr(1+3j) '(1+3j)'
complex(repr(1+3j))
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.
(1+3j)File said:complex(str(a)[1:-1]) (1+3j)
complex(str(a).strip("()"))
An eval-less approach - the problem is the enclosing parens.
<snip>
Heiko said:Am Freitag 19 Mai 2006 18:03 schrieb Paul McGuire:
I've just submitted two patches to the Python bugtracker at:
http://sourceforge.net/tracker/index.php?func=detail&aid=1491866&group_id=5470&atid=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.
Want to reply to this thread or ask your own question?
You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.