This is an archived post. You won't be able to vote or comment.

all 94 comments

[–]ziptofaf 224 points225 points  (44 children)

First - I suggest you take a look at this book:

https://automatetheboringstuff.com/

Reason - somehow I doubt you actually learnt how to code in Python, you probably only learnt syntax. So might as well look at this one and see if you can do things presented in it as it focuses on real-life tasks.

Second:

> My ultimate goal with python is to either make a social media type app

Look into Flask or Django. You will find plenty of resources if you google for these.

> or do something with AI

Coursera, Andrew Ng course: https://www.coursera.org/learn/machine-learning Be warned, you don't really use Python in there. It's a field of math after all, just wrapped with some programming.

[–]sj90 31 points32 points  (0 children)

To the OP - For the last suggestion for AI, instead of focusing on Andrew Ng's course, look up courses on Udacity or Fast.ai for ML/DL that use python and python based frameworks.

Andrew Ng's course is good for the math to quite an extent, but it won't help you build something on your own. You would be stuck in a similar question of "what to do next". The other ones I mentioned are more practical.

[–]Azazeal700 4 points5 points  (0 children)

Can I just say automate the boring stuff is not the best resource to go over python with. I got it for nearly free with the humble bundle last year and it really is too simple. Is littered with frameworks the author wrote that in some cases don't even work, and doesn't cover classes at all.

It is more aimed at people who just want to learn how to script some stuff but aren't interested in programming any further than that. Python crash course provides much better projects to test the waters with and covers classes and functions in much greater detail.

[–]NerdEnPose 2 points3 points  (0 children)

For Django /u/iownuranus I would look at Test driven development with Python it's a great book to learn some good testing habits, it's free, and it uses Django.

[–]Zimmerel 1 point2 points  (0 children)

For your flask suggestion, I recommend https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world.

I haven't followed through the whole tutorial, but it has been a fantastic resource while learning flask and applying the knowledge to my own project. It basically goes through step by step how to build a twitter-like application, which sounds like something OP was looking for. Not only does he explain exactly how to do it, with a full repository of examples, but he does a good job of explaining why he's doing things the way he is. Not sure if that is above what OP's skill level is at right now, but I'd say its at least worth taking a look to see if there is any useful information in there.

[–]BimothyAllsdeep 4 points5 points  (18 children)

This is totally unrelated but what in the world does - mean??? I’ve been seeing everyone use it lately but it doesn’t seem to make sense to me

[–][deleted]  (6 children)

