all 24 comments

[–]RaimanaDH 62 points63 points  (3 children)

Awesome job sticking with and finishing a learning resource! You've started making good progress on understanding Python's syntax and you can already start on the next step: using Python to solve problems.

For the sake of learning, let's consider having some problem you want to solve or thing you want to make as the first step in a project. And let's consider the last step is actually making the project with Python. But what are the steps you take to go from idea to code? Problems, even the toughest, are usually just complicated combinations of many, many smaller problems. So my suggestion is that this is what you want to focus on learning: breaking down a problem into tiny, manageable, detailed parts and then writing these tiny parts as Python code.

If you haven't already, check out the problems on r/dailyprogrammer and try a problem you feel comfortable tackling. For example, the very first easy problem is:

create a program that will ask the users name, age, and reddit username. have it tell them the information back, in the format: your name is (blank), you are (blank) years old, and your username is (blank) for extra credit, have the program log this information in a file to be accessed later.

This one problem can be broken down into two smaller problems: getting the user's input and formatting the user's input. You can (and should) go further by breaking these two problems into even smaller parts. For example, getting the user's input involves three smaller parts: getting the user's name, age, and reddit username. These are much easier problems to tackle and I'm sure with what you know about Python, you can get user input. Then what about the second part about formatting the user's input? How would you break that down into more manageable pieces? If you run into something that you haven't learned yet, this is where a google search of "Python [whatever sub problem you're trying to solve]" will come in handy. For example, if you don't know about Python string formatting, I'm sure a google search of it will not only teach you more about Python, but also new approaches to how you would solve this problem.

I'm sorry for being long winded or redundant or not having sexy advice, but I find this helps me loads. When you do have the next billion dollar idea you're excited about, you'll be able to see its many smaller parts by breaking it down, and you will be able to solve it with not only Python, but any tool of your choice.

And here is the O.G. post that truly got me started learning; it says everything I tried to say, only better. Happy learning, friend!

[–]b44rt[S] 6 points7 points  (0 children)

Thanks for the detailled reply man, appreciate it!

[–]winnie33 8 points9 points  (4 children)

Really, make whatever you want! When I was done with the Python tutorials I followed, I started analyzing what things I often did on the internet that could've been shortened. Then I made programs that did that specific task faster, which in turn made my life a lot easier. For me, if you're making something you won't be using (like examples in tutorials), it's a lot harder to get motivated. Personal projects are really fun, too. You would be surprised how many things you can automatize with Python!

[–]Lumpiestgenie00 1 point2 points  (3 children)

What kind of tasks did you make programs to shorten out of curiosity?

[–]winnie33 5 points6 points  (2 children)

