Easy function, please help.

Jason Swails 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('.',''))
>>
>>  Or:
>
> 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.
>>
>>  [snip]
> 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
point. </excuse>

-- 
> http://mail.python.org/mailman/listinfo/python-list
>



-- 
Jason M. Swails
Quantum Theory Project,
University of Florida
Ph.D. Graduate Student
352-392-4032
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20110210/18d195b0/attachment.html>


More information about the Python-list mailing list