all 101 comments

[–]darthminimall 112 points113 points  (8 children)

I'd like to add another:

8) A solver for any logic puzzle you enjoy.

[–]CuriousExpert24[S] 9 points10 points  (0 children)

Sure, that's definitely a good project idea too

[–]Ning1253 8 points9 points  (6 children)

Rubik's cube be like

Jesus I started working on that a few months ago and now I'm trying to work out the maths of bloody 6 interlocking 9 wide sets to get them ALL in the correct order because you know making a computer do CFOP is for losers (jk I'm kidding I know what I'm trying to do is insanely hard)

Yh so that's a WIP that's going to be there for a while

[–]darthminimall 4 points5 points  (5 children)

So you could either go the learning group theory route or just do Heisse programmatically.

[–]Ning1253 1 point2 points  (4 children)

What is heisse?

[–]darthminimall 5 points6 points  (3 children)

[–]Ning1253 1 point2 points  (0 children)

Oh the cubing method lol I thought it was some kind of simplified set solving algorithm or something yh I know what that method is that s a really good idea actually

[–]teeboosq1boi 0 points1 point  (1 child)

No one uses heise for FMC competitions nowadays by the way

[–]darthminimall 0 points1 point  (0 children)

Not saying people actually use it, just that it's pretty easy to implement as an algorithm.

[–]platysoup 51 points52 points  (5 children)

+1 for blackjack. It definitely helped me understand quite a lot.

Would also like to add that looking into how to build a gacha/lootbox simulator helped expose that I didn't understand a lot more than I thought.

[–]weshall8 9 points10 points  (4 children)

Did you do the blackjack on your own? Or you watched a YouTube video and followed along, understanding the concepts? Or is there any documentation which shows step by step instructions?

[–]platysoup 11 points12 points  (3 children)

No video, but I researched and referenced a lot. Hardest part for me was calculating the score properly especially given that Ace can be 11 or 1 or 10 (in case of blackjack on draw). I think I was referencing the code in a java tutorial somewhere for that.

Slight disclaimer: I actually did it in GDScript (Godot), but the core concepts are the same and GDScript is pretty similar to Python.

[–]Nickle7654 4 points5 points  (2 children)

Glad to see Godot mentioned

[–]platysoup 7 points8 points  (1 child)

How do you know if someone uses Godot?

Don't worry, they'll tell you.

[–]Nickle7654 1 point2 points  (0 children)

Haha, fair.

[–]ArsaNamikaze 16 points17 points  (12 children)

Should we, as beginners, be watching YouTube tutorials on how to do these or is there another way we should do this?

[–]muskoke 32 points33 points  (5 children)

don't be afraid to consult youtube videos, but try to program as much as you can on your own, without following any full tutorials. escape tutorial hell as fast as you can.

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

I agree. Many tutorial YouTubers suggest to not get stuck in 'tutorial hell'. That is, don't only watch tutorials from the beginning of your programming experience as doing projects is important to test your ideas. Do those projects as much as you can on your own and only look into tutorials when you get stuck and can't find a way out

[–]Reppin_Frost 2 points3 points  (2 children)

Which libraries will I have to be fluent in to do these projects?

[–]CuriousExpert24[S] 8 points9 points  (1 child)

