On 11 Jul 2009, at 03:15, Angus Rodgers <ang...@bigfoot.com> wrote:
Wesley Chun, /Core Python Programming/, Ex. 6-13:
"[...] An atoc() was never implemented in the string module, so
that is your task here. atoc() takes a single string as input,
a string representation of a complex number [...] and returns
the equivalent complex number object with the given value [...]"
<http://python.pastebin.com/d6f7c679f> (retention: 1 day)
<http://python.pastebin.com/d2ea157ff> (retention: 1 day)
(helper functions for user input)
The main functions are short enough to post here, I think, but
there are many explanatory and apologetic comments in the first
file above; also, I would welcome (with a grimace!) any comments
as to whether I am developing a cranky or baroque style (as I'm
working very much on my own, apart from whatever feedback I can
get here), and such misdemeanours are more likely to be noticed
in the second (and longer) of the two files above.
from string import whitespace
def no_spaces(str):
return ''.join([ch for ch in str if ch not in whitespace])
def atoc(num):
"""Convert string representation to complex number."""
num = no_spaces(num)
n = len(num)
if not n:
raise ValueError
# Ignore first character
for i, ch in enumerate(num[1:]):
if ch == 'j':
# Must be end of string, else invalid
if i != n - 2:
raise ValueError
return complex(0.0, float(num[:-1]))
if ch in '+-' and num[i] not in 'eE':
return complex(float(num[:i + 1]),
float(num[i + 1:-1]))
return complex(float(num), 0.0)
--
Angus Rodgers
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
This would probably be considered cheating, but there _is_ actually a
atoc() (of sorts) in the 2.6 stdlib. It's called ast.literal_eval().
It will take a string representing ANY python literal, and SAFELY
return it's value.
Why has no one here spoted this before?
---
Rich "RoadieRich" Lovely
There are 10 types of people in the world: those who know binary,
those who do not, and those who are off by one.
(Sent from my iPod - please allow me a few typos: it's a very small
keyboard)
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor