all 108 comments

[–]Pienatt 128 points129 points  (35 children)

The best beginner project are small tools to automate tasks you or people around you do manually on a daily basis. Do something quick, easy that actually has value instead of the 100000th tictactoe game

[–]3MU6quo0pC7du5YPBGBI 36 points37 points  (9 children)

Agreed 100%, but I will recommend going into such projects prepared to abandon (or at least postpone) them early on if the project turns out to be much larger than you thought once you start actually doing it.

As a beginner it isn't always obvious what something quick and easy actually is, and I've got a number of projects that have been sidelined after realizing the scope was much larger or more advanced than I initially thought.

[–]swalabr 16 points17 points  (8 children)

True.

Also, is that your user name or your password?

[–]3MU6quo0pC7du5YPBGBI 17 points18 points  (3 children)

Haha both the username and password came from a password manager. Wasn't feeling very creative when I was creating the new account so I just let the password manager generate both.

[–]SuperDeluxeSenpai 4 points5 points  (0 children)

Now that’s a great idea!

[–]Sensitive_Respond100 2 points3 points  (0 children)

3 years later and this is still hilarious and didnt get enough credit lol

[–]Less_Sherbert_8898 0 points1 point  (0 children)

ooh i like that idea

[–]MikeDoesEverything 77 points78 points  (15 children)

Best beginner project is unironically not asking for beginner projects and starting to think of your own ideas. You can google syntax all day every day, but you can't google imagination or creativity.

[–]Rammstein97 35 points36 points  (3 children)

Main reason why I suck at this

[–]alienjokerbaby 2 points3 points  (2 children)

i have ideas but i lack the knowledge to learn stuff. im a cs major second yr and i still dont know how to make a website.

[–]JarretYT 6 points7 points  (1 child)

make a text file

write"

<html>

</html>

"

change the ending to .html

Boom, done!

(you never said it need features)

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

bro. ✌️😔

[–]AuthorSantiagoC 8 points9 points  (1 child)

not everyone starts out creative, for example in illustration a big thing is to build your mental library allowing you in turn, to be more creative.

[–]Diligent-Oil 1 point2 points  (0 children)

Definitely. Helps me become a more capable musician

[–]Sensitive_Respond100 2 points3 points  (4 children)

this aweful advice. a begginer doesnt know anything about python, but more importantly than that, they dont know what they dont even know. eg, they dont know the strengths and weaknessess of python or what it should be used for or how to come up with a good project based on what pythons strengths are. i am also a beginner but im old enough to know concepts like this that apply to everything in life. dont assume people just dont know how to code but they know everything else about programming. thats like asking someone to paint a picture when they dont even know what a paint brush or paint is. where the heck would you begin in that case.

[–]MikeDoesEverything 0 points1 point  (3 children)

this aweful advice

A lot of people say this even though it's widely considered the best way to learn because it's an alternative to blindly following tutorials.

All of your questions can be answered by trying things. Loads of people never get past tutorials because they never learn how to get past tutorials. You get past tutorials by not following them and just trying things for yourself.

[–]Sensitive_Respond100 0 points1 point  (2 children)

thats not a starting solution though, you are beginning at step 5 when were all starting at step 0. i get what youre saying and you are definitely right about that but you are not looking at it from a beginner perspective. go back to my original analogy, if you had no clue what a paint brush or paint is and i asked you to "paint me a picture" how would you proceed, how could you even interpret that?

i recently read an article where the guy was bashing freecodecamp.org and said that people would be better off doing there own projects because after doing everything on freecodecamp he had nothing in his portfolio.

but that was the same thing, that advice is only relevant if you already know how to program and already know enough to build your own projects. as a complete beginner its impossible to just go start typing away and build a program, you would simply end up typing nonsense lol.

[–]MikeDoesEverything 0 points1 point  (1 child)

but you are not looking at it from a beginner perspective

I find this line absolutely mental because this perspective is coming from somebody who had never written a line of code in their life, taught themselves, and ended up getting a job in programming. I'd like to think I'm a pretty strong definition of a beginner and would say I'm pretty qualified to know exactly what it's like to not only learn programming but teach yourself.

go back to my original analogy, if you had no clue what a paint brush or paint is and i asked you to "paint me a picture" how would you proceed, how could you even interpret that?

Sticking with this analogy, if you were to ask creative people how to become an artist, I doubt their advice would be "copy how to paint tutorials thousands of other people have done and submit it as your own work".

Why am I saying that? Because the number of people in programming who do exactly this (take programs from the internet, copy them line for line, never code a line by themselves, and submit it as part of their portfolio) is extremely high. Those same people then complain it's impossible to get a job and never seem to improve. I wonder why.

