adds some final notes

This commit is contained in:
waldek 2022-05-05 23:09:49 +02:00
parent 417f3a909b
commit 0fb66a9009
5 changed files with 91 additions and 144 deletions

View File

@ -8,6 +8,7 @@ INPUT = [
"learning_python3.md", "learning_python3.md",
"learning_python3_gui.md", "learning_python3_gui.md",
"learning_git.md", "learning_git.md",
"what_is_next.md",
] ]
CMD = "gh-md-toc" CMD = "gh-md-toc"
FILTER = "(#" FILTER = "(#"

View File

@ -215,6 +215,8 @@ You can see which branch and which commit that you push.
## Cloning the remote project into a new project ## Cloning the remote project into a new project
To arrive at the *startup screen* shown below you need to close all open projects.
![screenhot](assets/git_pycharm_clone_00.png) ![screenhot](assets/git_pycharm_clone_00.png)
![screenhot](assets/git_pycharm_clone_01.png) ![screenhot](assets/git_pycharm_clone_01.png)

View File

@ -18,147 +18,3 @@
| 14 | | | 14 | |
| 15 | | | 15 | |
Table of Contents
=================
* [What we'll learn](./learning_python3.md#what-well-learn)
* [Concepts](./learning_python3.md#concepts)
* [Syntax](./learning_python3.md#syntax)
* [Tools](./learning_python3.md#tools)
* [Writing code](./learning_python3.md#writing-code)
* [Running code](./learning_python3.md#running-code)
* [The python3 shell](./learning_python3.md#the-python3-shell)
* [Installing pycharm](./learning_python3.md#installing-pycharm)
* [Virtual environments](./learning_python3.md#virtual-environments)
* [Your first project](./learning_python3.md#your-first-project)
* [How to execute](./learning_python3.md#how-to-execute)
* [Simple printing](./learning_python3.md#simple-printing)
* [Try it](./learning_python3.md#-try-it)
* [Try it](./learning_python3.md#-try-it-1)
* [String replacement](./learning_python3.md#string-replacement)
* [String formatting](./learning_python3.md#string-formatting)
* [Some links to read up](./learning_python3.md#some-links-to-read-up)
* [Taking input](./learning_python3.md#taking-input)
* [Some functions are blocking](./learning_python3.md#some-functions-are-blocking)
* [Functions can return something](./learning_python3.md#functions-can-return-something)
* [Try it](./learning_python3.md#-try-it-2)
* [Functions can take arguments](./learning_python3.md#functions-can-take-arguments)
* [Try it](./learning_python3.md#-try-it-3)
* [Taking input and evaluation](./learning_python3.md#taking-input-and-evaluation)
* [Conditional logic](./learning_python3.md#conditional-logic)
* [Class string methods](./learning_python3.md#class-string-methods)
* [Try it](./learning_python3.md#-try-it-4)
* [Some links to read up on](./learning_python3.md#some-links-to-read-up-on)
* [Coding challenge - Currency converter](./learning_python3.md#coding-challenge---currency-converter)
* [Coding challenge - Celsius to Fahrenheit converter](./learning_python3.md#coding-challenge---celsius-to-fahrenheit-converter)
* [Some links to read up on](./learning_python3.md#some-links-to-read-up-on-1)
* [A text based adventure game](./learning_python3.md#a-text-based-adventure-game)
* [Creating your own functions](./learning_python3.md#creating-your-own-functions)
* [Functions that <em>do</em> something](./learning_python3.md#functions-that-do-something)
* [Variable scope](./learning_python3.md#variable-scope)
* [Functions that <em>return</em> something](./learning_python3.md#functions-that-return-something)
* [Try it](./learning_python3.md#-try-it-5)
* [Some links to read up on](./learning_python3.md#some-links-to-read-up-on-2)
* [Coding challenge - Pretty Print](./learning_python3.md#coding-challenge---pretty-print)
* [Using the standard library](./learning_python3.md#using-the-standard-library)
* [Coding challenge - Memento Mori calculator](./learning_python3.md#coding-challenge---memento-mori-calculator)
* [Writing your first library](./learning_python3.md#writing-your-first-library)
* [Try it](./learning_python3.md#-try-it-6)
* [How do we write libraries?](./learning_python3.md#how-do-we-write-libraries)
* [What is __name__ == "__main__"?](./learning_python3.md#what-is-__name__--__main__)
* [Anatomy of a program](./learning_python3.md#anatomy-of-a-program)
* [Try it](./learning_python3.md#-try-it-7)
* [While loop](./learning_python3.md#while-loop)
* [Try it](./learning_python3.md#-try-it-8)
* [Coding challenge - Guess the number](./learning_python3.md#coding-challenge---guess-the-number)
* [Try it](./learning_python3.md#-try-it-9)
* [Logical Operators](./learning_python3.md#logical-operators)
* [Lists](./learning_python3.md#lists)
* [Creating lists](./learning_python3.md#creating-lists)
* [List methods](./learning_python3.md#list-methods)
* [Try it](./learning_python3.md#-try-it-10)
* [Picking elements and slicing lists](./learning_python3.md#picking-elements-and-slicing-lists)
* [Try it](./learning_python3.md#-try-it-11)
* [For loop](./learning_python3.md#for-loop)
* [Coding challenge - Cheerleader chant](./learning_python3.md#coding-challenge---cheerleader-chant)
* [Coding challenge - ROT13](./learning_python3.md#coding-challenge---rot13)
* [Try it](./learning_python3.md#-try-it-12)
* [Coding challenge - Christmas Tree](./learning_python3.md#coding-challenge---christmas-tree)
* [List comprehension](./learning_python3.md#list-comprehension)
* [Handling files](./learning_python3.md#handling-files)
* [Reading from a file](./learning_python3.md#reading-from-a-file)
* [In-line way](./learning_python3.md#in-line-way)
* [Pythonic way](./learning_python3.md#pythonic-way)
* [Writing to a file](./learning_python3.md#writing-to-a-file)
* [Coding challenge - Login generator](./learning_python3.md#coding-challenge---login-generator)
* [Dictionaries as data containers](./learning_python3.md#dictionaries-as-data-containers)
* [Two dimensional lists](./learning_python3.md#two-dimensional-lists)
* [Dictionaries](./learning_python3.md#dictionaries)
* [Try it](./learning_python3.md#-try-it-13)
* [Coding challenge - Task manager](./learning_python3.md#coding-challenge---task-manager)
* [CSV based task manager](./learning_python3.md#csv-based-task-manager)
* [Text based databases](./learning_python3.md#text-based-databases)
* [Try it](./learning_python3.md#-try-it-14)
* [Now for some useful scripting](./learning_python3.md#now-for-some-useful-scripting)
* [Creating our own objects](./learning_python3.md#creating-our-own-objects)
* [First some <em>abstract</em> examples](./learning_python3.md#first-some-abstract-examples)
* [Try it](./learning_python3.md#-try-it-15)
* [Magic methods](./learning_python3.md#magic-methods)
* [Class inheritance](./learning_python3.md#class-inheritance)
* [Try it](./learning_python3.md#-try-it-16)
* [Coding challenge - Chalet floor](./learning_python3.md#coding-challenge---chalet-floor)
* [Now some <em>practical</em> improvements](./learning_python3.md#now-some-practical-improvements)
* [Improve the login generator](./learning_python3.md#improve-the-login-generator)
* [Improve the task manager](./learning_python3.md#improve-the-task-manager)
* [Infinite programs](./learning_python3.md#infinite-programs)
* [Logic breakdown of a simple game](./learning_python3.md#logic-breakdown-of-a-simple-game)
* [A non object orientated solution](./learning_python3.md#a-non-object-orientated-solution)
* [An object orientated solution](./learning_python3.md#an-object-orientated-solution)
* [Trivial pursuit multiple choice game](./learning_python3.md#trivial-pursuit-multiple-choice-game)
* [Introduction to the requests library](./learning_python3.md#introduction-to-the-requests-library)
* [Threading](./learning_python3.md#threading)
Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
Table of Contents
=================
* [tkinter](./learning_python3_gui.md#tkinter)
* [Tkinter helloworld](./learning_python3_gui.md#tkinter-helloworld)
* [Adding widgets](./learning_python3_gui.md#adding-widgets)
* [Try it](./learning_python3_gui.md#-try-it)
* [Coding challenge - Guess the number](./learning_python3_gui.md#coding-challenge---guess-the-number)
* [MVC design pattern](./learning_python3_gui.md#mvc-design-pattern)
* [Coding challenge - Login generator with GUI](./learning_python3_gui.md#coding-challenge---login-generator-with-gui)
* [Coding challenge - Trivial pursuit with GUI](./learning_python3_gui.md#coding-challenge---trivial-pursuit-with-gui)
* [WXpython](./learning_python3_gui.md#wxpython)
* [wxpython helloworld](./learning_python3_gui.md#wxpython-helloworld)
* [wxpython guess the number](./learning_python3_gui.md#wxpython-guess-the-number)
* [MVC design pattern](./learning_python3_gui.md#mvc-design-pattern-1)
* [Coding challenge - Login generator with GUI](./learning_python3_gui.md#coding-challenge---login-generator-with-gui-1)
* [Coding challenge - Trivial pursuit with GUI](./learning_python3_gui.md#coding-challenge---trivial-pursuit-with-gui-1)
Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
Table of Contents
=================
* [About](./learning_git.md#about)
* [Git via bash](./learning_git.md#git-via-bash)
* [Initialing a git repo](./learning_git.md#initialing-a-git-repo)
* [What's in this repo](./learning_git.md#whats-in-this-repo)
* [Adding and tracking content](./learning_git.md#adding-and-tracking-content)
* [The main workflow](./learning_git.md#the-main-workflow)
* [Git via Atom](./learning_git.md#git-via-atom)
* [Git via Pycharm](./learning_git.md#git-via-pycharm)
* [Starting a version controlled project](./learning_git.md#starting-a-version-controlled-project)
* [Creating an online repository](./learning_git.md#creating-an-online-repository)
* [Adding some changes to our local code](./learning_git.md#adding-some-changes-to-our-local-code)
* [Cloning the remote project into a new project](./learning_git.md#cloning-the-remote-project-into-a-new-project)
* [Updating the original project](./learning_git.md#updating-the-original-project)
Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)

View File

@ -162,3 +162,16 @@ Learning git
Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc) Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)
What is next
=================
* [Some random recommendations](./what_is_next.md#some-random-recommendations)
* [IDE](./what_is_next.md#ide)
* [Syntax](./what_is_next.md#syntax)
* [Concepts](./what_is_next.md#concepts)
* [Books](./what_is_next.md#books)
* [Linux](./what_is_next.md#linux)
Created by [gh-md-toc](https://github.com/ekalinin/github-markdown-toc)

75
what_is_next.md Normal file
View File

@ -0,0 +1,75 @@
# Some random recommendations
After our twenty days of python together you should have a solid understanding of the world of programming.
The foundation of all essential concepts should be clear enough to understand code when it is in front of you.
A blank slate could still pose a challenge but for that, here are some links and recommendations.
## IDE
Maybe try out some other IDE to see if you like the workflow or layout better.
I'm a big fan of [vim](https://en.wikipedia.org/wiki/Vim_(text_editor)), especially with some good [plugins](https://gitea.86thumbs.net/waldek/linux_course_doc/src/branch/master/modules/qualifying/learning_vim_configuration.md).
It's not an *easy* editor to learn but the payoff is pretty great.
For the more *normal* people I would recommend having a look at the following editors, in no particular order.
* [atom](https://atom.io/)
* [vscode](https://code.visualstudio.com/)
* [brackets](https://brackets.io/)
* [spyder](https://www.spyder-ide.org/) for a more scientific approach
Don't hop around too much though.
If you're a bit bored with pycharm it could be refreshing to *see* your code through a different window.
## Syntax
Start paying attention to the style guides that pop up in your IDE and follow up on them by reading the actual rules.
It can be good way to discover some do's and don't and help you to make your code more readable.
I would also recommend you start browsing online for some coding project in a field of your interests.
The bigger the project, the higher the chance it follows a specific style.
By reading and trying to understand their code, you'll start to build a better feel how to annotate, structure and make your code more readable.
As this is a *very* subjective topic I can only point you to projects I like.
* [python-language-server](https://github.com/palantir/python-language-server)
* [python-osc](https://github.com/attwad/python-osc)
* [urwid](https://urwid.org/index.html)
* [natural language toolkit](https://www.nltk.org/)
## Concepts
We touched on *most* of the elementary concepts but we did go over them quite quickly.
Take your time to review all base concepts with small exercises and try to chain them together into bigger projects.
Some python specific *new* concepts I would highly advise you to look into are the following.
* [decorators](https://realpython.com/primer-on-python-decorators/)
* [getters and setters](https://stackoverflow.com/questions/2627002/whats-the-pythonic-way-to-use-getters-and-setters)
* [concurrency](https://realpython.com/python-concurrency/)
* [threading vs async vs multiprocessing](https://leimao.github.io/blog/Python-Concurrency-High-Level/)
* [design patterns](https://python-patterns.guide/)
* [memory management in python](https://realpython.com/python-memory-management/)
* [virtual environments](https://docs.python.org/3/tutorial/venv.html)
If you're interested in creating web applications I would start out with [bottle](https://bottlepy.org/docs/dev/), work your way up to [flask](https://www.fullstackpython.com/flask.html) and maybe move over to [django](https://www.djangoproject.com/).
You'll definitely need to learn [SQL](https://en.wikipedia.org/wiki/SQL) at some point but you can make your life easier by using [sqlalchemy](https://www.sqlalchemy.org/).
If you want to dive deep into data science you'll need get comfortable with [numpy](https://numpy.org/), [pandas](https://pandas.pydata.org/) and [matplotlib](https://matplotlib.org/).
The easiest way to get comfortable with all of those is probably [jupyter notebook](https://jupyter-notebook.readthedocs.io/en/stable/index.html) which is an IDE that you use in your browser.
It's quite different from the pycharm you're used to but it's a very good tool to do data analysis.
If robotics is your thing you might want to give [micropython](https://micropython.org/) a go.
I've never used it myself but I've heard good things about it.
## Books
These are some books I've actually read and enjoyed.
* [mastering python design patterns](https://www.amazon.de/-/en/Kamon-Ayeva/dp/1788837487/ref=sr_1_2?keywords=python+design+muster&qid=1651784267&sprefix=python+des%2Caps%2C82&sr=8-2)
* [fluent python](https://www.amazon.de/-/en/Luciano-Ramalho-dp-1492056359/dp/1492056359/ref=dp_ob_title_bk)
* [design patterns](https://www.amazon.de/-/en/Erich-Gamma/dp/9332555400/ref=sr_1_9?keywords=gang+of+four+design+muster&qid=1651784413&sprefix=gang+of+%2Caps%2C68&sr=8-9)
* [learn python the hard way](https://learnpythonthehardway.org/python3/)
* [automate the boring stuff](https://automatetheboringstuff.com/)
# Linux
If you enjoyed the experience of the computers at the school you should give [linux](https://en.wikipedia.org/wiki/Linux) a go at home!
You used a [debian](https://www.debian.org/) machine with [GNOME](https://www.gnome.org/) as a graphical interface.
If you're really motivated you could read through my [introduction to linux](https://gitea.86thumbs.net/waldek/linux_short) course.
It's a work in progress and all feedback is welcome.