[Tutor] specific recommendation for a Python book, to move from baby-level to intermediate-level

Alan Gauld alan.gauld at btinternet.com
Wed Feb 15 10:28:30 CET 2012

On 15/02/12 02:16, Tamar Osher wrote:

> I am hoping to find a professionally designed, serious, university level
> book (with exercises, with a learning disc, and answers, and an
> elaborately helpful website) that will carefully and surely guide me
> through learning computer programming with Python version 3. I want to
> be lifted up from a baby-level to an intermediate level.

I don;t know about a CD etc but its a good book:

Programming in Python 3 by Summerfield.

And as a general intermediate book I like

Programming Python by Lutz (not in v3 yet but as an
intermediate programmer that won't make any difference
to you, your past worrying about that)

> I don't want to spend a lot of time casually browsing through the
> websites, trying out different things.

A pity, its the best way to learn.

 > I am in a rush to become a Python expert, I need a job!

Go write lots of code.

> I enjoy computer programming. Python is my only programming language.

To get and keep a job you will need more than one.
As a minimum you will probably need SQL and nowadays
at least some JavaScript will be useful. And an OS shell
language would be useful too. As a minimum.

> A note to Python Teachers:
> I downloaded Python version 3.2.2 on my computer. Most Python books and
> tutorials are several years old, for older, outdated versions.

Yes, because to produce them takes a lot of time. And most online 
tutorials are done by volunteers with another lifew - the one that earns 
them money. So they can't write tutorials as fast as the language 
evolves. Or they only have time to write a tutorial once, not to update 
it. The good news is that Python is fairly stable and most things still 
work even from version 1.

> learning Python got off to a slow start: Initially, I had spent over a
> week trying to figure out the (version 2) tutorial for "Hello, World!",
> and the print/print() situation.

Really? If you had asked here. or even read the v3 documentation you 
would have had print()  explained in great detail.

> Today, there is a huge and growing number of online Python tutorials and
> websites. My request is that the list of recommended tutorials be
> revised and updated. There is a sizable amount of learning and tutorial
> info at Python.org that seems to be valuable historical information
> rather than urgent-read-now-tutorials for new beginning programmers.

Remember that many - most? - professional Python programmers are still 
using Python v2 not v3. There are still some critical third party 
libraries to be ported to v3. It is getting better but we are not there 
yet. At the very least they are maintaining v2 code. I use both versions 
but only about 20-25% of my time is spent in v3. v2 is not only of 
"historical" interest, its what the majority of Python code is written 
in, even today.

> instance, there are some very well written Python tutorials from years
> 2009, 2007, and 2005. An idea: Delete all references to tutorials that
> are not version 2 or 3.

v1 Python is possibly a valid point. But most v1 tutorials are still 
valid in v2, there was much less change from v1 to v2.

> And clearly label all the well-written version 2 tutorials, as
 > being outdated version 2.

Who determines what is "well written"? And if a tutorial is based on 
v2.7 is it really outdated?

> For me, learning computer programming is easy, so far.

That's good, so you will have realized that the language, and especially 
the language version is largely irrelevant. What is important is 
structure, algorithm, data and I/O.

> What is difficult is ...learning how to manage the
> difference between version 3.2.2 and older versions.

No, that's trivially easy. If you think that's difficult then you 
haven't begun to understand computer science. I strongly suggest you 
search for and read the classic paper by Fred Brooks called "No silver 
There he describes the "essential" problems at the heart of programming 
and why there are no easy answers. Languages included.

> For someone new to programming, the difference between version 3.2.2
 > and the older versions is enormous.

I agree and thats why I still tend to recommend a newcomer stick to v2 
for now. There are more tutorials and they are more mature and there are 
more practitioners using it than v3. All of which makes it easier to get 
answers for v2 than for v3. The situation is changing but v3 is not 
mainstream yet.

> please let me know. I want to quickly move myself from a baby-level to a
> capable, intermediate-level Python programmer.

It depends on your expectations but the quickest way to get competent in 
any programming language is through use. Once you have written several 
tens of thousands of lines of code you will be well on your way. But 
that will take quite a few months and that may not align with your 

Reading books will teach you the theory (but for that you would be 
better off reading books like The Structure and Interpretation of 
Computer Programs (aka SICP) by Sussman and How to Design Programs 
(HTDP). But both are in Scheme not Python. But they will transform your 
understanding of how programs work. And if you really want to understand 
the theory find books on relational data theory, state automata theory, 
algorithm development, and Lambda calculus.

Then finally you might want to look at some of the books on system 
design, especially as you get involved in bigger projects. Its hard to 
organise code over several hundred files unless you have an underlying 
architecture and that needs to be based on good design principles more 
than good coding principles.

But none of that is essential to becoming a working programmer, just get 
out and write lots of code for real world problems.

Alan G
Author of the Learn to Program web site

More information about the Tutor mailing list