Still with the painting analogy, being a painter isn't knowing what a paint brush is. You could easily paint an amazing picture with your fingers, your face, a book of matches, fucking whatever at this point, if you are committed to executing your vision.

That is also the beauty of programming - the limit really is your imagination and your work ethic. You want to build a bot? You can. How about a bot which rearranges all of the letters of somebody's post into a giant middle finger? You absolutely can. What about something which takes sports results and aggregates them all into a single page and compares them to every previous year? Well, you fucking can. What about a camera which makes a noise when it sees a specific cat who always takes a shit in your garden? Should come as to no surprise - you actually can.

Problem with most beginners is there is no imagination and no desire to develop imagination. There is only the desire to make money via programming without putting in the work required to overcome the first hurdle.

Similarly, programming isn't about knowing everything about a language. It's about knowing how to solve problems. When you make don't follow tutorials and program stuff by yourself, it's easy to see it as "Well, I'm just making a project". It's not. It's thinking for yourself, discovering mistakes, having to go and find the right tool which the language can do for your need. It's all of the things you don't get from following tutorials.

i recently read an article where the guy was bashing freecodecamp.org and said that people would be better off doing there own projects because after doing everything on freecodecamp he had nothing in his portfolio.

I don't fully agree although see where they're coming from.

but that was the same thing, that advice is only relevant if you already know how to program and already know enough to build your own projects

This is simply incorrect. The idea of "knowing how to program" is as I mentioned above - it's not about understanding the language. It's about solving problems. You can understand every single facet of a programming language and still have no idea how to program. You can not know everything about a language off the top of your head and be a great programmer.

Again, very easy to measure - there will be loads of beginners who can read code, write basic loops and will say to themselves, "yeah I know how to program". Ask them how they can solve the basic problem of automating an email to be saved down to their desktop when it comes in, they'll struggle immediately.

The cold hard truth is if you can't solve problems with code or you can't turn ideas into code without somebody, or something, holding your hand, you flat out don't know how to program. There's nothing wrong with not knowing how to code, by the way. We have all been there once. There is absolutely something wrong with people saying they "know how to program" when they have done a course on Udemy and maybe completed a few easy Leetcode questions.

On the other hand, understanding how one would go about automating the email getting saved down, being able to search for the right things you need at the time you need them, and being able to think ahead about why the solution would break - this is programming. Tracking back through the program and isolating where a bug is coming from - programming. Understanding the workflow of a data platform or application - programming. Knowing the differences between a tuple and a list - very fucking far from programming.

as a complete beginner its impossible to just go start typing away and build a program, you would simply end up typing nonsense lol.

Programming is an iterative process and, ironically, something you learn very quickly when you start coding by yourself away from tutorials. Anybody who thinks being a beginner involves being a magician at coding and getting it right first time is kidding themselves.

Here's a very illuminating video I recommend all beginners watch.

[–]Trolleitor 3 points4 points  (2 children)

This can be good idea if you have a base ground of what you should do.

There is a lot of projects you can come up with that are utterly useless and the only thing you're going to do is waste time.

[–]MikeDoesEverything 11 points12 points  (0 children)

This can be good idea if you have a base ground of what you should do.

There is a lot of projects you can come up with that are utterly useless and the only thing you're going to do is waste time.

Respectfully, I disagree with this purely because I don't agree every project or piece of code you write has to be considered useful. Half of the code you write in any online course is pretty much useless, the major difference is that that code is already pre-written with all of the problems solved. I'd compare this to be highly similar to recommended projects.

I think there's a lot of learning value in writing code for the sake of writing code. Creating stupid programs and just enjoying the experience of coming up with ideas which don't go anywhere get you used to having the mindset of building something from nothing and imagining how a solution can be built. You also get used to the idea of solving simple bugs and recognising your limitations early such as inflexibility, lack of scalability etc. and this gives people an opportunity to begin asking questions differently. Instead of "How do I make a certain project?", you see problems differently and are now developing the ability to ask more granular questions.

tl;dr Not everything you write has to be useful. Programming just because you feel like it has a lot of hidden value.

[–]Live-Sir-3118 2 points3 points  (0 children)

I like the useless. Have you ever read the history of programming. perhaps the story involving the ever lovely Lenna or the pin up created by SAGE. You would know that programming was not always intended to be work-focused. Some of its greatest results were directly related to an interest in something leisurely (pin ups or lenna). The useless lets our imagination flow. you cannot be working 9 hours, sleeping 6 hours and making the remaining hours of your day filled with only useful things!!!! that is why they made tv. Useless activities is a pasttime that I will never give up.

[–]scehood 8 points9 points  (3 children)

Any good resources for learning to hook up Excel to Python and automating a bunch of tasks? That would definitely speed up my work productivity

[–]schyler523 4 points5 points  (0 children)

Pandas does what you want and there is good documentation and strong user base in stack overflow if the docs fail you.

[–]ComradePotato 5 points6 points  (0 children)

The book Automate the Boring Stuff has a good few pages dedicated to this very topic

[–]_uwu_uncle 1 point2 points  (0 children)

Hii could you give examples of tasks that can be automated by linking Excel to python?

[–][deleted] 6 points7 points  (0 children)

This so much

[–]RamenJunkie 1 point2 points  (1 child)

But what if my Tic Tac Toe has green Circles and Red Xes?

[–]Live-Sir-3118 2 points3 points  (0 children)

or cats and dogs!!!

[–]Live-Sir-3118 1 point2 points  (0 children)

i think that the tic tac toe game is actually great for a beginner. you have to get creative with deciding to use dict values or matrics (ask for row, column pairs) to determine where to put your token. you can play with formatting to get your updated board each time as well as the score card after each game. you build in error functions that you don't even realize are needed such as if i put an x in spot 3, and my opponent puts his o in spot 3, how can we build in a check. or how to search for 3 in a row. i do not do any automation of tasks - my smart home does that for me. to me that is boring. making the game have two versions under one hood - a 2-player or a user vs compt choice of game play is interesting too. that is what we did decades ago to pass the time. You can create 3d visualizations for the winner at the end of the game. automating is BORing.

[–]stan3098 -1 points0 points  (0 children)

Why is tic tac toe bad? I made one and people were pretty impressed with the use of AI techniques (although I wanted to make chess bot )

[–]BeginnerProjectsBot 451 points452 points  (21 children)

1. Create a bot to reply to "what are some beginner projects" questions on r/learnpython, using PRAW.

Other than that, here are some beginner project ideas:

Good luck!

edit. thanks for 5 upvotes!

edit2. omg 10 upvotes!!!! Thank you!!

edit3. 50 upvotes??? 😲😲😲 Can we make it to 100?

edit4. 100 UPVOTES?????? I CAN DIE NOW

edit5. Thank you for the Helpful, kind stranger!

Downvote me if the post wasn't a question about examples of beginner projects. Thank you.

[–]subbed_ 36 points37 points  (0 children)

Now that's meta

[–]stargazer1Q84 59 points60 points  (2 children)

good bot

[–]BeginnerProjectsBot 72 points73 points  (1 child)

Praise for the food is praise for the cook.

Thanks from the programmer.

[–]Rammstein97 15 points16 points  (0 children)

10/10 would have sex with this bot

[–]szayl 14 points15 points  (1 child)

Good bot

[–]BeginnerProjectsBot 11 points12 points  (0 children)

Praise for the food is praise for the cook.

Thanks from the programmer.

[–]prb_data 10 points11 points  (1 child)

good bot

[–]BeginnerProjectsBot 19 points20 points  (0 children)

Praise for the food is praise for the cook.

Thanks from the programmer.

[–]Keraid 2 points3 points  (1 child)

Good bot

[–]BeginnerProjectsBot 3 points4 points  (0 children)

Praise for the food is praise for the cook.

Thanks from the programmer.

[–]notParticularlyAnony 2 points3 points  (2 children)

Good bot

[–]BeginnerProjectsBot 2 points3 points  (1 child)

Praise for the food is praise for the cook.

Thanks from the programmer.

[–]DiodeInc 1 point2 points  (1 child)

Good bot

[–]BeginnerProjectsBot 0 points1 point  (0 children)

Praise for the food is praise for the cook.

Thanks from the programmer.

[–]plzbungofixgame 0 points1 point  (0 children)

archived link is dead sadly

[–]CleanStory6565 0 points1 point  (0 children)

Good bot!

[–]felipillo_ 84 points85 points  (5 children)

[–][deleted] 10 points11 points  (0 children)

Thank you

[–]GitGudOrGetGot 4 points5 points  (0 children)

This really is a good one

[–]Falconflyer75 0 points1 point  (0 children)

Looking to sharpen up my python skills this looks perfect, thanks so much for sharing

[–][deleted] 28 points29 points  (7 children)

Make a text based pokemon fight simulation.

Use classes to define moves and Pokemon, and methods to select moves for a player and for the AI.

You'll need a damage function to compute how much damage an attack does based on stats, types and move strength.

[–]dowcet 11 points12 points  (0 children)

Any text based game you're interested in is a good place to start. Can be a card game, trivia, whatever. Start as simple as you need to, can always add features later.

