# Python Basics

Python is a high-level programming language that can be used in various applications. For example, it can be used in web development, desktop app development and it can be even used in machine learning.

---

## Why to learn Python?

1. Easy syntax
    
2. Can be used in different applications
    
3. Large and active community
    

---

### Print function

```python
print("Hello, world!")
```

The print function is used to display a message on the screen. The message can be a text, a number or it can be any other element. The code above prints the sentence `Hello, world!`

### Variables

We can think about variables as boxes that can store objects. Variables can be used to store values.

In the code below, we assigned the value (Reem) to the variable (name). In other words, the variable (name) stores the value (Reem).

```python
name = "Reem"
```

In this code, we stored the value (21) to the variable (age).

```python
age = 21
```

You can notice that texts should be inserted into quotation marks:

```python
name = "Reem"   #This is correct
name = 'Reem'   #This is correct too
name = Reem     #This is incorrect
```

How to name a variable?

* It **must** start with an alphabetical letter or an underscore (\_)
    
* It can include numbers, letters and underscores
    
* Reserved words are unallowed
    

Reserved words are words that already exist in the programming language.

Examples of reserved words:

<table><tbody><tr><td colspan="1" rowspan="1"><p>if</p></td><td colspan="1" rowspan="1"><p>elif</p></td><td colspan="1" rowspan="1"><p>else</p></td></tr><tr><td colspan="1" rowspan="1"><p>while</p></td><td colspan="1" rowspan="1"><p>for</p></td><td colspan="1" rowspan="1"><p>break</p></td></tr><tr><td colspan="1" rowspan="1"><p>continue</p></td><td colspan="1" rowspan="1"><p>def</p></td><td colspan="1" rowspan="1"><p>class</p></td></tr></tbody></table>

and much more.

**Important notes:**

* When you name a variable, make sure that the name is understandable to help your code become more readable and easy to understand.
    
* Variables in Python are case-sensitive. the variable `name` is different from the variable `Name` or `nAme`.
    

### Input function

This function helps your program become more interactive by taking input from the user.

The code below asks the user to enter their name.

```python
name = input("What's your name?")
```

To use this function you can set a prompt to make your program more understandable. The prompt in this code is `"What's your name?"`.

### Comments

Comments can help you document your code and make it more readable. Comments start with a hash mark (#).

```python
#A program that prints "Hello, world!"
print("Hello, world!")
```

### Data types

Data can take different forms. Examples of data types:

Numerical data types:

* Integer: is a number without a decimal point. examples: `1`, `2000`, `-123`
    
* Float: is a number with a decimal point. examples: `1.25`, `-2.3456`
    

String: text. examples: `"Hello, world!"`, `"Reem"`

boolean: it only contains 2 values: `True`, `False`

There are other data types and we will mention them later on.

### Mathematical operations

| Sign | Explanation | Example | Result |
| --- | --- | --- | --- |
| + | Addition | 3 + 2 | 5 |
| \- | Subtraction | 4 - 1 | 3 |
| \* | Multiplication | 3 \* 5 | 15 |
| / | Float division: return the whole division result | 20 / 6 | 3.3333333333333335 |
| // | Integer division: return the integer part of the division result | 20 // 6 | 3 |
| % | Division remainder | 20 % 6 | 2 |

```python
sum = 3 + 2                 # result: 5
minus = 4 - 1               # result: 3
mult = 3 * 5                # result: 15
float_div = 20 / 6          # result: 3.3333333333333335
int_div = 20 // 6           # result: 3
remainder = 20 % 6          # result: 2
```

### Comparison operators

You can use these operators to compare between values

| sign | explanation | example | result |
| --- | --- | --- | --- |
| \&gt; | greater than | 5 &gt; 3 | `True` |
| &lt; | less than | 6 &lt; 2 | `False` |
| \&gt;= | greater than or equal to | 8 &gt;= 8 | `True` |
| &lt;= | less than or equal to | 9 &lt;= 7 | `False` |
| \== | equal to | 4 == 4 | `True` |
| != | not equal to | 1 != 3 | `True` |

```python
result = 5 > 3    #result: True
print(result)
```

### Logical operators

These operators can be used to combine multiple statements or conditions. These operators return boolean values. Logical operators in Python, are `and`, `or` and `not`.

We can understand these operators using truth tables.

Let A and B be statements:

**And operator:**

This operator checks if all statements are true or not. This operator returns true if all statements are true.

| A | B | A and B |
| --- | --- | --- |
| True | True | True |
| True | False | False |
| False | True | False |
| False | False | False |

```python
a = (3 > 2)                  #return True
b = (5 <= 6)                 #return True
print(a and b)               #return True
```

**Or operator:**

This operator checks if there is at least one true statement or not. This operator returns true if at least one statement is true.

| A | B | A or B |
| --- | --- | --- |
| True | True | True |
| True | False | True |
| False | True | True |
| False | False | False |

```python
a = (3 > 2)                  #return True
b = (5 <= 1)                 #return False
print(a or b)                #return True
```

**Not operator:**

This operator accepts only one statement and it's used to negate a statement.

| A | not A |
| --- | --- |
| True | False |
| False | True |

```python
a = 3 > 2        #return True
print(not a)     #return False
```

### Conditional statements:

Do you want to execute some pieces of code according to certain conditions? If yes, you will need to use conditional statements.

There are 3 forms of conditional statements:

* if statement
    
* if-else statement
    
* elif statement
    

**if statement:**

In this statement the instructions in the "if" block will be executed if the conditions are satisfied. Otherwise, nothing in the block will be executed.

How to write an if statement?

```python
if (condition):
    #statement 1
    #statement 2
    #etc
```

Indentations are important because they are used to represent that the statements belong to a block of code (in this case, the "if" block).

example:

```python
num = 5
if num > 2:
    print("The condition is true")
```

The code above will print `The condition is true` because 5 is greater than 2. This flowchart can visualize the code above

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1695403552190/fade4202-1b23-49b4-b1b2-5f97c78a9479.png align="center")