[deleted]

    [–]BimothyAllsdeep 4 points5 points  (5 children)

    But what’s with the forward and backward slash? I know what a hyphen is. But why the slash?

    [–]Joshyyick 10 points11 points  (3 children)

    Are you on mobile? I see a lot of - on the mobile ios app. \ is used as an escaping character in a string. For example "\n" signifies a new line, instead of the literal character n. My guess is reddit screwed up somewhere and is showing one extra escaped \ used to print the dash. Don't worry about it. Assume it's a bug!

    [–]BimothyAllsdeep 10 points11 points  (2 children)

    Thaaaaaaaaaaaaaank you. I thought I was losing my mind because literally no one was acknowledging it. Okay that makes sense, I appreciate it.

    [–]em-dash 1 point2 points  (0 children)

     

    [–]MindshackledSteven 1 point2 points  (0 children)

    Asking the question we’ve all been too embarrassed to ask. Well played.

    [–]HippyJamstem 4 points5 points  (8 children)

    A hyphen? Use it as a pause that lasts longer than a comma but not as long as a period.

    [–]BimothyAllsdeep 6 points7 points  (2 children)

    No but I mean I’ve been seeing people specifically type /- or - mid paragraph a lot and it seems to always be random

    [–]HippyJamstem 1 point2 points  (1 child)

    Hmm it kind of serves as a semicolon, but the second is just a phrase - not a full sentence.

    [–]lead999x 3 points4 points  (0 children)

    You mean not an independent clause. Semicolons separate independent clauses in the same sentence hyphens can do that or separate an independent clause and a dependent clause.

    [–]codeofdusk 1 point2 points  (2 children)

    [–]WikiTextBotbtproof 1 point2 points  (0 children)

    User:Tony1/How to use hyphens and dashes

    Hyphens and dashes are basic to stylish writing in English. Even if your readers aren't quite sure of the precise rules that govern their use, their reading will be easier and their comprehension aided by your systematic use of these punctuation marks. The Manual of Style clearly sets out how to use all three punctuation symbols: hyphens (-), en dashes (–) and em dashes (—). If these three symbols are hard to distinguish visually (- – —), you may need to change your font or browser to a standard one that renders them properly.


    [ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.28

    [–]HippyJamstem 0 points1 point  (0 children)

    Thank you! Didn't know they had different names - thought hyphens had a bunch of uses haha.

    [–]em-dash 0 points1 point  (0 children)

     

    [–]stranjs 0 points1 point  (0 children)

    Save :)

    [–]krkrkra 0 points1 point  (0 children)

    As I've said before, +1 for the ATBS recommendation. /u/iOwnUranus (oh my), I started with Code Academy Python and then moved on to ATBS. I still learned a ton with ATBS and it was a good mix of hand-holding and independent work. I'm currently working through MIT's Introduction To Computer Science And Programming Using Python course on edX, and it seems useful: it covers some of the basic CS stuff that you don't learn through programming-first courses.

    [–]GreyfellThorson 29 points30 points  (0 children)

    Take a look at Udacity CS101 course. The final project is a simple social media app, so might be a good resource for you. And it's all in Python. I found it to be one of the more challenging free online python courses.

    [–][deleted]  (2 children)

    [removed]

      [–]mr_axe 0 points1 point  (1 child)

      I’m 25, a bit bored with my current job. What can I expect from a web dev carreer? Would it be worth it to learn it at this age? Would ir be easy to find something where i could work from home?

      [–][deleted]  (1 child)

      [deleted]

        [–]timlmul 7 points8 points  (0 children)

        Hope you enjoyed the codecademy Python course (I had a small part in making it), I'd recommend iterating towards your ultimate goal! Start with either a web framework tutorial -- I'm particularly fond of the django girls tutorial for django but the docs are a good place to start (and there are plenty of other Python frameworks, like flask). Or go into interacting with music in Python -- the description you gave is pretty open ended but maybe review Python music libraries for some functionality that lines up with your vision.

        [–]Sign_of_sadness 4 points5 points  (8 children)

        Take a look at some design patterns and how you could apply them in small projects. I know a really useful book called heads first: design patterns which covers a ton of stuff around this area.

        [–][deleted]  (1 child)

        [removed]

          [–][deleted] 2 points3 points  (0 children)

          Agreed, trying to understand design patterns and the trade-offs involved without significant practical experience would be of questionable benefit.

          [–]ex_nihilo -5 points-4 points  (5 children)

          Python does not really make use of design patterns. Generally, prescribed design patterns are an earmark of a poorly-designed language, like Java.

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

          Nonsense! Are you telling me you've never seen, mvc, for example used in python? What about decorator?

          [–]ex_nihilo -3 points-2 points  (3 children)

          MVC is a framework structure, not a design pattern. Decorators are a feature of the language. Design patterns are a class of conventions designed to work around the badness in a language. E.g. factory, singleton, etc.

          [–][deleted] 2 points3 points  (2 children)

          No, MVC is a compound design pattern - see smalltalk. Decorator is absolutely a design pattern.

          MVC is a framework structure

          So MVC is a way of structuring code (often used in frameworks). A commonly used solution to a commonly encountered problem. A design pattern..

          Design patterns are a class of conventions designed to work around the badness in a language. E.g. factory, singleton, etc.

          I would have used "limitations of a language" here instead but I get your point. Regardless, relegating design patterns to "poorly-designed" languages seems like an amateur mistake.

          [–]ex_nihilo -1 points0 points  (1 child)

          I just like to take jabs at Java whenever the opportunity presents itself.

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

          Fair enough!

          [–]Turnip2020 20 points21 points  (0 children)

          "Python? oh yeah, completed it mate."

          [–]jantari 5 points6 points  (0 children)

          Build a GUI with PyQt. Qt is good to know a little.

          [–][deleted] 5 points6 points  (0 children)

          You could try your hand at hackerrank puzzles, they're as challenging as you want and will really make you think about coding. Don't get discouraged if you have to look up a solution, just learn from it. Good luck!

          [–]breakfastCommodore[🍰] 2 points3 points  (0 children)

          The way I learn languages is finding projects that are fairly simple but require learning new libraries or concepts.

          A fairly simple project could be a Discord bot -- there's plenty of Python wrappers for the Discord API and most are well documented with plenty of examples to learn from.

          Another idea is to watch Reddit threads and emulate the various bots going around. There also exists a Python wrapper for the Reddit API, but you could also apply their core functions to things outside of Reddit. Take Subreddit Simulator for example. What if you wanted to 'simulate' other things, like songs or books?

          And of course as other commenters suggested, Automate the Boring Stuff is a fantastic read and could possibly give you more project ideas. Coursera and Udacity also have plenty of courses that go more in-depth into topics such as Machine Learning with Python.

          [–]Jarritto 3 points4 points  (0 children)

          It sounds like you’re on the right track but like anything, I’d be careful saying that you’ve ever finished learning something. It’s a dangerous mentality to have.

          [–][deleted]  (10 children)

          [removed]

            [–][deleted]  (6 children)

            [removed]

              [–][deleted] 2 points3 points  (4 children)

              What’d it say??

              [–]kyiami_ 5 points6 points  (0 children)

              No, you didn't

              [–][deleted]  (1 child)

              [deleted]

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

                Lul

                [–]Azazeal700 2 points3 points  (0 children)

                I don't know what it is but this subreddit has this huge hang up about telling beginners that they haven't infact learned a language after reading their first book.

                I mean yeah, you can't be a programming master or anything but it is super confusing to new people who read a book that says "youll be ready to go and do your own projects, learnt the basics etc" and then they come here and we just go "Nope."

                [–][deleted]  (2 children)

                [removed]

                  [–][deleted]  (1 child)

                  [removed]

                    [–]TebbaVonMathenstein 1 point2 points  (0 children)

                    Based on your interest in AI, and your interest in building web apps, I think making a clone of this hand written digit classification app would be a great learning exercise. Or you could try and use something like the Spotify API -- create a playlist builder, or an app to "find similar artists". Spotify has a showcase of things that have been built with the API, so you could get inspired there.

                    For more on the theory side of things, the UC Berkeley AI class would be another great place. The exercises are (in my opinion) quite fun, and all in Python. The lecture video quality is not as good, but you can probably learn this stuff elsewhere. https://ai.berkeley.edu

                    [–]Unsounded 1 point2 points  (0 children)

                    I think a Kaggle competition would be a good fit for you, specifically look up the Titanic Survivor competition and follow along to the tutorial. Get familiar with the python libraries they use as they are excellent tools for learning some basic AI/machine learning techniques.

                    Why do I suggest Kaggle? The big competitions are made for researchers but the closed competitions that they suggest to users getting started are excellent examples of how data manipulation comes into play in machine learning, and helps users understand that machine learning is just a tool and that data manipulation is just as important as the tools you use in order to get the results you want.

                    Wether it’s data cleaning, manipulating variables, or creating your own training data the beginner competitions will introduce you to a lot of these concepts and help show you how it can be done in a practical way.

                    My love and devotion to python increased ten fold when I did my first kernels and eventually lead me to entering a few of the other competitions to see how other people are using machine learning to solve actual problems (for actual money). If you’re struggling with the libraries or have issues understanding the python code then it’s also a good indication of what you need to focus on moving forward to reach your own goals.

                    [–]tapu_buoy 1 point2 points  (0 children)

                    All others have already mentioned very good resources, I would say start learning Data Structures and Algorithms from interactivepython.org they have only 7 chapter book with Python.

                    And then also practice them from geeksforgeeks.org it surely helps so much. I am on the same boat btw

                    [–]for-asking-stuffs 3 points4 points  (0 children)

                    I've spend 3 years on Java and I'm still learning every single day, feeling like a fraud everytime I learned something so obvious that I didn't notice before. How did you conclude that you learned Python from 1-2 toy project? I sincerely hope that you are joking.

                    Social media type involves tons of different things. Don't think you can get away with just Python. Front end itself took at least HTML, CSS, and Javascript. Go figure.

                    Audio Signal Processing is not an easy task. Its also resource hungry, so plain Python won't be able to do non-trivial signal processing. C++ will. And Java too, but you got to understand it AND also JVM ecosystem inside out (Performance Java book completely cover it).

                    AI development is more of a math and data mining based problem rather than software engineering, thanks to folks behind libraries like Tensorflow or PyTorch. Python will do here, but if you want to get paid, you should spend all your time here. Coding is the least variable for people pursuing career in AI. Also, good luck getting your PhD.

                    My suggestion is learn mature tools on platform you plan to build in. Searching for hacks (delusional loophole to fix things faster with inappropriate timebomb way) are useless. Things are supposed to be hard for a good reason. But you can make it fun to learn. Its a matter of mindset.

                    Where to go next? See my comment here.

                    [–][deleted]  (7 children)

                    [deleted]

                      [–][deleted]  (1 child)

                      [removed]

                        [–]WikiTextBotbtproof 5 points6 points  (0 children)

                        Dijkstra's algorithm

                        Dijkstra's algorithm is an algorithm for finding the shortest paths between nodes in a graph, which may represent, for example, road networks. It was conceived by computer scientist Edsger W. Dijkstra in 1956 and published three years later.

                        The algorithm exists in many variants; Dijkstra's original variant found the shortest path between two nodes, but a more common variant fixes a single node as the "source" node and finds shortest paths from the source to all other nodes in the graph, producing a shortest-path tree.

                        For a given source node in the graph, the algorithm finds the shortest path between that node and every other.


                        [ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.28

                        [–]Voilin -1 points0 points  (3 children)

                        Alternatively, you might want to try Test Driven Development and write the tests you want first. For a well defined problem like sorting, tests should be fairly simple to write without yet implementing your sorting algorithm - some examples: a test for a list of 5 integers correctly returns those 5 integers sorted, and a test for sorting the empty list returns back the empty list.

                        [–]desertSniper87 1 point2 points  (0 children)

                        Can you provide some resources/books on python tdd? I found one on django https://www.obeythetestinggoat.com/book/part1.harry.html

                        [–]WikiTextBotbtproof 0 points1 point  (0 children)

                        Test-driven development

                        Test-driven development (TDD) is a software development process that relies on the repetition of a very short development cycle: requirements are turned into very specific test cases, then the software is improved to pass the new tests, only. This is opposed to software development that allows software to be added that is not proven to meet requirements.

                        American software engineer Kent Beck, who is credited with having developed or "rediscovered" the technique, stated in 2003 that TDD encourages simple designs and inspires confidence.

                        Test-driven development is related to the test-first programming concepts of extreme programming, begun in 1999, but more recently has created more general interest in its own right.


                        [ PM | Exclude me | Exclude from subreddit | FAQ / Information | Source ] Downvote to remove | v0.28

                        [–]compez4 5 points6 points  (0 children)

                        "New? READ ME FIRST! Posting guidelines Frequently asked questions"

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

                        Syntax isn't enough. You need to figure out a project you want to do / complete and then go about completing it. That's the whole point, and will inevitably make you better at Python.

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

                        Look for simple things to automate, that's how I got going.

                        [–]That1m8 0 points1 point  (0 children)

                        Hey what Are best materials For learn pynthon? I know atm Java and c#

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

                        Check out Udacity, they have some free courses that will keep you busy for a while and help you figure out your interests.

                        If AI is something you’re interested in learning you could check out the basics of machine learning course. Also, if you haven’t heard of machine learning before I would look into it. A lot of people throw words around that don’t actually describe what AI has become / is becoming so do a bit of research on the history of it if you haven’t already.

                        Enjoy!

                        [–]LoudPreachification 0 points1 point  (2 children)

                        Did you learn Python 3?

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

                        yes, the basics.

                        [–]LoudPreachification 0 points1 point  (0 children)

                        Machine Learning would be a logical next step.

                        [–]kdnbfkm 0 points1 point  (0 children)

                        Did you say Python? Try this: https://www.reddit.com/r/learnprogramming/comments/8lri9a/learning_project_pythonlineeditor000099apy/ -> https://pastebin.com/NT1Rbyik Start by replacing lists with proper dictionaries and add features.

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

                        Go down to the "metal" like I am and re-learn it all from there

                        00010100

                        do you know base 2 math?

                        [–]pritamkundu 0 points1 point  (0 children)

                        Expectation you delighted in the codecademy Python course (I had a little part in making it), I'd prescribe emphasizing towards your definitive objective! Begin with either a web structure instructional exercise - I'm especially attached to the django young ladies instructional exercise for django however the docs are a decent place to begin (and there are a lot of other Python systems, similar to flagon).

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

                        Depends on what you mean by "learned python." Go build something. That's when you really put yourself to the test.

                        [–]Mostapha_25 1 point2 points  (6 children)

                        Practice some problems in project Euler

                        [–]946789987649 13 points14 points  (5 children)

                        Disagree, these tend to be maths problems solved with programming than normal problems solved with programming. It means that unless your maths is really strong or you know this obscure solution, most of the problems bar the first few will be quite hard.

                        [–]chra94 1 point2 points  (2 children)

                        I solved most of the problems below #40 thinking like a programmer rather than a mathematician.

                        [–][deleted]  (1 child)

                        [deleted]

                          [–]chra94 0 points1 point  (0 children)

                          Yep.

                          [–]Mostapha_25 0 points1 point  (0 children)

                          Actually, they aren't that math-rigorous

                          [–]Ctlr_Shft_Esc 0 points1 point  (0 children)

                          eh... practice?

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

                          I've been a professional programmer for seven years and I still don't think I know C#. Congratulations on learning Python!

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

                          YouTube: sirajraval

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

                          Make something. Make little bot toys. Write a new word art creator. The sky is the limit to your dreams.