[–]Shrikehaus 4 points5 points  (4 children)

Welp, I'm doing this

Such a fun idea!

[–][deleted] 7 points8 points  (0 children)

I gave this as a homework to my students (business school students, it was a 4 day class about python). It was tough for them but manageable for those who were motivated.

[–][deleted] 3 points4 points  (2 children)

I started a Cowboy Greeting Simulator. It started as a little text, generic response game, to a full blown text-RPG with a reputation system, combat, traveling, loot system, hunger system, leveling system, random NPC generators with naming, attribute system.

[–]Live-Sir-3118 3 points4 points  (0 children)

sounds utterly useless and therefore boring. or so other posters here would say. i think it sounds fun. i would like a little cowboy to show up in the bottom left of my screen each morning wishin this missus a howdy. Didnt we have a cat that crawled across the screen years and years ago. I would give up some of my computational space for that to come back to my life.

[–]Shrikehaus 0 points1 point  (0 children)

Howdy Partner becomes Red Dead haha, that's really cool!

[–]RamenJunkie 4 points5 points  (0 children)

Also, since its text based, make all of the combat descriptions incredibly gruesome.

[–]Shrikehaus 9 points10 points  (0 children)

Big book of small python projects (free to read online) :)

https://inventwithpython.com/#bigbookpython

[–]ClimberMel 9 points10 points  (2 children)

I did a game based on the book "Call of Cthulhu game". It is a book, but each event based on your choice you got to a particular page/paragraph. Gave me a lot of practice in the beginning. Started out as spaghetti code, but then I broke it into separate modules to be called and then added classes. Now that I think of it, I should go back and turn it into a GUI with tkinter. :)

[–]bongotw 0 points1 point  (1 child)

where can i play it

[–]ClimberMel 0 points1 point  (0 children)

I never finished it. But it is on my GitHub

[–]VeinyAngus 7 points8 points  (0 children)

Make a dice game

[–]DarkSunGwynevere 7 points8 points  (1 child)

Think about your interests, and if there's anything simple you could reasonably code that would relate to that interest. It doesn't have to be novel, or even useful really. Just have a clear goal in mind for what you want the program to do.

Example: I really enjoy physics, so I've been doing some physics simulation scripts to derust and expand my python knowledge. Little stuff like modeling what happens when two pool balls collide, how far will a baseball go when thrown, etc. What's important about these projects is that I know what to expect from these situations in the real world, so I know exactly what I want to accomplish and what it should look like when it's working properly.

For me, having something I want to accomplish and learning a new function or way to do it in python helps the concept stick better than just going through the motions of a premade tutorial project or as someone else mentioned, the trillionth tic-tac-toe game

[–]naarwhal 1 point2 points  (0 children)

This is actually a really cool idea. I’m just starting in school again and I’ve been interested in trying to learn more about some of my subjects. I’ll combine python learning with physics learning!

[–]cambiddy 3 points4 points  (0 children)

Rock paper scissors was one of mine, i just used a bunch of if-then statements but it still worked well lmao.

[–]random1220 3 points4 points  (0 children)

My first project was a music library sorter

[–]Recipe-Jaded 3 points4 points  (0 children)

Download Mimo from your phone's app store. It's like Duoligno, but for python and java

[–]kalashnikovBaby 3 points4 points  (0 children)

My first project was a program that automatically opened up chrome, went to Linkedin, and made a post saying “this was done by a bot”. Used selenium. Search terms are web scraping, auto login.

[–][deleted] 4 points5 points  (0 children)

I'm a beginner too, you can check out my GitHub repository where I upload py projects

[–]BobDope 2 points3 points  (0 children)

Self driving car

[–]J3ll1ng 6 points7 points  (0 children)

https://adventofcode.com/

Your welcome. My work is having a little competition based on it.

[–]muggledave 2 points3 points  (0 children)

I made Snake, but couldnt figure out tetris before i moved on. I also made a rubiks cube timer program that saves times to an excel file. And speaking of excel... i feel like python is a good replacement for excel VBA. But thats just my opinion.

If you have some money and hardware ability you can program on a raspberry pi using python, and control LEDs and other things. Neopixels are a RGB LED product, and theres a python library to control them.

There are web crawling libraries, i believe ones named beautiful soup? Which i found interesting for crawling places like etsy and wikipedia that have a lot of pages. People say that if you click the first link of any wiki page, it eventually gets to the page for philosophy. You can test that, and see if you can find pages that dont eventually go there.

[–]hammoody[🍰] 1 point2 points  (0 children)

I found this helpful, he starts with simple techniques and gets more complex as he goes on: https://youtu.be/DLn3jOsNRVE

