  ## Python Decision making and Loops

Let us see about Python decision making and loops

We have the below topics covered as part of Python learning course.

# Decision making

Decision making evaluates multiple expressions which produce TRUE or FALSE as an outcome.

Which defines action to take and what statements has to execute when the outcome is TRUE or FALSE otherwise.

Note: Python programming language assumes any non-zero and non-null values as TRUE, and if it is either zero or null, then it is assumed as FALSE value

Decision making statements are as follows:

## If Statement

```# if statement

# When you want to check some logical condition and perform actions based on positive result.

x = 8
y = 10

if x > y:
print("X is greater")
print(f"{x}")

print("Program ended")```

## If-else statement

```# if-else statement

# An if statement can be followed by an optional else statement, which executes when the boolean expression is FALSE.

x = 80
y = 10

if x > y:
print("X is greater")
else:
print("Y is greater")

print("Program Ended")```

## Nested if-else statement

```# nested/multiple if-else statement

# When you want to check multiple conditions and perform actions based on the result (TRUE or FALSE).

x = 80
y = 10
z = 90

# Multiple if

if x > y:
print("X is greater")
elif x > z:
print("X is greater")
elif y > z:
print("Y is greater")
else:
print("Z is greater")

# Nested If

if x > y:
if x > z:
print("x is greater")
else:
print("z is greater")
elif y > z:
print("y is greater")
else:
print("z is greater")

print("Program Ended")
```

# Loops

A loop statement allows us to execute a statement or group of statements multiple times.

Along with above loops, we also have the following 3 keywords used during Loops.

1. Break
2. Continue
3. Pass

## While loop

```# While loop repeatedly executes a target statement as long as a given condition becomes true.

# Example 1 (Simple while loop)
count = 1

while count < 4:
print(count)
count = count + 1

print("Out of while loop")
print("------------------------------")

# Example 2 : Using else Statement with While Loop

count = 0
while count < 4:
print(count)
count = count + 1
else:
print("count is less than 4")
```

## For loop

```# For loop
# it has the ability to iterate over the items of any sequence,
# such as a list or a string.

# We can iterate Collection items
# Such as List, Tuple, Set and so on.

# Example 1 : looping list
blog_websites = ["aryanz.co.in", "balamt.in", "wecancode.live"]

for x in blog_websites:
print(x)

# Example 2 : looping string value
name = "John"
for letter in name:
print(letter)

# Example 3: Using else in For loop

for i in range(1,4):
print(i)
else:
print(f"Reached the max range")
```

## Nested loop

```# Nested loop
# looping inside another loop is called nested loop

# What is the output of the following code? - Comment your answer here > https://youtu.be/A2qoypUV-ZE

for x in range(1, 5):
for y in range(x-1, x): # 1, 4
print(f"{y}")
print(f"\t")
``` ## Python type casting and operators

Let us see about Python type casting and operators.

We have the below topics covered as part of Python learning course.

# Python type casting

We know Python is not strict with the data type declaration of variables. What makes the need of type casting? Let us see below

```# weather.txt
{
"id": 2345,
"city": "Chennai",
"weather": "20",
"unit": "Celsius"
}```

Consider there is a weather API, upon calling it whose response will be in JSON (JavaScript Object Notation) format.

The JSON response has key & value for `"weather":"20"` Which is of type text/string.

But in the python program, we need it to be number so that we can convert it from Celsius to Fahrenheit or vice-versa.
In such cases we have to go for casting the data type.

```# Program to read file containing JSON object for weather

# In order to read and parse JSON, we need to use the json module from python
import json

weathers = []  # declaring empty list
weather_value = None # Will be using this variable to store the type casted value

with open('weather.txt') as f:  # Reading file
for jsonObj in f:   # reading lines from the file
weather = json.loads(jsonObj)   # parsing and storing the line
weathers.append(weather)    # adding the line to the list

print("Printing each JSON Decoded Object")
for weather in weathers:    # Traversing through the list
print(weather)
print(f"Type of weather is: {type(weather['weather'])}")
weather_value = int(weather["weather"]) # Type casting from string to int
# print(weather["id"], weather["city"], weather["weather"], weather["unit"])

print(f"{weather_value}° C")
print(type(weather_value))

fahrenheit = (weather_value * 9/5) + 32

print(f"Fahrenheit {fahrenheit}")
```

# Python Operators

Following are the types of operators available in Python programming.

## Arithmetic Operators

Arithmetic operators are used with numeric values to perform common mathematical operations.

```"""
Python Arithmetic Operators
Arithmetic operators are used with numeric values
to perform common mathematical operations:
--------------------------------------------------------------
|   Operator    |   Name             |       Example         |
|---------------|--------------------|-----------------------|
|       +       |   Addition         |       x + y           |
|       -       |   Subtraction      |       x - y           |
|       *       | Multiplication     |       x * y           |
|       /       |   Division         |       x / y           |
|       %       |   Modulus          |       x % y           |
|       **      |Exponential (power) |       x ** y          |
|       //      | Floor division     |       x // y          |
--------------------------------------------------------------
"""```

## Relational operators

Relational or Comparison operators, which compares the value on either side and decide the relation among them.

```"""
--------------------------------------------------------------------------------------------
|    Operator    |    Description                                                       |
|       ==       | equals operator check if both sides are same.                        |
|       !=       | not equals operator check if both sides are not same.                |
|       <>       | not equals operator check if both sides are not same. same as !=     | Python3 Does not Support <>
|       >        | if left side value is greater than right.                            |
|       <        | if left side value is lesser than right.                             |
|       >=       | if left side value is greater and equal to the right.                |
|       <=       | if left side value is lesser and equal to the right.                 |
------------------------------------------------------------------------------------------
Lets see some examples below
Assume variable x holds 3 and variable y holds 6,
"""```

## Assignment Operators

Assignment operators are used to assign value to a variable.

```"""
-----------------------------------------------------
|   Operator        |   Example     |   Similar to  |
|-------------------|---------------|---------------|
|       =           |   x = 5       |   x = 5       | Assign value from right to left side
|       +=          |   x += 5      |   x = x + 5   | It adds right & left operand and assign to left side
|       -=          |   x -= 5      |   x = x - 5   | It subtracts right & left operand and assign to left side
|       *=          |   x *= 5      |   x = x * 5   | It multiplies right & left operand and assign to left side
|       /=          |   x /= 5      |   x = x / 5   | It divides left with right operand and assign to left side
|       %=          |   x %= 5      |   x = x % 5   | It takes modulo using two operand and assign to left
|       //=         |   x //= 5     |   x = x // 5  | It performs floor division on operands and assign to left
|       **=         |   x **= 5     |   x = x ** 5  | It performs exponential (power) calc on operands & assign to left
|       &=          |   x &= 5      |   x = x & 5   | Bitwise AND
|       |=          |   x |= 5      |   x = x | 5   | Bitwise OR
|       ^=          |   x ^= 5      |   x = x ^ 5   | Bitwise XOR
|       >>=         |   x >>= 5     |   x = x >> 5  | Bitwise right shift
|       <<=         |   x <<= 5     |   x = x << 5  | Bitwise left shift
----------------------------------------------------------
"""```

## Logical Operators

Logical operators are used in combining conditional statements.

```"""
------------------------------------------------------------------------------------------
|   Operator    |                    Description                    |   Example            |
|---------------|---------------------------------------------------|----------------------|
|     and       | Returns True if both statements are true          |  x < 5 and  x < 10   |
|     or        | Returns True if one statements is true            |  x < 5 or  x < 10    |
|     not       | Returns False if the result is true or vice-versa |not(x < 5 and x < 10) |
|------------------------------------------------------------------------------------------|
"""```

## Bitwise Operators

Bitwise operators are used for comparing Binary (i.e., 0’s and 1’s) numbers. See below table for the available bitwise operators.

```"""
Bitwise Operators
-----------------------------------------------------------------
|   Operator        |   Example     |   Operator name           |
|-------------------|---------------|---------------------------|
|       &           |   x = x & y   |  Bitwise AND              |
|       |           |   x = x | y   |  Bitwise OR               |
|       ~           |   x = x ~ y   |  Binary Ones Complement   |
|       ^           |   x = x ^ y   |  Bitwise XOR              |
|       >>          |   x = x>>y    |  Bitwise right shift      |
|       <<          |   x = x<<y    |  Bitwise left shift       |
-----------------------------------------------------------------
"""```

When x and y value is 1 or True then the result will be 1 or True.

When any one (x or y) values are True the result will also be True.

## Membership Operators

Membership operators, checks for membership in a sequence (strings, lists, or tuples).

There are two membership operators, See below.

## Identity Operators

Identity operators compare the memory location of two objects.

There are two types of Identity Operators (is and not is), See below Let us see about Python comments and variables which covers the below topics.

1. `Python Comments`
• Single line comment
• End of the line comments
• Multi line comments using `#` (Pound or Sharp)
• Multi line comments using `"""` (3 double quotes a.k.a Multi line string)
2. `Variables`
• Declaring variables
• Assign variables
• re-assign variables
• Nullify variables using `None` Keyword

`Code Repo : https://git.io/JtnlX`

`Slides: https://git.io/Jtckd`

We have the below topics covered as part of Python learning course.

1. Documentation using comments – It helps anyone reading the code along with the comments can easily understand the code easily and how it works. (Logical and Functional explanation).
2. `(mostly this will be used for debugging your code, if the code is not working as expected and to find the line which cause the bug).`

#### How to comment and what are all the ways we can comment in Python?

Lets see what all ways we can comment in Python.

