python_introduction/readme.md

309 lines
19 KiB
Markdown

# Program
| Day | Goal |
|-----|-----------------------------------------|
| 1 | coding challenge: temperature convertor |
| 2 | coding challenge: memento mori |
| 3 | coding challenge: guess the number |
| 4 | coding challenge: ROT13 |
| 5 | |
| 6 | coding challenge: task manager |
| 7 | useful scripting with pathlib |
| 8 | convert login manager to OOP |
| 9 | |
| 10 | |
| 11 | |
| 12 | coding challenge: hangman non-OOP/OOP |
| 13 | introduction to tkinter |
| 14 | |
| 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)
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)