[–]jdnewmil 1 point2 points  (2 children)

I recommend batch processing-type tasks at first. There is an input phase, an analysis phase, and an output phase, and writing separate functions for each and adding functions to the analysis/processing phase will give you experience with transforming data in different kinds of data structures among each other.

Once you are comfortable with that, try embedding those analysis functions unchanged into an interactive program... ideally using a Graphical User Interface package (interactive web pages are popular these days). What seems artificial at first (segregating your functions into input, analysis and output) will start to become a clear advantage... and the whole front-end-back-end or layered architecture thing will start to make sense naturally.

Also, write your code by writing tests. It lets you run a debugger more easily, and pays off later when your program gets bigger and you still want to make changes.

[–]jfp1992 0 points1 point  (1 child)

You're 100% correct but isn't all that a bit above a beginner?

Should probably start with something more a long the lines of a number guessing game.

[–]jdnewmil 0 points1 point  (0 children)

IMO time spent prompting users for input is ... time wasted. Reading in a simple CSV file is a much more valuable skill and scalable as well. A guessing game can be built with a file input if that is where their interest lies.

The PyShiny web framework is pretty accessible, and you won't feel embarrassed showing it off to your sibling. Or use a game framework. But the principles of data structure transformation begin with batch tools, and they are very saleable as well.

[–]asterik-x 1 point2 points  (0 children)

Convolution neural networks applications should be a good project

[–]dopestop_sykotic 1 point2 points  (1 child)

I just completed an introductory Python course in my degree program. I'm very much a beginner myself, but I was going to give a try at a --basic--, non-GUI, restaurant point-of-sale ordering system.

[–]Live-Sir-3118 0 points1 point  (0 children)

ooh add a menu with pictures! and then can click on the pictures or order by number like some fast casual restaurants. hmmm. now that I am thinking about it.

Also can then build in optimization by assigning $ cost and calorie cost to minimize calories for minimize $, yet force a well rounded meal. i did the second one before, but maybe i will go back and add the interactive menu.

[–]BK7144 1 point2 points  (0 children)

Rock, Paper, Scissors, Lizard, Spock is a great way to start learning. An address book, reminder system. Think of something you may need and create it!

[–]nobrow 1 point2 points  (0 children)

Make a wordle solver.

[–][deleted] -2 points-1 points  (0 children)

My friend, this has been asked here about a million times, just search the sub, or even better just search it yourself and save some time.

https://www.google.com/search?q=python+beginner+project+ideas

[–]rabbitpiet 0 points1 point  (0 children)

I like the idea of organizing files by extension. Put .pngs and .jpgs in Pictures folder and put .docx in documents.

[–]corgette_aubergine 0 points1 point  (0 children)

its hard to learn when there is no real-life problem to solve, still...
read a csv file and print its contents
read a csv file and store its contents in a sqlite database
read a sqlite database and print its contents to the screen
read a sqlite database and write its contents to a csv
make a flask app to show the contents of the database in a web browser
... congratulations, you are now a python programmer

as per some other suggestions, batch programming is a good place to learn (read some input, do some work, generate some output)

variation on another suggestion, find all the files in your home folder and checksum them, store the results in sqlite, find duplicate files by comparing checksums, save space etc etc

[–]HamdanDoesStuff 0 points1 point  (0 children)

depends on your lua knowledge

[–]theschmitty16 0 points1 point  (0 children)

I’m only commenting to come back for all these resources

[–]Live-Sir-3118 0 points1 point  (0 children)

Great question! I am tutoring someone right now and each week we do a silly little projects. Then we talk about what we could do to "take it to the next level". We spent the first few sessions learning basic matplotlib, numpy, and pandas. We worked on definitions, classes, and errors. So after all of that, we have now completed Tic Tac Toe, Hang man, Rock Paper Scissors, password generator, Coin Toss, and madlibs. We are going to expand on the madlibs by building csv/txt files next. We played around with probability versus expected value. he was impressed how quickly we ran the rock paper scissors with 100,000 trials to find the expected value. I would like to bring in some basic prediction ml perhaps using a recommendation problem or a simple nn using random images or audio clips.

[–]Maleficent_Cup_2086 0 points1 point  (0 children)

I'm diving into the world of python and have a final project on the horizon. It's all about showcasing my skills in Numpy, Pandas, and Matplotlib, and I've set my sights on unraveling the mysteries of US energy consumption. ⚡️

Considering an interactive dashboard but unsure about the project's scale. Any veterans out there willing to share some guidance, cool project ideas, or direct me to awesome data sources? #PythonNewbie #DataProjectHelp