
Ask HN: What is your best way to learn Python programming language? - franca
I have no CS background. I want to learn Python as my first programming language.<p>So what&#x27;s the best way to learn it and maybe the fastest?
======
snvzz
I'm surprised nobody's pointed you to the official tutorial[1] yet. It is
decent.

[1]:
[https://docs.python.org/3/tutorial/](https://docs.python.org/3/tutorial/)

~~~
tedmiston
+1 to the official tutorial

I'd also recommend LPTHW [1] as complementary.

[1]: [https://learnpythonthehardway.org](https://learnpythonthehardway.org)

~~~
snvzz
Not free anymore, unfortunately.

I'm surprised they finally caved in and moved to python3. They were really
adamant against it.

------
atmosx
The book I would propose for newbies is "How to think like a computer
scientist" by Jeffrey Elkner, Peter Wentworth, Allen B. Downey and Chris
Meyers.

Last release is from 2012 and uses Python 3 and it is freely available under
GNU Free Documentation License.

Link:
[http://howtothink.readthedocs.io/en/latest/](http://howtothink.readthedocs.io/en/latest/)

------
CyberFonic
Python is an excellent first language to learn. Many universities around the
world now use it as the language by which to introducing programming both for
CS and non-CS students.

Depending on how you learn best, the following are 3 effective ways to learn:

From a book - one of the best books is Learning Python
([http://shop.oreilly.com/product/0636920028154.do](http://shop.oreilly.com/product/0636920028154.do))

From videos - you could search YouTube for a trainer who communicates in a way
that resonates for you.

By playing (and writing) games - PyGame is an excellent resource
([https://www.pygame.org/docs/tut/PygameIntro.html](https://www.pygame.org/docs/tut/PygameIntro.html))

Well written Python programs are like structured English, so they are not that
hard to read. Personally I would suggest PyGame as the most effectively way to
learn, but it really is a personal taste and preferences thing.

------
hluska
Why Python? I'm not arguing with you because it's a good first language, but
what do you want to accomplish? What do you want to do with Python??

~~~
franca
I want to build web apps, do data analysis and publish on Internet, and most
importantly it is most recommended language for beginners with lots of
resources available online. Do you recommend any other language to start with?
I am just curious to know how you learn the language, what you use books,
videos, project, or blog post? How you take notes (my hand starts paining
after sometime)? What is your framework of learning?

~~~
juststeve
maybe consider trying a static language?

~~~
hluska
What static language would you recommend? I figure the choices are basically
Java or C#. Of the two, I'd likely suggest that Java will be easier only
because I think beginners might find .Net a little large to dive into. But I
wouldn't call Java a particular compact language that would be good for
teaching someone to think like a programmer. What do you think?

~~~
tudelo
The worst language to teach someone as a first language has to be Java. It
also might be the worst language to teach someone as a second language.

~~~
hluska
Java gives me a rash, so writing that last comment took every last bit of
restraint I had.

But, I still can't come up with a static language that I'd want to teach
someone as a first language. C# would be a good choice, but I don't know how
much success a beginner would have with .Net. Typescript is hard to debug
unless you know Javascript. I wouldn't wish C++ as a first languge upon
anyone. Haskell seems like it would be very frustrating for a beginner. Swift
might be okay if they really badly wanted to go mobile, but that's not the
case here. Rust is the best I can come up with, though it seems like a tough
first language.

Do you have any ideas? I see the value of learning static first, but can't
come up with a good language!

~~~
tudelo
Well, I guess if your goal was to learn a statically typed programming
language Java or C# would be fine. So I don't disagree with you.

Personally, I have been in the role of teaching people programming, and I have
seen what Java does to them. And I remember what it was like when I first
encountered it.

So, I don't have a better suggestion if that is the goal. But if the goal is
to learn programming, I have plenty to say on that. I worked as a TA for 3
years and from my rather biased experience, I would highly recommend HtDP and
Racket.