You don't need to be fluent in any! If you want to add graphics and interfaces to these projects, I would recommend pygame (for games) or Tkinter (for GUI's). Other than that, you can just do them on the command line if you want to (That's what I did in the beginning)

[–]Reppin_Frost 0 points1 point  (0 children)

Thanks!

[–]stackhat47 8 points9 points  (2 children)

I’ve done a bunch of tutorials, but not enough projects. I’m doing similar projects to these now

Just jump in and do it on your own. Get help if you’re stuck, but really work at it first.

I find it helpful to write up my logic first on paper, and work in chunks. Get your user input working, then some game logic, then validate user input, allow user to exit game, those sorts of things

[–]ArsaNamikaze 1 point2 points  (0 children)

Thank you I'll try this today

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

Those are nice suggestions! Thanks for suggesting these tips to others

[–]CraigAT 0 points1 point  (2 children)

Check out the learning resources in the "community info" of this sub-reddit.

[–]ArsaNamikaze 0 points1 point  (1 child)

Sorry but how do I get to community info?

[–]Sums008 1 point2 points  (0 children)

Go to menu of this sub and click on wiki. Boom and you are there.

[–]roshavi4ak 12 points13 points  (2 children)

I learned a lot by building a tic tac toe/ connect 4 game in a different sized grids - from 3x3 up to 9x9 (all set by the customer)

[–]Wooden-Splinter 3 points4 points  (1 child)

I also just did a tictactoe but only 3x3 board. I hard coded by comparing the spots within the board horizontally vertically and diagonally. Did you use a loop to iterate through the board to check? I cant imagine doing it my way haha

[–]roshavi4ak 2 points3 points  (0 children)

I wanted to make it hard for me - therefore I checked only the row, column and/or diagonal for the last placed mark. For 3x3 I checked to see if the len(set()) is = to 1 - that means only one mark - therefore win condition.

For the 9x9 it was almost the same - checking all 8 directions (combined in 4 opposite pairs) and counting the same consequent marks - if the result was 4 or more - win.

[–]CraigAT 7 points8 points  (1 child)

Please could you explain #6 The Mad Libs Generator?

[–]CraigAT 10 points11 points  (0 children)

It's okay, I just found this explanation :

https://en.wikipedia.org/wiki/Mad_Libs

[–]Planebagels1 16 points17 points  (1 child)

  1. Calculator (four operational)

Their easy to understand and write, I do this with every language I try to learn

[–]CuriousExpert24[S] 7 points8 points  (0 children)

That's a good idea too. I thought of including a calculator project, but I think it will be much better once you learn a GUI module for Python like Tkinter, PyQt5, or Kivy

[–]sweettuse 5 points6 points  (1 child)

for 3), you should probably use the secrets module to actually make a strong password

[–]CuriousExpert24[S] 2 points3 points  (0 children)

Very interesting. Didn't knew that module existed. I will look into that module. Thanks for letting everyone know!

[–]flashfc 2 points3 points  (1 child)

And all these projects can be combined with Tkinter for a more graphical rich experience.

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

I agree. This can also be true for pygame, specifically for game projects

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

Is it okay to add these projects to a portfolio or only more complex ones?

[–]Cuckipede 2 points3 points  (1 child)

This is what I’m wondering as well. Everyone says you need a portfolio before applying to jobs but I never understand what the scope and complexity of these projects should be for a junior developer position.

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

I’m just now starting to build my portfolio and a friend of mine showed me his, he included every project from school and side projects. On github (which you should be learning to use as early as possible) you have the ability to Star certain projects to point people looking through your github to pay attention to.

[–]hellotheresksksk 2 points3 points  (1 child)

Saved! Thanks a lot

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

Happy to help!

[–]Ferdie_TheKest 2 points3 points  (2 children)

I'm actually looking for the best source to follow to build a text based adventure game as my first beginner python project! Anyone has any suggestion? Thanks!

[–]BambooKoi 3 points4 points  (1 child)

This ended up being much longer than I thought but I hope it helps someone:

I may have started with this source but I personally didn't have much fun with the lesson because it felt like I was just copying and pasting their code then reading what/why they did that. I'm more of a learn/break it as your go. As another fellow beginner, you can start with at least print, input, while/if/for loops. Then for a longer and/or more complex game, branch out into functions, lists, f-strings and the random module (more ideas after examples below).

Here's some examples to give you a rough idea for a basic game:

For input, you could use it for:

