diff --git a/README.md b/README.md index 6aedb72..de5472c 100644 --- a/README.md +++ b/README.md @@ -1,81 +1,33 @@ -# Python teach and learn +# 0_hello-world -This is a repository to teach and learn Python. +The main topic of this branch is to practice with GitHub. -If you are a teacher, you can use all the exercises on this repo for your own purpose: -teach some concept, exams, etc. - -As a student take a look to the explanations below. - -## Requirements - -* Python >= 3.6. -* Git installed. -* A GitHub account. - -## Repo structure - -On master you only have a few files, every exercise is inside his own branch. - -Every branch has a name with index + what we learn. -For example the first branch is `0_hello-world`. -Also, we have modifications to the main exercise on a branch, example: `0.1_hello-someone`. -This modifications add more complexity to the main problem like is usually done on [code katas](https://en.wikipedia.org/wiki/Kata#Outside_martial_arts). - -> Katas starts with a simple problem and will be more complicated on every step - -## Step by step guide - -If you fork this repo, never update the original branches because you could have conflicts in the future. Instead of that, create new branches. - -### Step 0: Read it - -Yes, this should be your first step, read this README and, of course, we start with 0 not 1. -If you do not know why, we will see it in the future, be patient. - -### Step 1: Fork - -You should fork this repo and then start working with it. -How? We will see a step by step guide with git commands. - -If you use another tool like GitHub Desktop take a look to their docs. - -![fork button](docs/images/fork-btn.jpg) - -### Step 2: Setup the upstream - -This step is required to have the latests updates from the main repo in your forked one. - -When you setup this you will be able to: - -1. Update the master branch of your forked repo. -2. Get any new branch created from the main repo. - -#### Add upstream remote origin +## Create your own branch ```shell -git remote add upstream git@github.com:mrroot5/python-teach-learn.git +git checkout -b 0_hello-world_jhon-doe ``` -#### Update branches +## Tips -This could be done with the fetch button on GitHub: +If you use **VSCode** I recommend you this extensions: -![fetch button](docs/images/fetch-upstream-btn.jpg) +> **Name:** markdownlint. +**Description:** Markdown linting and style checking for Visual Studio Code. +**VS Marketplace Link:** -Or with a git command: +> **Name:** Python. +**Description:** IntelliSense (Pylance), Linting, Debugging (multi-threaded, remote), Jupyter Notebooks, code formatting, refactoring, unit tests, and more. +**VS Marketplace Link:** -```shell -git pull upstream master -``` +> **Name:** Pylance. +**Description:** A performant, feature-rich language server for Python in VS Code. +**VS Marketplace Link:** -Simply change master for the branch you want. -On GitHub you must change to a new branch to have the option to fetch it. +My favorite IDE is **PyCharm** but VSCode is a very good option too. -#### Update list of branches +## Start coding -I do not know if GitHub have an option to do this so, this is the command: +The objective of this exercise is to print a "hello world" on your terminal. -```shell -git fetch upstream -``` +If you want to test your code to know if it works, use `python3 test.py`. diff --git a/main.py b/main.py new file mode 100644 index 0000000..75b18a5 --- /dev/null +++ b/main.py @@ -0,0 +1,8 @@ +# Import modules if required + +# Create functions or classes to accomplish your task + +if __name__ == '__main__': + # Do here the main things to accomplish your task + # For example: call functions to process an input data + pass # this could be removed diff --git a/test.py b/test.py new file mode 100644 index 0000000..ded0eca --- /dev/null +++ b/test.py @@ -0,0 +1,23 @@ +import unittest + +from subprocess import Popen, PIPE +from os import linesep + + +class HelloWorldTestCase(unittest.TestCase): + def print_hello_world(self): + linesep_bytes = linesep.encode("utf8") + possible_values = [ + b'hello world' + linesep_bytes, + b'hello world!' + linesep_bytes, + b'Hello World' + linesep_bytes, + b'Hello World!' + linesep_bytes + ] + cmd = "python3 main.py" + proc = Popen(cmd.split(' '), stdout=PIPE, stderr=PIPE) + (output, error) = proc.communicate() + self.assertIn(output, possible_values) + + +if __name__ == '__main__': + unittest.main()