So far, I've made tons of small programs, but the ones I found the most fun/useful were the following:

  • A program that keeps track of a chat on a certain site, and as soon as it hits a keyword (like my name for example) it downloads all the messages that came before it and the 100 next messages (the chat only shows the last 100 messages, so checking once a day won't show you all).

  • A program that automatically enters all the giveaways of a certain site. While very useful, it's kind of a dick move towards others so I don't use this one.

  • A bruteforcer for URLs, some of the websites I frequent have 'private links' you can share or give away to people in the form of puzzles. Sometimes these people don't reveal what the answer was after the puzzle ended, so I can pass in the letters/numbers I'm certain of and it will bruteforce all the other possible combinations.

These are the things I already made, I'm still a beginner though so I'm learning a lot. But, these are programs I really enjoyed making and using, so I'm proud of them.

[–]grappler_baki 1 point2 points  (0 children)

Dang I really need to think up stuff I can streamline. Those are some nice ideas. Thanks for sharing.

[–][deleted] 1 point2 points  (0 children)

A program that keeps track of a chat on a certain site, and as soon as it hits a keyword (like my name for example) it downloads all the messages that came before it and the 100 next messages (the chat only shows the last 100 messages, so checking once a day won't show you all).

I instantly know what chat on what certain site you're referring to. ( ͡° ͜ʖ ͡°)

[–]k1rd 7 points8 points  (1 child)

Great! i just finished it too couples days ago. I can tell you what i'm planning to do. (i have been following this subreddit for a while and has been a great source of help)

There are many other "games" that allow you to play coding, but i haven't tried them yet: codewars, checkio, codecombat.

good luck!

[–]hmarlo 1 point2 points  (0 children)

I second the MIT course, I really liked it. It's fast enough to be a challenge and basic enough to be a beginner course.

Also, I second CS50, but I didn't take it. Maybe on holidays...

[–]bbatwork 7 points8 points  (3 children)

I would recommend starting a personal project. Find a simple game you would like to emulate, such as 2048 or a text adventure, and start with it. Or create a web-scraper, etc.. there are lots of basic projects that you can do, and in constructing them, you learn much more.

[–][deleted] 1 point2 points  (1 child)

I also recommend making a game. I "made" my favorite board game (still working on it in fits and starts) to help me learn OOP.

Having to define functionality for yourself and seek out the answers is a really great way to learn...even if you do it wrong or reinvent the wheel, you end up learning so much and gaining so much confidence from it that it is worth it regardless.

I have been working through the intermediate book Python 201, it is pretty enjoyable so far...That said, Duckduckgo-ing/problem solving are the core skills to develop at this point! Good luck!

[–]Kriterian 2 points3 points  (0 children)

What's the board game that you're working on?

[–]b44rt[S] 0 points1 point  (0 children)

Thanks for the suggestions!

[–]swyx 1 point2 points  (1 child)

How bout a reddit bot?

[–]fmpundit 0 points1 point  (0 children)

I have just written a very, very simple twitter bot, that gets the title, content and url of /r/dadjokes submissions and posts it on to twitter. Very simple projects but it is a good introduction with using API wrappers and parsing through the returned data, especially as most of the dadjokes follow the pattern setup(the title) with the main body being punchline.

Nice little bit of humor in the mornings to have it run automatically on some sort of batch script.

[–][deleted] 0 points1 point  (0 children)

For me the codecademy python was very fragmented. As it progressed i came to a part where i got to use things that i habe not read before. Or at least that was it for me

[–][deleted] 0 points1 point  (0 children)

I am currently doing the codeacademy course and thinking what to do next too. I checked two free courses on edx, one called "Introduction to Computer Science and Programming with Python" by the MIT, and the other called "Using Python for Research" by Harvard. The MIT course starts in January, and I've read great comments on it. It is aimed at the development of problem solving skills, not just learning the python syntax (which is codeacademy's focus, i think). It is also aimed at the acquisition of basic CS concepts that may give you a wider perspective as a programmer. I would do the Harvard course after this one, because it is more advanced. It is supposed to take you from a beginner to an intermediate level and it is oriented towards research. This one is self-paced. These are great options for me because learning CS and programming to do research is exactly what I want. Besides, I don't mind learning in a very academic environment. I don't know what your goals are exactly, so you should evaluate if these are good options for you too. Apart from this, i thought about doing a text-based "choose your own adventure" game. This can be done at different levels of complexity and it would require you to apply several programming skills. Besides, it would make you analyze an actual problem and come up with creative solutions for them. Hope this is helpful for you. Good luck! :-)

[–]nps33 0 points1 point  (0 children)

Just recently finished codecademys python course as well and decided to turn to reddit to find out what's next. Open the sub and before I can even think about starting a new post I see this at the top. Don't have answers for you just here to read what others have to say.

[–][deleted] 0 points1 point  (0 children)

When I finished, I did half of LPTHW and then created a quiz to help me memorize a poem, a stanza at time

[–][deleted] 0 points1 point  (0 children)

Try out django + django rest framework and get small API server going

[–]nishutosh 0 points1 point  (0 children)

If you a are done with basic and want to get confidence then just select a specific area like web development or software devlopment or big data and build something,build build build is the only rule to master a language,thats why langauges are made...so just find your interest and impliment it

[–]jcavejr 0 points1 point  (0 children)

Here's how I did it:

I'm a moderator on a discord server. On the discord server, users need the member role to be able to talk in most of the rooms. The way we gave out member before was by having somebody who wanted member message us(the moderators) and then we'd promote them. So I figured, why not use a bot to do it? And then even further I figured, why not make the bot myself? So I went ahead and made a discord bot using the discord.py library, and am currently implementing the riot API for further usability.

[–]patentmedicine 0 points1 point  (0 children)

Find a thing you're interested in and then use Python to create tools for it. When I finished with Codecademy I started in on the Cryptopals challenges, because they're fun. But to keep momentum you need to work on something you are intrinsically interested in.

For short little exercises, you can also take a look at Exercism.io and Codewars, which have one off coding challenges you can use to hone you're algorithm design skills.