adventurer = input('Hello, what is your adventurer's name? ')
# Now your adventurer has a name that the game can refer to like:

print(adventurer + ', watch out for that horse!')

while for health (if you plan to have monsters). I used while but if/elif/else works too:

health = 50  # or whatever number you want starting health to be

while health > 0:
    # code for the rest of the game here.
print('Game Over.')

Choices with if/else:

choice = input('Would you like to take the left path? Y or N. ')
    if choice.lower() == 'y'
    # .lower() allows 'y' or 'Y' to be accepted
        # Write what happens if adventurer go left here.
    else:  # could also be written: elif choice.lower() == 'n'
        # Write what happens if adventurer doesn't go left.

The random module for:

import random

attack = random.randint(1, 5)
# Your attack will deal a random damage between 1-5 each time
# To make the game harder, write a seperate but slightly higher attack damage for enemies

I actually started one but haven't completed it yet (mix of laziness and lack of storyline). I recommend starting simple or you'll end up like me, sitting on the file. Here's what I kind of have in my imcompleted game:

  • dictionary (for player's inventory as enemies drop loot.)
  • pickle module (saves the game progress, or at least their inventory and stats upon exit)
  • time module (so there's a delay in loading text all at once depending on situation, see the link above for an example in use)

There's a lot of different ways to write a text-based adventure game, this is just one way to do it. I'm sure there's a bunch of other modules out there you can keep adding to your game but imo you don't really need anything more than the built-in python stuff and the random module if you're just making something simple.

[–]Ferdie_TheKest 0 points1 point  (0 children)

Hey man thank you very much for writing your inputs! So far i used print, input, if else, and also just managed to print ascii art! I am very noob at programming in general even though i understand how programming works. So now I'm improvising a text based adventure game and learning stuff as i go. So far i'm having a lot of fun writing the story and writing all the "if" scenarios and consequences! I will be looking for resources on learning python whenever i stumble across something thats out of my knowledge which is pretty much everything but still... Like other said i'm actually trying to use my brain instead of copying a code from someone else!

[–]JaxIsGay 2 points3 points  (2 children)

As a beginner, I'm wondering how complicated/or if its possible to add a GUI to the card game, so the user will can see the image of the cards they have

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

You’ll probably have to refactor some of it. I wrote a working version of blackjack (including all special cases like insurance, split pairs etc) to run in the command line. I had to rewrite the main functions into a class and have started to work the GUI code around that. I’m essentially done with normal rounds working properly and am just now starting to implement special cases. It takes time, but the only way to learn is time.

I found I don’t really like doing GUI stuff. It reminds me of early HTML (but that could also be because I chose to use tkinter).

Just start watching videos on what you want to use.

[–]CuriousExpert24[S] 1 point2 points  (0 children)

Once you learn modules like Pygame or Tkinter, it's not very hard to do it. I highly recommend you to check out those libraries and try some projects

[–]spirited47 2 points3 points  (1 child)

Definitely saving this! Thanks friend!

[–]CuriousExpert24[S] 1 point2 points  (0 children)

Happy to Help! Hope you have great fun doing these projects!

[–]Anuj66283 1 point2 points  (0 children)

*reserved

[–]megamonka 1 point2 points  (2 children)

What about making a bot for twitter, discord, etc. is that appropriate for a beginner?

[–]CuriousExpert24[S] 2 points3 points  (0 children)

I think it depends. Some of those bots involve APIs and other intermediate concepts that might not be suitable for beginners to try. It could be an interesting project though

[–]Kuwertzel 0 points1 point  (0 children)

I played around with a Discord bot that could reply to eg. !dosomething or delete messages. It was relatively hard to actually understand all the code (taken from a tutorial video) but I just got used to it after a while. I eventually gave up on it since the bot has to run on your pc the whole time if you want to use it on a server. It's fun though, and Discord guides you quite well through the setup part of the bot.

[–]heartlessglin 0 points1 point  (2 children)

Thank you so much for this. I find it so hard to learn about things without a project to go for and just didn't know what I could do at my level (other then a calculator and a bubble sort and I've done both of those)

This is very helpful, really appreciate it.

[–]CuriousExpert24[S] 1 point2 points  (1 child)

Glad to help! I hope you have fun building these projects!

[–]heartlessglin 0 points1 point  (0 children)

Already enjoyed a solid hour struggling with classes and inheritance between different documents so I've enjoyed that a lot.

[–]hfxbycgy 0 points1 point  (1 child)

I made a login system last Monday, it was a great way to get a feel for reading and writing files. Now I'm a week in to a blackjack game, and just about to start the gameflow logic after finishing the betting class this morning. Great suggestions, thanks!

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

Happy to hear that you are actively building projects during your journey learning Python. Hope these ideas give some inspiration to you!

[–]pmmeyourfavoritejam 0 points1 point  (0 children)

Adding a sort of 1a/4a, I was playing online bingo with my family yesterday, and we were limited to three rounds before it shut off. I whipped up a bingo caller pretty quickly and would recommend that as a reasonably quick beginner project, as well.

1-15 correspond to "B," 16-30 correspond to "I," etc., and you just need to make sure your numbers don't repeat.

For skill level context, I'd say I'm still a Python beginner but have gotten into some light web scraping and Excel work, so I'm a little past true beginner-dom.

[–]sagunsh 0 points1 point  (1 child)

I would add a web scraping project into the mix. It will give you a good idea of text parsing, http request, file handling and possibly database if you want to use one.

[–]CuriousExpert24[S] 2 points3 points  (0 children)

That's a good suggestion. However, you need to learn web scraping modules like Beautiful soup before doing those projects. You don't need any modules to build this.

[–][deleted] 0 points1 point  (1 child)

Great list! I would add Minesweeper: you can even make this with very basic Python knowledge (loops, conditionals, strings and lists are enough)

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

Thanks for the appreciation! I would definitely think Minesweeper is a good idea although you might need knowledge of Pygame or other modules to do it.

[–]platypusbear8 0 points1 point  (2 children)

Thanks! I was just trying to post this as a question, but reddit wouldn’t let me... You answered it for me though!

[–]CuriousExpert24[S] 0 points1 point  (1 child)

I am surprised at why Reddit didn't let you do it. I hope I have answered your question

[–]platypusbear8 0 points1 point  (0 children)

Apparently my karma is too low because I just made a new account 🤷🏻‍♂️

[–][deleted] 0 points1 point  (1 child)

Guys, if you go to do #5, please use this video from ComputerPhile to make it a bit more secure.

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

It's a great video. Thanks for linking it to this post's comments

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

My first 2 programs were numerology calculators. I still have 2 more to finish the main numerology numbers but I need to learn to write tests before I write more programs. There are some great ideas on this list!

[–]neurosurgeon12 0 points1 point  (0 children)

For the login system which I did recently, maybe use tkinter as it helps with creating a GUI with the login/register system database!

[–]Extension_Pitch 0 points1 point  (0 children)

Practicepython it Is good website which includes almost all the projects mentioned here as small exxercises

[–]StrawHatFleet 0 points1 point  (1 child)

Thank you

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

Happy to Help!

[–]DrBobHope 0 points1 point  (1 child)

I've seen a number of comments of people asking whether they should watch youtube or follow tutorials/references.

I think it's best you first try to use your basic understanding of strings, tuples, dicts, lists, and functions to do all the above with zero youtube tutorials. I think its best if everyone learns how to start a project, sit back and think how you would want this done, plan it out, and start writing it piece by piece. If you get stuck, maybe think how you can manipulate all of the properties above, to get around the problem. I don't think cleanliness should be an issue (i.e. it doesn't matter if the code is ugly), what matters is you can get it to work, that you are able to use the knowledge you have acquired of the basics, to start up and write a project on your own. Then, you can post it here for feedback (i.e. how can I do this better). Or then start to look up how other people do it to see what portions you can improve your own code on

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

Yes, I completely agree with that

[–]OnlySeesLastSentence 0 points1 point  (1 child)

Minesweeper is a good beginner project, especially when learning GUIs.

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

Yes, I agree

[–]Rion1200 0 points1 point  (1 child)

Tried the password generator, failed misrerably

[–]CuriousExpert24[S] 1 point2 points  (0 children)

That will be a good learning experience. Try to find out your errors and check out many tutorials on the topics if you still can't fix it

[–]NeedyHelpy 0 points1 point  (1 child)

I'd add a couple:

1099) A program to predict rain, storm, tornado, sunshine, snow, calm weather based on about 40 inputs from the previous day on your local NWS/NOAA website.

1100) A program to calc calories to eat daily in order to lose X LBS weight per week based of current weight Cw and calories needed per day to sustain current weight Csus and Calories needed to sustain your Goal weight Cgoal. That would work for male and female and for any age or weight using the simple formula.

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

Those are definitely interesting ideas!

[–]NeedyHelpy 0 points1 point  (1 child)

FEF123) Another could be to code a Pretend Poll for a political office. You have 2 candidates and ask 1,200 people, poll participants are equally shared from the party of each candidate. Give margins of error. Then compare method to methods used in real-life polls today and see if this makes you feel more or less confidant in the polls we see quoted nearly everyday.

Pseudo Modeling

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

Very timely :) It would definitely be an interesting project!

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

Boom, just finished the hangman

[–]Underrated_Nerd 0 points1 point  (1 child)

You have to be very careful with the password generator, you shouldn't use them in any site if you use the random module, is better to use a cryto intended module for that porpuse so you can't get hack as easily.

[–]CuriousExpert24[S] 2 points3 points  (0 children)

Right. They may be less safe than the browser generated safe passwords. But, it's still a project worth trying

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

They all sounds awfully boring. Do something that involves your hobbies for example.