• End of the line comments
• Multi line comments using `#` (Pound or Sharp)
• Multi line comments using `"""` (3 double quotes a.k.a Multi line string)

It is writing in one single line and These lines are prefixed using `#` (Pound or Sharp).

````# This is Single line comment`
`# Sample program to print hello world.`
`print("Hello, World")`
`# End of my python program````
##### End of the line comments

End of line comments, as name says it is written at end of the line along with the Python code.

Lets see an example below,

``````amt1 = 20
amt2 = 5
final_amt = amt1 + amt2  # Adding amt1 and amt2.``````
##### Multi line comments using #

Multi line comments using #, it is similar to Single line comment, but it is written on multiple lines prefixed with the `#` (Pound or Sharp) symbol.

Primarily used for documenting python code or explaining the block of code below,

Its written at the top of a class or function.

Lets see an example below

``````#  Author: aryanz.co.in
#  Class name: calculator
#  Description:  This class is used for performing add, sub, multiply and divide. each action requires two parameters.

#  Two parameters x and y
#  prints the result on the screen
print(x + y)```
```
##### Multi line comments using “””

It is same as Multi line comment using # but it is prefixed with the `"""` (3 double quotes).

Similar to the Multi line using #, even here we can use this for documentation.

Lets see an example below

````"""  `
```Author: aryanz.co.in
Class name: calculator
Description:  This class is used for performing add, sub, multiply and divide. each action requires two parameters.```
`"""````

Two parameters x and y
prints the result on the screen```
```"""
print(x + y)```
```

# Python Variables

## What is a variable?

Variables, a placeholder or container or a memory location to store values of any type, such as string, int, float, list and etc.,

• A variable is a container for storing data/values.
• Values are assigned at the beginning of the program.
• It does not need to be declared with any particular type.
• Type can be changed at any time, after they have been initialized at the beginning. `(x = 5, after few line of code assign x = “Hello”, it is possible in Python)`
• Before assigning values to variables, it can be typecast to a specific type. `(x = str(4))`
• Most importantly variables are case sensitive. `(Msg = “Hello” and msg = “Hello” both are different variables)`

Variable declarations (see below). ## Python Syntax and Data types

Today we are going to see about Python Syntax and Data types which consist of the following

1. Python Syntax
2. Indentation in Python
3. Best practices while writing Python program
4. Data types (In build data types in Python)

`Code Repo : https://git.io/JtUqQ`

`Slides : https://git.io/JtUZM`

In case if you have missed our previous topics

### Syntax, Indentation and Best practice

#### Indentation is it really needed for Python?

Well to answer for it, Yes Its is very important for us to know about the indentation. because Python does not uses the curley braces ‘{‘ or ‘}’ for enclosing the statements. where as it used the indentations for it.

#### Key points to remember about Indentation

• Giving space or tab space at beginning of a line, is called indentation.
• In Python Indentation plays important role.
• It uses the space to determine the block of statements.
• The first line of Python code should not have indentation.(it will throw IndentationError)

### Python coding best practices

Lets us see some best practices to be followed while writing Python, these best practices are followed so that your code does not end up having errors, easy to read and understand the code or the logic.

#### Python Indentation Rules

• We can’t split indentation into multiple lines using backslash.
• The first line of Python code can’t have indentation, it will throw IndentationError.
• You should avoid mixing tabs and white spaces to create indentation. It’s because text editors in Non-Unix systems behave differently and mixing them can cause wrong indentation.
• It is preferred to use white-spaces for indentation than the tab character.
• The best practice is to use 4 white-spaces for first indentation and then keep adding additional 4 white-spaces to increase the indentation.

We will have another exclusive video coming up on the topic “Python coding best practices”.

Save the above file in any folder with the name helloworld.py

.py is the file extension used to identify the file is Python script

### Python Data types

In Python we have the following in-built data types. ## Writing your first code in Python

Today we are going to see about Writing your first code in Python

In case if you have missed our previous topics

### Writing your first Python code

#### Where to write?

You can use any Notepad or Text editor for writing your Python program. But there are May IDEs available to help us with auto fill the code snippet or help us with formatting the code and check for any syntax errors.

But today we are going to write our first code, So lets use simple notepad or text editor.

```# This is my first Python code
# To print Hello world in the console
print("Hello World")
```

Save the above file in any folder with the name helloworld.py

.py is the file extension used to identify the file is Python script

Well you have now officially a Python developer, because you have written your first python code.

#### How to execute the Python program?

In order to execute the python program, we need Python Interpreter which will do the magic.

#### What is that magic?

Its the Interpretation of simple English into 0’s and 1’s, Yes the Python Interpreter is going to read your code and convert into 0’s and 1’s so that machine can understand the instructions.

###### To execute the Python code,
1. You need to open Terminal or Command prompt in your Machine.
2. Type “python3 filename.py” (In our case, “python3 helloworld.py”
3. Hit Enter, you should see the output in the console.