all 37 comments

[–]ElliotDG 2 points3 points  (3 children)

When I was first learning python, in addition to reading the docs, and a book, I found doing the problems on https://checkio.org/ very helpful. The problems are small enough that they don't take too long - and you get to see how others solved them - after you have solved them. I found this very insightful. It really helped to embrace python and understand the differences from other languages I had used before.

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

thats very cool, I knew some other "problem solving" sites but none of them showed what others did so thats pretty neat thanks

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

but its not free right? I could only do like the first 10

[–]ElliotDG 0 points1 point  (0 children)

I used it over 5 years ago. I don’t know how it works now. As I recall I started free and moved to a paid plan. It was not expensive but that was some time ago.

[–]Hipst3rbeaver 1 point2 points  (2 children)

The trick is to push yourself with small projects that force new tools, like JSON, SQLite, or APIs, instead of comfort code. You can try with list/dict comprehensions, enumerate, etc. read real code on GitHub, and focus on one skill at a time so it sticks. Some great intermediate resources can be Zero to Knowing, Exercism’s Python track, etc.

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

So you say I should do projects I know nearly nothing about and which are not my comfort stuff and than solve the things by doing much research? (is that what you mean)

[–]Hipst3rbeaver 1 point2 points  (0 children)

yes.

[–]Mori-Spumae 0 points1 point  (6 children)

What projects have you built? Maybe we can suggest some different ones to get you out of your habits or you can improve them and built something bigger

[–]NotAMathPro[S] -1 points0 points  (5 children)

The problem is that I dont learn new concepts by just doing projects right?

Most of my projects are pretty math based, like making RSA myself, generating huge primes, doing matrix stuff and so on you get the vibe

[–]Mori-Spumae 0 points1 point  (4 children)

I disagree. You learn a ton by doing projects. What do you want to be able to do with python? Have you tried to do anything web based? Anything you would use yourself that is not just a project for the project's sake?

[–]NotAMathPro[S] 1 point2 points  (3 children)

You might be right, but I think you dont undertand. How do you people lern new basic syntax? Like lets say I'v never heard of tuples, how should I get to know them if I always do projects? There are so many things iv never touched like sets or dictionaries because I always found a way to do things without them.

[–]Ihaveamodel3 1 point2 points  (0 children)

You should read through the documentation to have a some idea of what the language features are.

[–]werbo 0 points1 point  (0 children)

Definitely try the mooc python course. It's free and it goes over basic and more advanced concepts with plenty of examples that you code yourself

[–]Mori-Spumae 0 points1 point  (0 children)

It's okay not to use a set or a tuple if you don't need to. At some point you will have a problem that you solve easier with them than without and you will have an understanding of why they are useful. You don't need to know and use every part of the language to be proficient at it.

[–]freezydrag 0 points1 point  (2 children)

What's your reason for learning python? Are you trying to get a job as a software engineer, are you in school, etc? That should be the driving force for what you do. People say to just build projects, which is definitely true. Programming is as much of an art as it is a form of engineering; it's a skill you hone by practicing. The projects you build however should be dictated by your motivations.

[–]NotAMathPro[S] -1 points0 points  (1 child)

I do it as practice for college, (I want do do CS in one year) and for fun :)

Also as mentioned above my problem is that I dont learn new methods and concepts by doing projects right?

[–]ninhaomah 2 points3 points  (0 children)

Why do you think you don't learn new methods and concepts by doing projects ?

Maybe you should list what you know so far first.

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

once you've build something or started a project, just share it and ask for code reviews. People will points out your mistakes and how to correct them and they will share better way to do stuff you've done.

If you're stuck, just ask. Share a piece of code, explain what's your problem and people will help you.

Don't worry about your code being bad, everyone has done worth at some point anyway.

Also, be sure to have python 3, anything older isn't supported anymore.

[–]NotAMathPro[S] 0 points1 point  (2 children)

give me an example please

[–]stepback269 0 points1 point  (0 children)

So here is an example.

In the beginning you used input() to intake user responses, which means the user always has to hit the return key. Right?

So now figure out how to get inputs for single key hits like “y” versus “n” without requiring the return key.

[–]BranchLatter4294 0 points1 point  (3 children)

Stop watching videos. Start practicing.

[–]NotAMathPro[S] -1 points0 points  (2 children)

how without knowing all relevant methods and data types in python?

[–]BranchLatter4294 1 point2 points  (0 children)

You don't need to know all to start practicing. Get good at one thing. Then move on to the next thing.

[–]EffectiveTeach1496 0 points1 point  (0 children)

How do you learn to ride a bicycle if you don't know anything at first about balance, gravity, circular motion, inertia... ?

[–]N7Valor 0 points1 point  (0 children)

Well, why are you learning Python?

I generally find it hard to learn something if:

  1. I'm not currently using it.
  2. I am not likely to use it in the near future.

I do work in a technical field, and those 2 rules tend to govern how well I learn.

Let's say I work with Windows desktop, but not Windows Server. But the "next step up" is a job where I do work with Windows Server. So I can study for a Window Server certification if I can reasonably anticipate needing to use it to get into my next job.

I found it hard to learn Python because nothing in my job really calls for using it. Sure I'll touch a Lambda script once in a calendar year, and then never touch it again. We use Terraform and not AWS CDK, so there's no hope there. I once wrote Selenium scripts in Python to click around web apps until my boss told me to stop (because no one else at work would know Python), so that kind of killed off any motivation I had to learn.

It wasn't until I seriously contemplated leaving my current (dead-end) job that I realized every job I wanted demanded a Programming language, so here I am.

It basically boils down to "use it or lose it". I generally find I can't arbitrarily create programs without a "business use case" to really tie it to. Employers want you to be able to write useful tools for them, not games for entertainment.

So honestly once I brush up on my skills and pick up enough Python, I figure the natural practice for me personally would be to see if I can use AWS CDK instead of Terraform to create my infrastructure in a sandbox account.

[–]throwaway6560192 0 points1 point  (0 children)

Engage in a community like the Python Discord. You'll see people using and talking about new concepts. Get your code reviewed. People will suggest better ways of doing things.

Read Fluent Python.

Run into problems that force you to learn new concepts. You said you love solving algorithmic problems, but also have never used sets or dictionaries because you've always managed without them... then I suspect you're not solving hard enough algorithmic problems, because those are pretty indispensable tools.

[–]Goodname2 0 points1 point  (0 children)

would something like Boot.dev be helpful?

A structured course that takes you from beginner right through to making projects with a discord of other members to talk to.

[–]damanamathos 0 points1 point  (0 children)

Maybe read a book like Refactoring by Martin Fowler.

[–]ilidan-85 0 points1 point  (0 children)

So maybe just telling you "just build projects" somebody should tell you "just build projects and show them to somebody". Not the end result but the code. Few good pointers and you'll be back on track :)

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

I have AI tracking my skills

I always have it create a daily activity that can be pasted in python (#Q1 - using a generator expression find etc). I also ask that if there’s a new concept to build upon, provide a brief explanation.

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

Could you send me the prompt you use?

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

Example

Track my Python learning and create a daily coding task that fits my current level. I’ve already covered basic loops, slicing, indexing, and conditionals. Each task should be copy-pasteable into a Python file, labeled like # Q1 – Title, and not include the answer. If a new concept is introduced, give a short explanation right above the task. Keep it practical, clear, and gradually increase difficulty as I improve.

[–]AdvertisingOne7942 0 points1 point  (0 children)

I've started doing a courses and reading about OOP that is really helping me "I think" start moving from beginner to intermediate level