├── README.md └── wiki ├── _Footer.md ├── dpaste.jpg ├── resources └── dpaste.jpg ├── Home.md ├── home.md ├── Job-Postings.md ├── _Sidebar.md ├── How-To-Use-Pastebin.md ├── Learning-Django.md ├── Coding-Projects-Practise.md ├── Recommended-Resources.md ├── Intermediate-Topics.md ├── FAQ.md ├── Learn-to-Program-with-Python.md ├── Group-Guidelines.md └── sscce-python.md /README.md: -------------------------------------------------------------------------------- 1 | # python_group 2 | -------------------------------------------------------------------------------- /wiki/_Footer.md: -------------------------------------------------------------------------------- 1 | ### Wiki Page for the Python Programming Language Group 2 | -------------------------------------------------------------------------------- /wiki/dpaste.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonprogramming-group/python_group/HEAD/wiki/dpaste.jpg -------------------------------------------------------------------------------- /wiki/resources/dpaste.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pythonprogramming-group/python_group/HEAD/wiki/resources/dpaste.jpg -------------------------------------------------------------------------------- /wiki/Home.md: -------------------------------------------------------------------------------- 1 | # Welcome to the wiki for Python Programming Language Group! 2 | 3 | Documents for https://www.facebook.com/groups/python.programmers/ 4 | 5 | Please, read the [Group-Guidelines](./Group-Guidelines) and [FAQ](./FAQ)! 6 | -------------------------------------------------------------------------------- /wiki/home.md: -------------------------------------------------------------------------------- 1 | # Welcome to the wiki for Python Programming Language Group! 2 | 3 | Documents for https://www.facebook.com/groups/python.programmers/ 4 | 5 | Please, read the [Group-Guidelines](./Group-Guidelines) and [FAQ](./FAQ)! 6 | -------------------------------------------------------------------------------- /wiki/Job-Postings.md: -------------------------------------------------------------------------------- 1 | 1. Job postings must be Python related, and clearly state that the position is paid; 2 | 3 | 2. Contact - contact name and method( PM, email, phone/sms, etc.) 4 | 5 | 3. Contain job description; 6 | 7 | 4. Include required skills; 8 | 9 | 5. State level of experience ( if no new programmers/freshers, save yourself some trouble and state this; 10 | 11 | 6. Include location; and 12 | 13 | 7. Specify if the job can be worked remotely or requires onsite presence (this is a common question, and will avoid needless comments). 14 | 15 | ** Or link to a page containing such information 16 | -------------------------------------------------------------------------------- /wiki/_Sidebar.md: -------------------------------------------------------------------------------- 1 | * [Group on Facebook](https://www.facebook.com/groups/python.programmers/) 2 | * [Group Guidelines](https://github.com/pythonprogramming-group/python_group/wiki/Group-Guidelines) 3 | * [Getting Started with Python](https://github.com/pythonprogramming-group/python_group/wiki/Learn-to-Program-with-Python) 4 | * [FAQ](https://github.com/pythonprogramming-group/python_group/wiki/FAQ) 5 | * [Recommended Resources](https://github.com/pythonprogramming-group/python_group/wiki/Recommended-Resources) 6 | * [Intermediate Topics](https://github.com/pythonprogramming-group/python_group/wiki/Intermediate-Topics) 7 | * [Coding - Projects Ideas & Practise ](https://github.com/pythonprogramming-group/python_group/wiki/Coding-Projects-Practise) 8 | * [Learning Django ](https://github.com/pythonprogramming-group/python_group/wiki/Learning-Django) 9 | -------------------------------------------------------------------------------- /wiki/How-To-Use-Pastebin.md: -------------------------------------------------------------------------------- 1 | ## Indentation == Code in Python, Facebook removes indentation. 2 | 3 | **Pastebin** this is free online service to share your code. There are many to choose from =>[dpaste](http://dpaste.org/), [bpaste](https://bpaste.net/+python), [github gist](https://gist.github.com/).... 4 | 5 | ## Steps to use [dpaste](http://dpaste.org/), other websites are similar 6 | 1) Copy your code to the clipboard 7 | 8 | 2) Go to http://dpaste.org/ 9 | 10 | 3) Paste your code into the text area; 11 | 12 | 4) Ensure **Python** is selected as the syntax; 13 | 14 | 5) Select 'Paste It'; 15 | 16 | 6) Copy the URL; and 17 | 18 | 7) Paste the URL into you post 19 | 20 | ## Example - How to Use a Pastebin (dpaste) 21 | ![Pastebin Example](https://s3.ca-central-1.amazonaws.com/python-programming-group/images/dpaste.jpg) 22 | 23 | -------------------------------------------------------------------------------- /wiki/Learning-Django.md: -------------------------------------------------------------------------------- 1 | 2 | **As per learning any new programming language, do not copy and paste, code out all examples**  3 | 4 | #### note: If you do try to use Django, without understanding how it works, you will waste days debugging simple things that are explained in the following tutorials. If you try to learn Django without at least understanding the fundamentals of Python, you will struggle. You will also need to have a basic undertanding of HTML and CSS. 5 | 6 | 1. Django is a Python framework, if you do not understand Python 3 you will struggle a lot. 7 | 1. At the minimum learn up to classes 8 | 2. Read [PEP8](https://pep8.org), the official Python style guide 9 | 10 | 11 | 2. Read the Mozilla guide to html forms, some newcomers fail to understand web forms, and the official Django tutorial does not give this important topic enough emphasis imho. 12 | https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms 13 | 14 | 15 | 3. Django means using a database, and if you do not understand how to build a relational database you will struggle. 16 | 1. https://wsvincent.com/database-design-tutorial-for-beginners/ 17 | 2. https://en.wikipedia.org/wiki/Relational_database 18 | 19 | 4. Do the official Django tutorial, twice. Yes twice, the first time you will struggle, the second time the key concepts will become more clear 20 | https://docs.djangoproject.com/en/2.1/intro/tutorial01/ 21 | 22 | 23 | 5. Mozilla use Django in production Complete the Mozilla Django tutorial, the have a very detailed and helpful tutorial. One of my favorite parts, the project is not a Blog and uses multiple tables 5, reflecting an actual real world project. 24 | https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django 25 | This is doable in 2-3 days, faster if you really push it 26 | 27 | 6. Read about HTTP: https://developer.mozilla.org/en-US/docs/Web/HTTP 28 | 29 | 7. Mozilla is the best site for all things web 30 | 31 | 32 | The video series Coding for Entrepreneurs, may be helpful too. 33 | https://www.codingforentrepreneurs.com 34 | 35 | -------------------------------------------------------------------------------- /wiki/Coding-Projects-Practise.md: -------------------------------------------------------------------------------- 1 | ## Project Driven 2 | 3 | * Quora - [What Python project can one do in 2 weeks](https://www.quora.com/What-Python-project-can-one-do-in-2-weeks-I-am-an-engineering-student-I-did-Python-as-an-online-summer-training-and-now-as-part-of-my-project-submission-I-have-to-submit-one-based-on-Python); 4 | * More Project Ideas, [Martyr2'S Mega Project Ideas List!](http://www.dreamincode.net/forums/topic/78802-martyr2s-mega-project-ideas-list/); 5 | * [Finding Ideas for Programming Side Projects](https://dev.to/samjarman/finding-ideas-for-programming-side-projects); 6 | * [Charles Leifer - Build a Simple Redis Server with Python](http://charlesleifer.com/blog/building-a-simple-redis-server-with-python/); 7 | * [Five mini programming projects for the Python beginner](https://knightlab.northwestern.edu/2014/06/05/five-mini-programming-projects-for-the-python-beginner/); 8 | * [Over 100 projects to complete for practice Python](https://github.com/jtuz/Projects); and 9 | * ["I Need Practice Programming": 49 Ideas for Game Clones to Code - Al Sweigart](https://inventwithpython.com/blog/2012/02/20/i-need-practice-programming-49-ideas-for-game-clones-to-code/) 10 | 11 | ## Coding Challenges/Practise Exercises 12 | * [Bob Belderbos and PyBites => Python Code Challenge](https://codechalleng.es/challenges); 13 | * [Reddit Daily Programmer](https://www.reddit.com/r/dailyprogrammer/) 14 | * Michigan State - [CS1 Python Programming Projects Archive](http://www.cse.msu.edu/~cse231/PracticeOfComputingUsingPython/index.php); 15 | * [Project Euler](https://projecteuler.net); 16 | * [exercism io](http://exercism.io/languages/python/about); 17 | * [CheckIO](https://checkio.org/); 18 | * [Code Fights](https://codefights.com/); 19 | * [Code Wars](https://www.codewars.com/); 20 | * [Practise Python](http://www.practicepython.org/); 21 | * [Hackerrank Python Domain](https://www.hackerrank.com/domains/python/py-introduction); 22 | 23 | ## Suggestions on Both 24 | Reddit/r/learnprogramming - [Where Can I Find Practice Exercises And Project](https://www.reddit.com/r/learnprogramming/wiki/faq#wiki_where_can_i_find_practice_exercises_and_project_ideas.3F) 25 | -------------------------------------------------------------------------------- /wiki/Recommended-Resources.md: -------------------------------------------------------------------------------- 1 | ## Books - There is no best book, there are many very good books on Python. 2 | There are numerous books to choose from, do not get sidetracked trying to find one. Pick a book that uses Python 3, if you have any doubts read the reviews on Amazon or Reddit. 3 | Here are some free books we recommend: 4 | * [Byte of Python](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Byte-of-python.pdf) or [online](https://python.swaroopch.com/) 5 | 6 | * [Fundamentals of Python Programming](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Fundamentals+of+Python+Programming.pdf) 7 | 8 | * [Coder's Apprentice: Learning Programming with Python 3](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Coder%E2%80%99s+Apprentice+Learning+Programming+with+Python+3.pdf) 9 | 10 | * [How to Think Like a Computer Scientist](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/thinkpython2.pdf) or read it [online and interactive](https://interactivepython.org/courselib/static/thinkcspy/index.html) 11 | 12 | * [Python for Everybody](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Python+for+Everybody.pdf) 13 | 14 | 15 | ## Videos - As voted by the group, with some admin recommendations 16 | * [Sentdex: Python 3 Basics Tutorial Series](https://www.pythonprogramming.net/introduction-to-python-programming/) Also see his [Youtube Playlist](https://www.youtube.com/playlist?list=PLQVvvaa0QuDe8XSftW-RAxdo6OmaeL85M) 17 | 18 | * [Introduction to Computer Science and Programming Using Python (Edx - MIT)](https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11) Also available from [MIT Opencourseware](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/) 19 | 20 | * [Automate the Boring Stuff with Python](https://www.youtube.com/playlist?list=PL0-84-yl1fUnRuXGFe_F7qSH1LEnn9LkW) 21 | 22 | * [Corey Schafer: Python Programming Beginner Tutorials]( https://www.youtube.com/playlist?list=PL-osiE80TeTskrapNbzXhwoFUiLCjGgY7) 23 | 24 | * [Complete Python Masterclass (Udemy)](https://www.udemy.com/python-the-complete-python-developer-course/) 25 | 26 | * [Python for Everyone (Coursera - UoM)](https://www.coursera.org/specializations/python) 27 | 28 | * [Introduction to Python: Absolute Beginner (edx - Microsoft)](https://www.edx.org/course/introduction-python-absolute-beginner-microsoft-dev236x-1) 29 | 30 | * [Learn to Program: Crafting Quality Code (Coursera - UoT)](https://www.coursera.org/learn/program-code) 31 | 32 | * [Introduction to Python: Fundamentals (edx - Microsoft)](https://www.edx.org/course/introduction-python-fundamentals-microsoft-dev274x-1) 33 | 34 | * [Learn to Program: The Fundamentals (Coursera - UoT)](https://www.coursera.org/learn/learn-to-program) 35 | 36 | * [NewBoston: Python 3](https://thenewboston.com/videos.php?cat=98) 37 | 38 | ## Websites 39 | 40 | 41 | ## Some Additional Beginner Resources 42 | 43 | -------------------------------------------------------------------------------- /wiki/Intermediate-Topics.md: -------------------------------------------------------------------------------- 1 | ## OOP/Classes 2 | ### When to use OOP: 3 | * [Pycon - Stop Writing Classes](https://www.youtube.com/watch?v=o9pEzgHorH0) 4 | 5 | * [Stack Overflow: When should I use classes in Python](https://stackoverflow.com/questions/33072570/when-should-i-be-using-classes-in-python) 6 | 7 | 8 | ### OOP Learning Resources: 9 | * [Python 3 Documentation](https://docs.python.org/3/tutorial/classes.html) 10 | 11 | * [Python's Class Development Toolkit - Core Python Developer Richard Hettinger](https://www.youtube.com/watch?v=HTLu2DFOdTg) 12 | 13 | * [PyBites' How to Write a Python Class](https://pybit.es/python-classes.html) 14 | 15 | * Corey Schafer, self.learnpython six part video series on object-oriented programming in Python. *Highly Recommended* 16 | 1) [Classes and Instances](https://www.youtube.com/watch?v=ZDa-Z5JzLYM) 17 | 2) [Class Variables](https://www.youtube.com/watch?v=BJ-VvGyQxho) 18 | 3) [classmethods and staticmethods](https://www.youtube.com/watch?v=rq8cL2XMM5M) 19 | 4) [Inheritance - Creating Subclasses](https://www.youtube.com/watch?v=RSl87lqOXDE) 20 | 5) [Special (Magic/Dunder) Methods](https://www.youtube.com/watch?v=3ohzBxoFHAY) 21 | 6) [Property Decorators - Getters, Setters, and Deleters](https://www.youtube.com/watch?v=jCzT9XFZ5bw) 22 | 23 | * [Voidspace Michael Foord](http://www.voidspace.org.uk/python/articles/OOP.shtml) 24 | 25 | * [Difference between Staticmethod and Classmethod - Stackoverflow](https://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod) 26 | 27 | * [Learning to Program(Object Oriented Programming) - Alan Gauld](http://www.alan-g.me.uk/l2p/index.htm) 28 | 29 | * [Jeff Knupp - Improve Your Python: Python Classes and Object Oriented Programming](https://www.jeffknupp.com/blog/2014/06/18/improve-your-python-python-classes-and-object-oriented-programming/) 30 | 31 | 32 | * [Bernd Klein's Python Course - OOP](http://www.python-course.eu/object_oriented_programming.php) 33 | * [Bernd Klein's Python Course - Python 3 Properties](https://www.python-course.eu/python3_properties.php) 34 | 35 | 36 | * [Problem Solving with Algorithms and Data Structures](http://interactivepython.org/runestone/static/pythonds/index.html) 37 | 38 | ## Decorators 39 | * [5 reasons you need to learn to write Python decorators - Aaron Maxwell](https://www.oreilly.com/ideas/5-reasons-you-need-to-learn-to-write-python-decorators) 40 | 41 | * [Primer on Python Decorators - Real Python](https://realpython.com/primer-on-python-decorators/) 42 | 43 | * [Python Decorators: A Step-By-Step Introduction - Dan Bader](https://dbader.org/blog/python-decorators) 44 | 45 | * [Understanding Python Decorators in 12 Easy Steps! - Simeon Franklin](http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/) 46 | 47 | * [Bernd Klein's Python Course - Decorators](https://www.python-course.eu/python3_decorators.php) 48 | 49 | * [Python Tutorial: Decorators - Dynamically Alter The Functionality Of Your Functions - Corey Schafer](https://www.youtube.com/watch?v=FsAPt_9Bf3U) 50 | 51 | ## List Comprehensions 52 | * [Python List Comprehensions: Explained Visually - Trey Hunner](http://treyhunner.com/2015/12/python-list-comprehensions-now-in-color/) 53 | 54 | * [Comprehending Python’s Comprehensions - Dan Bader](https://dbader.org/blog/list-dict-set-comprehensions-in-python) 55 | 56 | * [Python List Comprehension Tutorial(DataCamp) - Karlijn Willems](https://www.datacamp.com/community/tutorials/python-list-comprehension) 57 | 58 | * [List Comprehensions - Explain Like I'm 5 Python](https://rmotr.com/explain-like-im-five-python/list-comprehensions) 59 | -------------------------------------------------------------------------------- /wiki/FAQ.md: -------------------------------------------------------------------------------- 1 | # Incomplete 2 | 3 | ## What is the purpose of the group? 4 | To facilitate the learning of Python and promote the Python Programming Languate. Post should be directly related to Python, be it a question you have, a point of discussion, etc.. We will help programmers of all levels, but please note that we are not here to do your homework. The group can be very helpful provided you show effort to resolve the problem on your own, and follow the guidelines for posting questions. The purpose of the group is not to promote your youtube channel or web blog. 5 | 6 | Yes, we help newcomers but we are not here to hold your hand, be prepared to answer the question ["What have you tried?"](https://mattgemmell.com/what-have-you-tried/) 7 | 8 | ## Which version of Python should I install? 9 | Python 3.6. If you are using Mac OS or Linux do not attempt to remove the existing installation of Python. For Mac you can use Homebrew to help manage 10 | 11 | ## How do install Python? 12 | Depending upon your operating system Python may already be installed, Mac OS, and most versions of Linux already have Python installed. It is important not to remove. Additional help can be found here, [The Hitchhiker's Guide to Python - Properly Installing Python](http://docs.python-guide.org/en/latest/starting/installation/) 13 | 14 | ## How long does it take to learn Python? What is the fastest way to learn Python? 15 | Learning is a personal matter. It takes years for most people to master Python, but for the average person within a few weeks of hard work you will learn the many of fundamentals to help you write basic programs. If you have previous programming experience this will of course speed up the learning process. We suggest instead of asking "How fast can I learn Python", stop asking superflous questions and just begin. 16 | 17 | ## How do I install package/module? 18 | In the majority of case pip, Python's official package manager is used to install packages. Go to the documentation or repository for the package and follow the installation guidelines. 19 | 20 | It is best practise to install packages inside a virtualenv. 21 | **Notes:** 22 | 1. Some packages have dependencies that must be installed first. 23 | 2. If you are using Windows, ensure that your path is set. 24 | 3. If you are using PyCharm, I suggest reading their (guide)[https://www.jetbrains.com/help/pycharm/installing-uninstalling-and-upgrading-packages.html]. 25 | 26 | ## What topics can I post? 27 | Posts must be directly related to Python. The closely related topic of coding style is also acceptable. 28 | 29 | ## How do I post a question? 30 | Questions that are written in accordance with the [Guidelines](./Group-Guidelines). Do _not_ select _Create poll_, _Looking for recommendations_ when you write your question. Do _not_ add any attachments. Just write your *specific* question and click "post" 31 | 32 | ## Can we create a WhatsApp group? 33 | No! Never use WhatsApp with strangers! Such a group on WhatsApp would be used by criminals to attack other users. They would see your phone number and they can lure you to malicious websites. 34 | 35 | ## I need an idea for a project? 36 | It is not our role to give you ideas. Good ideas are a commodity. We do have a document that will help you will some ideas. 37 | 38 | ## What are the best Python modules? What is the best Python module to do _XYZ_? 39 | Some things to consider, check that the module is in active development by visiting the code repository. Review the documentation, if the documentation is poor you may want to consider another package. 40 | * [PyPi - Official Python Package Index ](https://pypi.python.org/pypi) 41 | * [Awesome Python](https://awesome-python.com/) 42 | * [Django](https://djangopackages.org/) 43 | 44 | ## How do I convert my Python code to an exe? 45 | pass 46 | 47 | ## How do I deploy my web application? 48 | pass 49 | 50 | ## How can I ... ? 51 | There are many ways to solve a problem. Try to solve it on your own. Break down the problem and search the web to find ideas. 52 | Show us what ideas you have already, so we can comment on that. State your goal. Ask **specific questions** that can be answered. Or hire someone to do it for you. Our group is for those who want to learn. Don’t expect us to do your work for you. We are here to help learning, not to do your code. 53 | 54 | ## Can I use Python to create Android Applications? 55 | pass 56 | 57 | ## Does anyone know about _XYZ_? 58 | We are over 99,000 users. The chances are rather high that someone used it before. So just get to the point and ask your actual question. [Learn how to post questions here](./How-To-Post-Questions). 59 | 60 | ## How does _XYZ_ work? 61 | Read the manual, documentation, handbook, developer guide. We are not here to read it for you. If there is no documentation then you probably don't want to use it. 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /wiki/Learn-to-Program-with-Python.md: -------------------------------------------------------------------------------- 1 | Feel free to comment, constructively criticize. Helpful comments will be added to the this, but my aim is to keep this short but still informative 2 | 3 | How to learn to program is one of the most asked questions on programming forums, reddit’s various programming subreddits, here in our group too, etc. I am still learning myself, learning is a life long concept for programmers. There are much more smarter people than me, but this is a question that gets asked, so here are my thoughts. Reddit, has a general learnprogramming subreddit, that addresses this and other FAQs that is very impressive. I will use some of it here and apply it to Python. 4 | "There is no universally agreed way of learning to code -- everybody prefers learning in a slightly different way, and you may need to do some experimenting to find an approach that works best for you." 5 | 6 | Pick one primary source to learn from, this source should be comprehensive. There is no quick way to learn. If you pick something else, you will miss key fundamentals of Python. Many newcomers get caught up in a trap of finding the best book, video. There are is no best, there are many good ones. 7 | 8 | ## tl;dr 9 | 1. Install Python 3.7, make certain you set the path if you are installing on Windows; 10 | 2. Choose a way to create/edit Python code; and 11 | 3. Select a source of learning 12 | 13 | ## Longer Version... 14 | 1. **Install Python 3 from the official website**, Python 2 is coming to the end of its life, it served us well but it now considered legacy. Ignore any suggestions that Python 3 is not as good as Python 2; 15 | **Notes for Windows Users:** 16 | 1). Do not install Python 3.4, if you encounter errors, update your computer; 17 | 2). When you run the Python installer, right click + shift and "Run as Administrator"; and 18 | 3). Make certain you check the option to add Python to your system path. 19 | 20 | 2. **Pick a program to edit your code**, there are various options. 21 | 1). Python comes with Idle which you can use to edit code; 22 | 2). A Code/Text editor, examples include Notepad++, Atom, Sublime Text 3, Vim. Many professional programmers use code editors, and most can be configured/customized for Python; 23 | 3). An Integrated Development Editor, examples of this include PyCharm, Geany, Visual Studio Code. If you choose this option be prepared to learn how the IDE works. An IDE can be complex, and without understanding it you will easily get frustrated. 24 | 25 | If you need help setting up your environment, this is a great place to go, The Hitchhiker’s Guide to Python; 26 | 27 | 3. **Go to the Python website, look at the FAQ, the Python 3 documentation.** When you have a question that cannot be answered by your chosen source of learning go to documentation. 28 | 29 | 4. **Read Python's Style Guide PEP8**, [PEP8](http://pep8.org/) is short but it will help you immediately. Adhering to PEP8 will save you hours of frustration; 30 | 31 | 5. If you get an error, read it examine it closely. Python will attempt to help you identify errors, also known as the traceback. Search Google, if there is an exact error, use this as your search; 32 | 33 | 6. If you are still stuck after trying, ask for help; 34 | 35 | 7. Once you start learning programs that need logic, use a pen and paper to solve the problem first. Then code it out; and. 36 | 37 | 8. Experiment, be inquisitive, if you want to find out what something does, just try it. Open up the python shell(this is not the same as IDLE) and try it. 38 | 39 | ## Websites 40 | 1. Official Python 3 Tutorial https://docs.python.org/3/tutorial/ 41 | 42 | 43 | ## Books 44 | * [Byte of Python](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Byte-of-python.pdf) or [online](https://python.swaroopch.com/) 45 | 46 | * [Fundamentals of Python Programming](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Fundamentals+of+Python+Programming.pdf) 47 | 48 | * [Coder's Apprentice: Learning Programming with Python 3](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Coder%E2%80%99s+Apprentice+Learning+Programming+with+Python+3.pdf) 49 | 50 | * [How to Think Like a Computer Scientist](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/thinkpython2.pdf) or read it [online and interactive](https://interactivepython.org/courselib/static/thinkcspy/index.html) 51 | 52 | * [Python for Everybody](https://s3.ca-central-1.amazonaws.com/python-programming-group/books/Python+for+Everybody.pdf) 53 | 54 | ## Video - Note: If you pick this approach you will need to use a Python reference like the Python 3 documentation and use google search 55 | - coursera.org 56 | - MIT Introduction to Computer Science and Programming in Python 57 | - Microsoft Virtual Academy Python tutorial 58 | * Sololearn, CodeAcademy - these places are good for practice, but they are not comprehensive. If you complete official Python Tutorial vs CodeAcademy, you will have a much more in depth knowledge of the Python Programming Language. 59 | 60 | ## Some sound advice from https://www.reddit.com/r/learnprogramming/wiki/faq 61 | 1. "Find some small problem or project that you're interested in tackling. You could try building a tool to solve a small problem in your life, or try implementing a program you find interesting from scratch. This project will help motivate you to continue to learn to code and will give you opportunities to practice applying what you're learning. 62 | Supplement that resource by searching the web and asking questions. 63 | Eventually complete several non-trivial projects using that language." 64 | 65 | 2. **Here are some things they [and we] recommend you avoid doing**: 66 | "Don't just simply passively follow along whatever resource you're using. Do the exercises and homework assignments; practice is an absolutely essential part of learning to code. 67 | Don't stop learning once you've completed a tutorial. Programming is the kind of field where there's always something new to learn." 68 | 69 | ## Reddit's Learn Programming has a very comprehensive guide on Getting Started, if you still need more 70 | https://www.reddit.com/r/learnprogramming/wiki/faq#wiki_getting_started 71 | -------------------------------------------------------------------------------- /wiki/Group-Guidelines.md: -------------------------------------------------------------------------------- 1 | Welcome to our group. Regardless if you are brand new to programming or more experienced, the rules apply to all members. If you do not understand a point in the rules, simply ask for clarification. **Posts must be directly related to Python** 2 | 3 | ### TL;DR on getting help.... 4 | 1. **DO NOT** post unformatted code, pictures of code. Your post will be blocked until you fix it. Fix it == edit your post. 5 | 1. Use https://www.ppaste.org, https://dpaste.org or similar for your code, copy + paste, then post the link generated into your post. 6 | 1. Explain the problem, include the exact error message(if an error is raised). 7 | 1. If you are having a trouble understanding how to get started with a problem, do what all programmers do, **Divide and conquer**. Write out the requirements of the problem, then solve each one. 8 | 1. Google first, ask second 9 | 10 | ### Not following the rules may result in your post being deleted, you being muted, and/or being blocked permanently from the group. 11 | 12 | ### Posts seeking help with coding problems, not adhering to the points below will be locked until the OP updates their post with all relevent detail and formatted as per point 3. 13 | 14 | 01. The **purpose** of international groups is to be a global meeting point. So we need a reference language and this is English. 15 | 16 | 02. If you are **New to Python** and need some advice on where to begin learning, start here => [Learning to Program with Python](https://github.com/pythonprogramming-group/python_group/wiki/Learn-to-Program-with-Python) 17 | 18 | 03. All members of Python Programming Language Group are expected to follow the [Python Community Code of Conduct.](https://www.python.org/psf/codeofconduct/) 19 | 20 | 04. Do not send unsolicated private message to admins or moderators. All questions may be asked on the group wall and answered by any group member. We will not offer help through private messages. Do not send the Admins/Mods unsolicated friend requests. 21 | 22 | 05. **Posts seeking help about code debugging** include the following: 23 | 1). A detailed description of the problem; 24 | 2). A minimal, easily runnable, and well-formatted program that demonstrates your problem; 25 | 3). The output you expected and what you got instead. If you got an error, include the full traceback/error message; and 26 | 4). Do not paste your code into a post, with Python indentation == code. FB removes critical formatting. If your code contains indentation, or is longer than 5 lines, then use of a pastebin is mandatory. 27 | 28 | **Options for sharing your code in a post:** 29 | 1). [repl.it](https://repl.it/languages/python3) Repl allows you to run, save code, and share code; 30 | 2). Use a code pastebin service/website like, https://www.ppaste.org, https://dpaste.org, https://gist.github.com/, etc. Not knowing how to use a paste bin service, is no excuse. Usage is basic, copy + paste, like the name implies. Detailed steps are linked here => [How to Use a Pastebin](https://github.com/pythonprogramming-group/python_group/wiki/How-To-Use-Pastebin); or 31 | 3). Link to your **github**, or **bitbucket** repo 32 | **Notes:** 33 | * **Do not upload files**, posts with attachments will be removed without warning; and 34 | * You can include a screenshot of your code, provided you have used 1 of the above 3 options. While a picture may be helpful, expecting someone to retype your code to help you is unreasonable. 35 | 36 | 06. **Posts seeking help about a conceptual problem** : 37 | 1). Get out a piece of paper and pen, or something similar and solve the problem in plain language and/or use a flow chart. Break the problem down into smaller managable parts, solve each smaller part. Then build your program incrementally until the main problem is solved. Some great advice from From Talk Python Episode #114: Empowering developers at the Hidden Genius project: "We always have to [solve] the algorithm first, before we even touch the keyboard."; and 38 | 2). Explain how you have tried to resolve this on your own, the group is helpful but the group is not a substitute for reading the documentation or searching the web. 39 | 40 | 07. Submissions that are ambiguous, simply a link and nothing else will be removed indiscriminately. 41 | 42 | 08. If you your question starts **"Can I use Python to make....What is Python used for...."** please go here: [Python Success Stories](https://www.python.org/about/success/). General questions about Python, you should go here first: [Python Frequently Asked Questions](https://docs.python.org/3/faq/general.html). Wondering how Python stacks up against other languages [Comparing Python to Other Languages](https://www.python.org/doc/essays/comparisons/) 43 | 44 | 09. Please **do not ask the group to teach you Python or mentor you**. Use the resources available in the [Recommended Resources]((https://github.com/pythonprogramming-group/python_group/wiki/recommended-resources)) to teach yourself. Some struggle is part of learning. 45 | 46 | 10. **Easy web search questions are not permitted, and will be removed without warning.** If you search for a topic, and still do not understand, then please explain why. 47 | 48 | 11. Posts with **schoolwork, code challenges, with no effort, will be removed without notice**. We like to help, but Zero Effort == Zero Help. 49 | 50 | 12. **Commenting on posts** Comments should be related to the post. 51 | 1). If you want to give meaningful help, please use the approach of trying to guide OP to a solution by asking questions. This will help the OP understand the potential problem in a logical manner, similar to the [Socratic method](https://en.wikipedia.org/wiki/Socratic_method). Giving direct answers does not help the OP understand the problem nor the solution; 52 | 2). Giving solutions to posts requesting help with little or no effort, will result in you being muted for 24 hours or being blocked from the group; 53 | 3). Please be careful when giving advice to newcomers who are still learning the basics. Keep in mind that many beginner problems are not about getting the answer, but going through the process of solving the problem in a logical way. For example, in many cases reading the CSV is not about CSV it is just used as a teaching tool for iteration and basic problem solving; 54 | 4). If you want to follow the Post, please refrain from random comments, it just pollutes the thread. Facebook has a simple method to allow you to follow, just select "Turn on notifications for this post"; and 55 | 5). [Post-Thread Hijacking](https://www.urbandictionary.com/define.php?term=Thread%20Hijacking) will not be tolerated, e.g. asking for help about a problem you are having, etc.. Create a new post. 56 | 6) When helping, if you post code, please use a code service as explained in point 3. 57 | 58 | 13. If you need guidance setting up your Python 3 Dev Environment, please read [The Hitchhiker's Guide to Python: Your Development Environment](http://docs.python-guide.org/en/latest/dev/env/). Real Python have a good guide as well [Python IDEs and Code Editors (Guide)](https://realpython.com/python-ides-code-editors-guide/). 59 | 60 | 14. Posts should not contain multiple questions, please use one post per question or problem. 61 | 62 | 15. Job Postings must adhere to the document, [Job Postings](./Job-Postings). 63 | 64 | 16. No solicitation or posting of pirated books, software, and/or materials. 65 | 66 | 17. The group's purpose is not member self-promotion. 67 | 1). If your first post is you promoting your youtube channel, personal blog(video or written), Facebook Page/Group, etc. it will likely be your first and last post in the group; 68 | 2). We support regular member's blogs, etc. once they are vetted for quality; and 69 | 3). We encourage member's to show project of interest. If you create a project using Python, please ensure to include the link to your code repo on GitHub, Bitbucket, Gitlab etc.. 70 | 71 | 18. Posting of reference material, videos, blog posts will be accepted from established members of the group provided the material is current, and of a high quality. We suggest that your topic be new, explaining how to loop for example has been done expertly numerous times already, this is the same for most beginner topics. 72 | 73 | 19. Questions about Python, life decisions and jobs, this cannot be answered by us. This depends upon many factors, location, etc. And you can research this yourself. Python is very popular and rising. Your first stop should be to go to the source and read about Python, from python.org. If you have questions about starting a career in technology and programming, check out Reddit's [CSCareerQuestions](https://www.reddit.com/r/cscareerquestions/) as well as their excellent [FAQ](https://www.reddit.com/r/cscareerquestions/wiki/index). 74 | 75 | 76 | 77 | 78 | ### Python is fun, so have fun! Python is powerful so go and build! 79 | 80 | -------------------------------------------------------------------------------- /wiki/sscce-python.md: -------------------------------------------------------------------------------- 1 | # The SSCCE - Python (DRAFT - Needs work) 2 | 3 | ## Short, Self Contained, Correct (Compilable), Example 4 | 5 | If you are having a problem with some code and seeking help, preparing a Short, Self Contained, Correct Example (SSCCE) is very useful. But what is an SSCCE? 6 | 7 | It is all in the name, really. Take a look at each part. The version prepared for others to see should be: 8 | 9 | * Short (Small) - Minimise bandwidth for the example, do not bore the audience. 10 | * Self Contained - Ensure everything is included, ready to go. 11 | * Correct - Copy, paste, (compile,) see is the aim. 12 | * Example - Displays the problem we are trying to solve. 13 | 14 | ## Short 15 | 16 | This depends on the group or forum. For a public forum, most readers will stop reading by 100 lines of code, and start complaining at 250-300 lines of code. 17 | 18 | ### Tricks for Trimming 19 | 20 | If the GUI has 40 buttons not related to the problem, remove them. If they _are_ related to the problem (you remove them and the problem disappears) put one or two back in, if the problem reappears, include _only_ those one or two buttons. 21 | 22 | The list, tuple or dictionary that is causing a problem may have a hundred entries, but again, if the problem can be seen with two or three entries, trim the example to that alone. 23 | 24 | If trimming a very large amount if code for others to see, you might trim out a part of it early on that you think is not related to the problem, yet the problem is fixed. 25 | 26 | ### Problem Solved? 27 | 28 | By identifying more clearly where the problem occurs, you have just made an important step toward solving it. The process that highlights where a problem _originates_ can, in itself, help to solve it. You might look more closely at the part cut out, and in doing so, spot the problem. 29 | 30 | Even if you cannot see why the problem occurs, you have still made an important step: identifying (at least part) of the code involved. 31 | 32 | If the code being trimmed is now a concise example of the problem, it is ready to present to others, if not, put the problem code back in and continue trimming other areas of the code until it is. 33 | 34 | ## Self Contained 35 | 36 | It is important to ensure that the code given to others can be 'copied, pasted, compiled, run' so that they can help quickly and with a minimum of fuss. 37 | 38 | This means that after the code has been copied, pasted and compiled by those helping, they can run it and _see_ the results for themselves. It is the example of the problem. 39 | 40 | You are much more likely to receive help if you do this. 41 | 42 | ### How to make an example self contained. 43 | 44 | If the code performs I/O to files, replace the file I/O with dummy data structures in problems that are unrelated to input/output. 45 | 46 | If the problem _is_ the input and textual input can be used, prepare a short example that can be copied for the actual file data. 47 | 48 | Should the problem happen only under load, insert code to simulate that load. If a layout problem only occurs under particular circumstances, _force_ those things to happen, if it is practical to do so. 49 | 50 | Obviously there are things that cannot be included in an example that is posted to a forum, 'a database' etcetera, but many times you just need a bit of lateral thinking to come up with a way to replace something you thought was 'vital' to demonstrate a problem. 51 | 52 | One example of lateral thinking is 'images'. Images related to code problems might seem difficult to replace. But one trick is to link to an image available on the web, one that displays the same problem. Try to make any web based images 'small' in bytes - if at all possible. 53 | 54 | ## Correct 55 | 56 | > If my example was correct, _what would I be doing here?_ 57 | 58 | (Laughs) No, that is not what 'correct' means in this context. In this document, correct (or compilable, which particularly relates to computer source code) means ensuring that the example fits the accepted standards and protocols. 59 | 60 | To achieve that, it is necessary to: 61 | 62 | * Line width Keep the width of the lines in the example to under 62 characters wide. (but please do **not** remove all line indents!) Newsreaders typically force a line wrap at around 72 characters (and it pays to 'play it safe by using less than that). _Sometimes_ line wrap does not cause any problem with the example, but it _usually_ does, and means the lines need to be rejoined or reconstructed, before they work as intended. 63 | Most code/source editors will show a column width along the top of the editing area. 64 | * Use the naming convention, if one exists. Most of the people willing to help will be using hints from the formatting of upper and lower case letters, as well as their descriptive names, to skim the code in the hope of spotting the problem quickly. If following the conventions the audience is used to, it helps them to do that. 65 | * Ensure the example is _correct_. Either the example compiles cleanly, or causes the exact error message about which needs solving. 66 | 67 | Further tips: 68 | 69 | * Move all resources (CSS/JS/Java source, images etc.) to the same directory, so they are easier to administer, and easier to find. 70 | * Remove package statements from Java code. 71 | * Demote public Java classes to default. If the language specifies only a single public class per source code file, demote all the other classes to default. This allows the example to be compiled without being split into separate files. 72 | * Validate the example, where a validator is available. 73 | * HTML [validator](http://validator.w3.org/) 74 | * CSS [validator](http://jigsaw.w3.org/css-validator/) 75 | 76 | ## Example 77 | 78 | _Make sure the posted code, displays the problem!_ 79 | 80 | You have worked on the example for hours, perhaps days. It feels like forever. Now is a good time to take a breather, step back, stretch, perhaps go for a refreshing walk. 81 | 82 | _Refresh the computer as well._ Reboot it if necessary. 83 | 84 | Now open the pages, or program, where the problem occurs. Is it still there? 85 | 86 | Perhaps 99% of the time it is (maybe less if using a less reliable operating system). 87 | 88 | Now, if the problem is still there, post the example. 89 | 90 | ### Example - Extra Points 91 | 92 | We wish we had a dollar for every person who asked for help about a web page or the stylesheet for one, some JavaScript code, or a Java Applet - and did not provide a link. We would not need to supply and maintain this document, instead we would be sunning ourselves on a beach in an exotic location, drinking still more exotic cocktails. 93 | 94 | Why do people miss such an opportunity? Very few things are as tempting as a link to the problem. To a seasoned forum helper, it is almost as tempting as a small bottle with the vague message 'drink me', ..or an exotic cocktail. 95 | 96 | Having a group of people look at the problem helps to identify and solve the problem at hand, as well as _compatibility problems_ (which might be the cause of the problem all along). 97 | 98 | ### Standards on the Internet 99 | 100 | Therein lies another 'gotcha' when dealing with most things related to the internet. The internet, as well as most things associated with it, is just a little bit wild. For every standard there are two alternates. For every rule there are at least three exceptions to the rule. 101 | 102 | To start with, browsers do not work the same. We are not just referring to differences between IE and Netscape, or old and new browsers, but 'Internet Explorer 5' for the Macintosh, for example, is a (significantly) different browser from 'Internet Explorer 5' for Windows. 103 | 104 | People asking for help on web-design groups are often surprised to hear that the problem they are experiencing with a web page does not even show for others using different browsers. 105 | 106 | ### Java Applets 107 | 108 | Another level of complexity, and more chance of problems, is introduced when Applets are in the web page. How the random clutch of browsers mentioned above will react to (often poorly formed) html and styles, with Applets thrown into the mix as well, is another matter again. Here is just one example. 109 | 110 | For a long time MicroSoft was shipping the Internet Explorer browser with an _older version of Java_ (a version 1.1 JVM). After some events happened, MS put the _latest Java_ engines into its browsers. Soon after that, they began to supply the IE with _no JVM at all_. 111 | 112 | Given the possible complications with Applets, it is fortunate that they are so easy to check when on they are on the internet. A few clicks and someone on the other side of the planet can be reading the output from the Java console of _their own browser_ or, sometimes, see the Applet working perfectly. 113 | 114 | If the Applet that fails for you works in someone else's browser, it helps to quickly narrow the scope of the problem to the html, the applet tag, or the JVM installed in the browser (or complete lack of one). 115 | 116 | ## Why bother? 117 | 118 | A very good question. Why go to all this effort? 119 | 120 | Perhaps someone can understand the problem you describe from the description you give. Maybe it is one of those things that a thousand people before have stumbled on. 121 | 122 | If you have already checked the FAQ, Googled the forum, read the ..flaming manual it is unlikely that an answer will pop up that easily. You _have_ done those things, haven't you? 123 | 124 | If wasting the time and bandwidth of the other members of a public forum, you risk members of the group delivering short sharp rebukes. 125 | 126 | The people who contribute to the groups give a wide range of advice. Sometimes the advice works, sometimes it does not, but either way, the advice is free. 127 | 128 | Contributors do so for a variety of reasons, including the nice feeling they get when they can pass on a piece of knowledge relating to their chosen field to someone who is learning. 129 | 130 | Unfortunately, if someone asks to be spoon fed information that is contained in a basic tutorial, it is a strong indication that the questioner does not so much want to learn as get others to do work they should be doing themselves. 131 | 132 | If there is a piece of code and you wish to have it written, finished or fixed by others, there are plenty of avenues to achieve that. For a modest amount of money, you can get most IT work completed (or done) through a number of internet based outsourcing companies. That is what such companies specialize in. 133 | 134 | Free forums are for people to learn. 135 | 136 | Having said that: 137 | 138 | Let us assume you are indeed genuine in your learning, you have a huge, complex system with an occasional, unpredictable bug, and you _have_ searched the FAQ & Group, studied the manual or documentation and not produced an answer. 139 | 140 | Feel free to describe the problem to the group; perhaps it is a basic misunderstanding on your part that can easily be cleared up. 141 | 142 | **We are not proposing that every single problem needs a SSCCE in order to be solved. We are also not suggesting an example is, or should be, compulsory.** 143 | 144 | It will, however, make people much _more likely to help_, and will therefore _increase the chance of finding a solution_. 145 | --------------------------------------------------------------------------------