[Tutor] script comparing two values - ASCII encoding error
Mic Forster
micforster@yahoo.com
Wed Feb 26 21:49:02 2003
Hi Jeff,
What I sent you originally was all Python gave to me.
There was no traceback given. I also tried all your
suggestions below, including your personalised
function, but still to no avail.
Confused, Mic
--- Jeff Shannon <jeff@ccvcorp.com> wrote:
> Mic Forster wrote:
>
> >I repeated the code you recommended and had no
> >problem. All of the sudden this started happening:
> >
>
> I don't see offhand anything that should be causing
> a UnicodeError. Can
> you give us the complete traceback that you're
> getting? Those few lines
> that precede the "UnicodeError: ..." bit can tell us
> a lot about where
> your problem is...
>
> However, I'd like to point out one thing...
>
> >>>>def f(k, s):
> >>>>
> >>>>
> > return k / (1-k) * (1-k)**s / (1-(1-k)**s)
> >
>
> You should probably add some parens to this -- as it
> is, it could be
> read two different ways (depending on which has
> higher priority,
> multiplication or division -- I can't remember
> offhand which is higher
> priority, which says to me that relying on priority
> is a bad idea).
> Those two ways are:
>
> ( k / (1-k) ) * ( (1-k)**s / (1-(1-k)**s) )
> or
> k / ( (1-k) * (1-k)**s) / (1-(1-k)**s)
>
> I think the first is what you meant, but since I'm
> not certain which way
> Python will read it, I'd recommend being explicit
> about it.
>
> For that matter, your last subexpression,
> 1-(1-k)**s, is slightly vague
> too -- should that be (1-(1-k))**s, or
> 1-((1-k)**s)?? I'm pretty sure
> that Python will presume the latter, and I believe
> that that's what you
> want, but it never hurts to add parens to make it
> explicit. I'm a big
> fan of using lots of parens in complicated
> mathematical expressions --
> extra parens don't hurt, and may make the intended
> order more clear.
>
> I'm also a big fan of using intermediate variables
> to split complicated
> expressions into two or more lines, and I'd probably
> write the above
> function like this:
>
> def f(k, s):
> subterm = (1-k)**s
> return ( k / (1-k) ) * (subterm / (1-subterm) )
>
> This makes the function a little easier to read, and
> also emphasises the
> symmetry involved (and, as a side bonus, saves you
> time by calculating
> the exponent only once). Of course, this is really
> just a matter of
> taste...
>
> Jeff Shannon
> Technician/Programmer
> Credit International
>
>
>
> _______________________________________________
> Tutor maillist - Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
__________________________________________________
Do you Yahoo!?
Yahoo! Tax Center - forms, calculators, tips, more
http://taxes.yahoo.com/