[EMAIL PROTECTED] wrote: >>>> f(01) > 43 >>>> f(02) > 44 >>>> f(010) > 50 >>>> 42+010 > 50 > > The first f(01) was a mistake. I accidentally forgot to delete the > zero, but to my suprise, it yielded the result I expected. So, I tried > it again, and viola, the right answer. So, I decided to really try and > throw it for a loop, f(010), and it produced 50. I expected 52 > (42+10). Why doesn't python ignore the first zero and produce a result > of 52? It ignored the first zero for f(01) and f(02). Hmm. I know, I > know, why am I sending it a 01,02, or a 010 to begin with? Like I > said, it was an accident, but now i'm curious. I'm not a computer > science major so please be kind with any explanations.
Python isn't ignoring the initial 0. It reads the initial 0 as indicating that the following number is expressed in octal. You can see this if you try any number with a digit higher than 7 in it: >>> 08 Traceback ( File "<interactive input>", line 1 08 ^ SyntaxError: invalid token So you get 8 added to your number when you write 010 because eight is spelled as 10 in octal. The leading-zero notation is unfortunate, and there has been some recent discussion[1][2] on python-dev about trying to change the prefix to ``0o`` or ``0c`` in Python 3.0 but for the moment at least it looks like we're stuck with the confusing leading zero. [1]http://mail.python.org/pipermail/python-dev/2006-January/060262.html [2]http://mail.python.org/pipermail/python-dev/2006-February/060277.html STeVe -- http://mail.python.org/mailman/listinfo/python-list