adds some final notes
This commit is contained in:
parent
417f3a909b
commit
0fb66a9009
|
@ -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 = "(#"
|
||||||
|
|
|
@ -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)
|
||||||
|
|
144
outline.md
144
outline.md
|
@ -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)
|
|
||||||
|
|
||||||
|
|
13
readme.md
13
readme.md
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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.
|
Loading…
Reference in New Issue