Easy function, please help.
MRAB
python at mrabarnett.plus.com
Wed Feb 9 17:34:21 EST 2011
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. :-)
More information about the Python-list
mailing list