You can also use multiple conditions as we can see in the code below:

```python
num = 10
if num > 2 and num < 8:
    print("The condition is true")
```

In this code, nothing in the block will be executed because 10 is not less than 8.

**if-else statement:**

The if-else statement can be used to handle both true and false conditions.

```python
if condition:
    #some statements
else:
    #other statements
```

* If the condition is true, the statements in the "if" block will be executed.
    
* If the condition is false, the statements in the "else" block will be executed.
    

Example:

```python
num = 10
if num > 2 and num < 8:
    print("The condition is true")
    print("10 is greater than 2 and less than 8")
else:
    print("The condition is false")
    print("10 is not greater than 2 and less than 8")
```

This code will print `The condition is false` and `10 is greater than 2 and 8`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1695403708135/f7c88cbc-a4d0-40f5-8839-99255ae7febe.png align="center")

**elif statement:**

`elif` is an abbreviation for else if. You can use it if a condition is not satisfied and you need to check if another condition is true or not.

```python
if condition1:
    #statement(s)
elif condition2:
    #statement(s)
else:
    #statement(s)
```

Example:

```python
num = 12
if num >= 0 and num < 5:
    print("1st condition is satisfied")
elif num >= 5 and num < 10:
    print("2nd condition is satisfied")
elif num >= 10 and num < 15:
    print("3rd condition is satisfied")
else:
    print("all conditions are not satisfied")
```

1. we created a variable with a value of 12
    
2. check if the number is between 0 and 4
    
3. check if the number is between 5 and 9
    
4. check if the number is between 10 and 14
    
5. if all conditions are false, print `all conditions are not satisfied`
    

### Loops

Do you want to repeat your code for multiple times? Look no further, loops can help you run your code repeatedly.

There are 2 types of loops in Python:

* For loop
    
* While loop
    

**For loop**

This loop can be used to iterate over sequences such as strings and lists. In addition, it can be used to iterate in a fixed number of times.

```python
for i in sequence:
    #statement 1
    #statement 2
    #etc
```

Examples:

Suppose you want to print the numbers from 0 to 99. You can use the range function to store a sequence of numbers. After that, you can use a for loop to print the numbers.

There are 3 ways to use the range function:

* `range(start_point, end_point, steps)`
    
* `range(start_point, end_point)` : is the same as `range(start_point, end_point, 1)`
    
* `range(end_point)`: is the same as `range(0, end_point, 1)`
    

In this code, we printed the numbers from 0 to 99 by defining only the `end_point` in the range function.

```python
for i in range(100):
    print(i)
```

In the code below, we printed the numbers from 1 to 100 by defining the `start_point` and `end_point` in the range function.

```python
for i in range(1, 101):
    print(i)
```

In this code, we printed the even numbers between 0 and 10 by defining the `start_point`, `end_point` and `steps` in the range function.

```python
for i in range(0, 11, 2):
    print(i)
```

**While loop**

This loop checks the condition before executing the statements in the block. If the condition is satisfied, the statements will be executed. Otherwise, the loop will stop.

```python
while condition:
    #statement 1
    #statement 2
    #etc
```

Example:

We want to write a program that prints the numbers from 1 to 10

1. in the beginning, we will create a variable that stores numbers. The initial value for this variable will be 1
    
2. check if the condition is true or not (is the current number less than 11?)
    
3. if the condition is true, the current number will be printed and incremented by 1.
    
4. As long as the condition is satisfied, the block will be executed. Otherwise, the loop will stop
    

```python
num = 1
while num < 11:
    print(num)
    num += 1    #same as num = num + 1
```
