Easy function, please help.
jason.swails at gmail.com
Thu Feb 10 06:03:00 CET 2011
On Wed, Feb 9, 2011 at 5:34 PM, MRAB <python at mrabarnett.plus.com> wrote:
> On 09/02/2011 21:42, Jason Swails wrote:
>> You've gotten several good explanations, mainly saying that 0 -> False
>> and not 0 -> True, which is why the while loop exits. You've also
>> gotten advice about how to make your method more robust (i.e. force
>> integer division).
>> However, as surprising as this may be I'm actually with RR on this one
>> (for a little) -- for code readability's sake, you should make your
>> conditional more readable (i.e. don't depend on the fact that the
>> iterations will take your test value down to 0 which conveniently in
>> this case evaluates to False). This could encourage you in later cases
>> to think that if this result eventually converged to a different number,
>> say the multiplicative identity instead, that the same approach will
>> work (when instead it'll dump you into an infinite loop).
>> You've also gotten the suggestion of typecasting to a string and then
>> looking at the number of characters in the string. This works fine for
>> integers and positive numbers, but not so well for negatives and floats,
>> since both the decimal and negative sign will be counted. You could
>> typecast to a string then strip out '-' and '.' and then count the
>> characters. i.e.
>> def num_digits(n):
>> return len(str(n).replace('-','').replace('.',''))
> def num_digits(n):
> return len(str(abs(n)).replace('.',''))
> Or typecast to an int if you want to neglect decimals before converting
>> to a string, etc.
> Python doesn't have typecasting. :-)
Because these basic types are not mutable? <excuse> Most of my work has to
be in Fortran, so I'm a relative newcomer to Python. When I don't need
Fortran-y performance it's much nicer (obviously to anyone that's used them
both)! Still don't know much deeper than Python's cosmetic surface at this
Jason M. Swails
Quantum Theory Project,
University of Florida
Ph.D. Graduate Student
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-list