On 08/07/2010 05:36 AM, Ryan Kelly wrote: > On Fri, 2010-08-06 at 22:05 -0500, Default User wrote: >> >From "the emperor's new clothes" department: >> >> 1) Why do Python lists start with element [0], instead of element >> [1]? "Common sense" would seem to suggest that lists should start >> with [1]. >
> "Common sense" is wrong. There are many compelling advantages to > numbering from zero instead of one: > > http://lambda-the-ultimate.org/node/1950 It makes sense in assembly language and even in many byte code languages. It makes sense if you look at the internal representation of unsigned numbers (which might become an index) For a complete beginner common sense dictates differently and there might be confusion why the second element in a list has index 1. However I seriously doubt, that this is a real problem. You learn things like this on the first day of learning a programming language. > >> 2) In Python 3, why is print a function only, so that: print "Hello, >> World" is not okay, but it must be print("Hello, World") instead? >> (Yeah, I know: picky, picky . . . ) > > The real question is, why was print so special in Python 2 that is can > be called without parentheses? The answer was "no reason" and it was > fixed in Python 3 to be consistent with the rest of the language. > >> 3) In Python 3, why does 2.0 / 3.0 display as 0.6666666666666666, but >> 8 * 3.57 displays as 28.56 (rounded off to 2 decimal places)? And >> yet, in Python 2.6, 8 * 3.57 displays as 28.559999999999999? > > Because the code for displaying floats was improved in python 3. You > can follow the fascinating discussion on issue 7117: > > http://bugs.python.org/issue7117 > > I can't defend the rounding issues of floating point numbers in general > - it's just "one of those things" that you have to deal with. But show > me a language where floats don't have this problem. > >> And we wonder why kids don't want to learn to program. > I did not see the original post, but this statement sounds rather trollish to me. It might just be, that you can do so many things on a computer without having to program. Watching youtube or browsing the web, chatting about favourite PC games, the amount of SW, that you can download for almost every task make it much less attractive to write own programs. When my parents had their first computer there were very little games and PC's weren't connected to the net. so if I wanted to play with the computer I had mostly the choice between the games called: - basic - pascal - word star - super calc Syntax details are barely a reason to frighten children. children start very often with typing in small programs without understanding them, lookin at the results and changing what they believe to understand. Non native english speakers can write programs, before they even knew what the english words 'if' 'else' 'while' 'list' mean. They don't care. They learn that if 'starts' a condition and that 'else' is the beginning of the section to be executed if the condition is not true. > Yeah, obscure language warts, that must be the reason. > > Note to self: DNFTT... > > > Ryan > -- http://mail.python.org/mailman/listinfo/python-list