From 205e6a22050171705be080dbdd0ee5802b1a0c6c Mon Sep 17 00:00:00 2001 From: William Mantly Date: Sun, 24 Sep 2023 16:16:58 +0000 Subject: [PATCH] Add README.md --- README.md | 216 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 216 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..92f11c3 --- /dev/null +++ b/README.md @@ -0,0 +1,216 @@ +# Python Fundamentals + +### Learning Objectives + +***Students Will Be Able To...*** + +* Create a variable in python +* Assign the different data structures to variables +* Write python statements using control flow +* Write python statements using loops and iteration + +--- +### Context + +* The fundamentals of programming translate throughout every language +* Like learning any new language we're going to start with the basics and build up +* If you wanted to learn English you wouldn't start by reading a novel, but with the alphabet + +### Variables + +* Variables are a way to store and save data for use +* This is called `assignment`. You are assigning a value to a variable +* Declaring Variables + * Cannot start with a number + * Cannot declare with special characters + * Written in snake case +* Open up Python in the terminal + +```python +name = "Jason" +fav_num = 8 +turtles = ["Raph", "Leo", "Mickey", "Donny"] +``` + +### Data Types + +* Now you may have noticed that variables can hold different `types` of values +* These are called `Data Types` and python3 has [many built-in types](https://docs.python.org/3/library/stdtypes.htm) + * [Strings](https://docs.python.org/3/library/stdtypes.html#str) + * Sequence of 0 or more characters(a-z, A-Z, 0-9, !,@,#, ect). + * python type `str()` or with the literal `''` or `""` + * [methods to know](https://docs.python.org/3/library/stdtypes.html#string-methods) + * `.format()` [https://pyformat.info/](More info) + * `.isdigit()`, `islower()`, `isupper()`, check to see if the string is a digit and so on. There are many more like these + * `.lower()`, `.upper()` changed the string to lower and up case + * `.split()` changes the string to a list based around the character[s] given + * [Numbers](https://docs.python.org/3/library/stdtypes.html#numeric-types-int-float-complex) + * [Floats](https://docs.python.org/3/library/functions.html#float) + * decimals + * python type `float()` or with the literal `23.3` + * methods to know + * `is_integer()` Return `True` if the float a whole number, and `False` otherwise + * [Integers](https://docs.python.org/3/library/functions.html#int) + * whole number + * python type `int()` or with the literal '4' + * [Lists](https://docs.python.org/3/library/stdtypes.html#lists) + * Ordered sequence of items + * python type `list()` or the literal `['a', 'b', 'c']` + * methods to know + * `.append()` adds a item to a list + * `.pop()` removes and returns the last item from the list + * [Dictionary](https://docs.python.org/3/library/stdtypes.html#dict) + * Collections of key, value pairs + * python type `dict()` or the literal `{'key':'value'}` + * methods to know + * `.get()` return the value of a give key, or a default value if its not found + * `.values()` returns a `list` of values in the Dictionary + * `.keys()` returns a `list` of keys in the Dictionary + * [Booleans](https://docs.python.org/3/library/stdtypes.html#boolean-values) + * Represents something that is `True` or `False` + * python type `bool()` or the literal `True` or `False` + * [Range](https://docs.python.org/3/library/stdtypes.html#range) + * `Range()` is a special type that represents range of numbers + * [None](https://docs.python.org/3/library/stdtypes.html#the-null-object) + * nothing, nothing at all + * python type ... there is one way, the literal way `None` + +### Notable built in functions +* `len()` return the length of the given *sequence* +* `help()` shows help documentation of the given object +* `dir()` show the available methods of the give object + +#### Math Operators +All math operators can be done on both floats and ints +Python comes with the following symbols for mathematical operators. + +* `+` add +* `-` subtract +* `*` multiplication +* `\` division +* `\\` floor divided, always returns a whole number +* `%` modulo: finds the remainder after division +* The language also supports PEMDAS + * `5+(50+5)` + +#### Comparison Operators + +* `==` equality +* `!=` not equal +* `<` less then +* `<=` less then or equal to +* `>` greater then +* `>=` greater then or equal to + + +#### Control Flow + +* Now we have reached `if/else` statements +* If an expression you passed in is `True` do something +* `else` do something `else` + +```python +if expression == true: + run code + +if name == "Jason": + print("That is an awesome name") +else: + print("You should get a different name") + +if number > 100: + print("That's a big number") +elif number > 50 && number < 100: + print("That's a medium number") +else: + print("Your number is puny") +``` +* Things to note + * Put a colon after the expression you want to evaluate to start the `if` body + * `if` to `elif` to `else` + * indents show what code is part of the body of the statement and where it ends + + +#### Lists and Indexing + +* What if you wanted to store more data. +* Can be assigned to variables +* Can hold different data types at once +* The values are indexed for us starting at zero + +```python +my_list = ["Jason", "Anna Kendrick", 2015, True] + +my_list[0] == "Jason" # True + +my_list[2] == 2016 # False +``` +* Just a heads up indexing through a list is similar to indexing with strings. +* the value at index zero will be the first element in the list, or the first letter in a string + +#### Functions and Statements + +* We declare our functions with the word `def` for define +* Functions follow the same naming principles as declaring variables + * Snake case + * Do not start with numbers or special characters +* Remember how we used white space to organize our code with if/else statements. Well that idea holds true everywhere in Python + +```python +def my_name(): + return "My name is Jason" +``` +* Functions allow us to build code that is reusable +* This follows the concept of **DRY - Don't Repeat Yourself** +* Functions can also take arguments. These allow our functions to be more dynamic + +```python +def my_name(name): + return "My name is " + name +``` + +* When there is no `return` statement, the function *implicitly* returns `None` + +### `for` loops + +`for` loops *iterate* over a *sequence*. There are 2 parts to a `for` loop, the *statement* and the *body*. The *statement* tells the loop what to *iterate* over and *assigns* the loop variable. The body tells python what to do in each iteration. Before each iteration the loop variable is assigned to the next value in the *sequence*, in oder from the zero index to the last item. + +```python +teachers = ['billy', 'tom', 'jason', 'jeff'] +for teacher in teachers: + print( teacher.capitalize() ) +``` + +In this loop we *iterate* over each teacher in the loop and print there name capitalized. + +### `while` loops + +Unlike `for` loops, `while` are not bound to a sequence and can continue for ever. +like a `for` loop, `while` loops have 2 parts, an *statement* and a body. + +```python +num = input('Please enter a whole number: ') +while not num.isdigit(): + print('Not a whole number!') + num = input('Please enter a whole number: ') +``` + + +### loop control +There are 2 ways can control what loops. They both with `for` and `while` loops in the same way. + +* [`break`](https://docs.python.org/3/reference/simple_stmts.html#break) + The `break` *statement* stops loop and allows python to move on to the rest of the script. If you are using a `while` loop, you should have a break *statement* to stop the loop. +```python +count = 1 +while True: + count *= count + if count > 100: break +``` +* [`continue`](https://docs.python.org/3/reference/simple_stmts.html#continue) + The `continue` *statement* skips to the next iteration of the loop. Generally, `continue` statement are at the top of the loop body. +```python +for num in range(100): + if num%10 != 0: continue + print(num) +```