Python coding
53 subscribers
24 files
11 links
​A technical hub dedicated to Python programming, web development, and software engineering. Learn core syntax, build full-stack projects, and master backend development.
Download Telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
Python coding pinned Deleted message
Python coding pinned Deleted message
Python coding
Basic_Python_Intro_Notes.pdf
Introduction to Programming with Python

---

What is Python?

Python is a popular programming language created by Guido van Rossum in 1991.

It is known for:
- Simplicity
- Readability
- Flexibility
- Powerful libraries

Python is beginner-friendly while still being powerful enough for AI, web development, and automation.

---

What is Python Used For?

- Web Development
- Software Development
- Data Science & Mathematics
- Automation & System Scripting

Python works on multiple platforms:
- Windows
- Linux
- Mac
- Raspberry Pi

---

Important Concept: Indentation

Unlike many programming languages that use { }, Python uses indentation (spaces) to define code blocks.

Example:

if 5 > 2:
print("Five is greater than two")

Proper indentation is required in Python.

---

Your First Python Program

print("Hello World")

This prints text to the screen.

---

Reading User Input

Use the input() function to get data from users.

name = input("Please enter your name: ")

print(f"Hi {name}, nice to meet you!")

---

Variables in Python

Variables are containers used to store data.

x = 5
y = "John"

Python automatically detects the data type.

---

Casting

Casting is used to force a variable into a specific data type.

str(3)      # '3'
int(3.8) # 3
float(3) # 3.0

---

Variable Naming Rules

- Must start with a letter or underscore _
- Cannot start with a number
- Can contain letters, numbers, and underscores
- Case-sensitive (age, Age, and AGE are different)
- Cannot use Python keywords like:
- if
- while
- print

---

Naming Conventions

Camel Case:

myVariableName

Pascal Case:

MyVariableName

Snake Case (Recommended in Python):

my_variable_name

---

Built-in Data Types

Python includes several built-in data types:

- Text → str
- Numeric → int, float, complex
- Sequence → list, tuple, range
- Mapping → dict
- Boolean → bool

Check a variable type using type():

print(type(5))

Output:

<class 'int'>

---

Comments in Python

Comments make code easier to understand.

Single-line comment:

# This is a comment

Multi-line comment:

"""
This is a multi-line comment
"""
Python coding
Basic_Python_Control_Structures.pdf
Control Structures and Loops in Python

---

Conditional Statements

Conditional statements allow programs to make decisions based on conditions.

They help control the flow of a program by executing different code depending on whether a condition is True or False.

---

Comparison Operators

| Operator | Meaning |
|----------|----------|
| == | Equal to |
| != | Not equal to |
| < | Less than |
| <= | Less than or equal to |
| > | Greater than |
| >= | Greater than or equal to |

---

If, Elif, and Else

- if → checks the first condition
- elif → checks another condition if previous ones are False
- else → runs if none of the conditions are True

Example:

a = 200
b = 33

if b > a:
print("b is greater than a")

elif a == b:
print("a and b are equal")

else:
print("a is greater than b")

---

Logical Operators

Logical operators combine multiple conditions.

---

AND Operator

Returns True only if both conditions are True.

a = 200
b = 33
c = 500

if a > b and c > a:
print("Both conditions are satisfied")

---

OR Operator

Returns True if at least one condition is True.

if a > b or a > c:
print("At least one condition is True")

---

NOT Operator

Reverses the result.

a = 33
b = 200

if not a > b:
print("a is NOT greater than b")

---

Loops in Python

Loops repeat code multiple times while a condition is met.

Python mainly uses:
- while loop
- for loop

---

The While Loop

Executes repeatedly while the condition remains True.

i = 1

while i < 6:
print(i)
i += 1

Important:
Always update the loop variable to avoid infinite loops.

---

Break Statement

Stops the loop immediately.

i = 1

while i < 6:
print(i)

if i == 3:
break

i += 1

---

Continue Statement

Skips the current iteration and continues with the next one.

i = 0

while i < 6:
i += 1

if i == 3:
continue

print(i)

---

Else with Loops

The else block runs once when the loop condition becomes False.

i = 1

while i < 6:
print(i)
i += 1

else:
print("Loop finished")

---

The For Loop

A for loop is used to iterate through sequences such as:
- Lists
- Tuples
- Strings

Example:

fruits = ["apple", "banana", "cherry"]

for x in fruits:
print(x)

---

Practice Exercises

1. Write a program to check whether a number is positive, negative, or zero.

2. Print all even numbers from 1 to 20 using a loop.

3. Create a loop that stops when the number 5 is reached.

4. Loop through a string and print each character separately.
Python coding
Basic_Python_Functions_Recursion.pdf
Functions and Recursion in Python

---

Working with Functions

A function is a reusable block of code that runs only when it is called.

Functions help:
- Organize code
- Avoid repetition
- Make programs easier to manage

---

Default Parameter Values

A function can use a default value if no argument is provided.

def my_function(country="Norway"):
print("I am from " + country)

my_function("Sweden")
my_function()

Output:

I am from Sweden
I am from Norway

---

Passing Sequences as Arguments

Functions can receive lists, tuples, dictionaries, and other data types.

def my_list_function(food):
for x in food:
print(x)

fruits = ["apple", "banana", "cherry"]

my_list_function(fruits)

---

Return Values

Use the return statement to send data back from a function.

def multiply_by_five(x):
return 5 * x

result = multiply_by_five(3)

print(result)

Output:

15

---

Recursion

Recursion is when a function calls itself.

It is useful for:
- Mathematical problems
- Repeated calculations
- Breaking problems into smaller parts

---

Important Note

Recursive functions must have a stopping condition (base case).

Without it, the function may run forever and crash the program.

---

Recursion Example

def tri_recursion(k):

if k > 0:
result = k + tri_recursion(k - 1)
return result

else:
return 0

print(tri_recursion(6))

This function adds numbers from 6 down to 0.

---

Lambda Functions

A lambda function is a small anonymous function.

Syntax:

lambda arguments : expression

Example:

x = lambda a, b: a * b

print(x(5, 6))

Output:

30

---

Why Use Lambda Functions?

Useful for:
- Short operations
- One-line functions
- Functional programming techniques

---

Practice Exercises

1. Create a Fibonacci sequence program.

The sequence starts with:
0, 1, 1, 2, 3, 5, 8...

Each number equals the sum of the previous two numbers.

---

2. Write a function that accepts a positive integer and calculates the sum of all numbers down to 0.

Example:

Input: 5
Output: 15
❤1
Python coding
Basic_Python_Data_Structures_Lists.pdf
Data Structures: Lists in Python

---

Introduction to Lists

Lists are used to store multiple items in a single variable.

They are one of the main built-in collection data types in Python.

---

Key Characteristics of Lists

- Ordered → Items keep their position
- Changeable → Items can be modified
- Allow Duplicates → Same value can appear multiple times

---

Creating a List

thislist = ["apple", "banana", "cherry"]

print(thislist)

---

Accessing List Items

Lists use indexes.

thislist = ["apple", "banana", "cherry"]

print(thislist[0])
print(thislist[1])

Output:

apple
banana

---

List Indexing

"apple"   "banana"   "cherry"
0 1 2
-3 -2 -1

- Positive indexes start from the beginning
- Negative indexes start from the end

---

Negative Indexing

thislist = ["apple", "banana", "cherry"]

print(thislist[-1])

Output:

cherry

---

Range of Indexes

The start index is included, but the end index is excluded.

thislist = ["apple", "banana", "cherry", "orange", "kiwi"]

print(thislist[2:4])

Output:

['cherry', 'orange']

---

Changing List Items

Use the index number to modify an item.

thislist = ["apple", "banana", "cherry"]

thislist[1] = "blackcurrant"

print(thislist)

---

List Length

Use len() to count items.

print(len(thislist))

---

Essential List Methods

---

append()

Adds an item to the end.

fruits = ["apple", "banana"]

fruits.append("orange")

print(fruits)

---

insert()

Adds an item at a specific position.

fruits.insert(1, "cherry")

print(fruits)

---

remove()

Removes a specific item.

fruits.remove("banana")

print(fruits)

---

pop()

Removes the last item.

fruits.pop()

print(fruits)

---

Membership Test

Use in to check if an item exists.

if "apple" in fruits:
print("Yes, it is in the list!")

---

Practice Exercises

1. Create a list of 5 favorite movies and print the third item.

2. Replace the second item in a list with a new value.

3. Add two new items to a list using:
- append()
- insert()

4. Check if "banana" exists in a list.
Python coding
Basic_Python_Advanced_Lists.pdf
Advanced List Operations in Python

---

Adding List Items

Python provides multiple ways to add items to a list.

---

append()

Adds an item to the end of the list.

fruits = ["apple", "banana"]

fruits.append("orange")

print(fruits)

Output:

['apple', 'banana', 'orange']

---

insert()

Adds an item at a specific index.

fruits = ["apple", "banana"]

fruits.insert(1, "cherry")

print(fruits)

---

extend()

Adds elements from another iterable.

fruits = ["apple", "banana"]
tropical = ["mango", "pineapple"]

fruits.extend(tropical)

print(fruits)

---

Removing List Items

Python provides different methods for removing items.

---

remove()

Removes the first matching value.

fruits = ["apple", "banana", "banana"]

fruits.remove("banana")

print(fruits)

---

pop()

Removes an item by index.

fruits = ["apple", "banana", "cherry"]

fruits.pop(1)

print(fruits)

Without an index, pop() removes the last item.

---

del Keyword

Delete a specific item:

fruits = ["apple", "banana", "cherry"]

del fruits[0]

print(fruits)

Delete the entire list:

del fruits

---

clear()

Removes all items but keeps the list object.

fruits = ["apple", "banana", "cherry"]

fruits.clear()

print(fruits)

---

List Comprehension

A shorter and cleaner way to create lists.

Traditional way:

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = []

for x in fruits:
if "a" in x:
newlist.append(x)

print(newlist)

List comprehension way:

fruits = ["apple", "banana", "cherry", "kiwi", "mango"]

newlist = [x for x in fruits if "a" in x]

print(newlist)

---

Sorting Lists

Sort alphabetically:

fruits = ["orange", "mango", "kiwi", "banana"]

fruits.sort()

print(fruits)

Reverse sorting:

fruits.sort(reverse=True)

print(fruits)

---

Important Note

Sorting is case-sensitive.

Capital letters come before lowercase letters.

---

Copying Lists

Wrong way:

list2 = list1

This only creates a reference.

---

Correct Ways to Copy

Using .copy():

new_copy = fruits.copy()

Using `list():

``
python
another_copy = list(fruits)

---

Joining Two Lists

Using `+` operator:

python
list1 = ["a", "b"]
list2 = [1, 2]

list3 = list1 + list2

print(list3)

Using a loop:

python
for x in list2:
list1.append(x)

print(list1)
`

---

Practice Exercises

1. Use list comprehension to convert all items in a list to uppercase.

2. Sort a list based on how close numbers are to 50.

3. Reverse a list using `.reverse()`.
Python coding
Basic_Python_Tuples.pdf
Basic Python Course
Data Structures: Tuples

By Yehya Oumer
(Certificate from Mizan Institute of Technology)

Issued: 2026

---

1. Introduction to Tuples

Tuples are used to store multiple items in a single variable.

They are one of the 4 built-in collection data types in Python.

---

Characteristics of Tuples

- Ordered → Items keep their position
- Unchangeable (Immutable) → Items cannot be modified after creation
- Allow Duplicates → Multiple items can have the same value

---

Creating a Tuple

thistuple = ("apple", "banana", "cherry")

print(thistuple)

---

One-Item Tuple Trick

To create a tuple with only one item, you must include a comma.

Correct:

thistuple = ("apple",)

Wrong:

thistuple = ("apple")

Without the comma, Python treats it as a string.

---

2. Updating Tuples (The Workaround)

Tuples are immutable, meaning they cannot be changed directly.

However, there is a common workaround:

1. Convert tuple to list
2. Modify the list
3. Convert back to tuple

Example:

x = ("apple", "banana", "cherry")

y = list(x) # Convert to list
y[1] = "kiwi" # Modify the list

x = tuple(y) # Convert back to tuple

print(x)

---

3. Unpacking Tuples

Packing means storing values into a tuple.

Unpacking means extracting tuple values into variables.

fruits = ("apple", "banana", "cherry")

(green, yellow, red) = fruits

print(green)

Output:

apple

---

Using the Asterisk (*)

If variables are fewer than values, use * to collect the remaining values.

fruits = ("apple", "banana", "cherry", "orange")

(green, yellow, *others) = fruits

print(others)

Output:

['cherry', 'orange']

---

4. Join and Multiply Tuples

Join Tuples

Use + to combine tuples.

tuple1 = ("a", "b")
tuple2 = (1, 2)

tuple3 = tuple1 + tuple2

print(tuple3)

---

Multiply Tuples

Use * to repeat tuple content.

fruits = ("apple", "banana")

print(fruits * 2)

Output:

('apple', 'banana', 'apple', 'banana')

---

5. Why Use Tuples?

You may ask:
Why use tuples if lists already exist?

Here are two important reasons:

---

Performance

Tuples are slightly faster than lists because they are immutable.

---

Data Safety

Tuples protect data from accidental modification.

Useful for:
- Coordinates
- Days of the week
- Months of the year
- Fixed configuration data

---

Practice Exercises

1. Reverse this tuple:

mytuple = ("apple", "banana", "cherry")

2. Check if "banana" exists inside the tuple using in.

3. Use .count() to count how many times a value appears in a tuple.
Python coding
Basic_Python_Sets.pdf
Basic Python Course
Data Structures: Sets

By Yehya Oumer
(Certificate from Mizan Institute of Technology)

Issued: 2026

---

1. Understanding Sets

Sets are used to store multiple items in a single variable.

They are written using curly brackets {}.

---

Characteristics of Sets

- Unordered → Items do not have a fixed order
- Unchangeable → Items themselves cannot be modified directly
- Unindexed → No index numbers like lists
- No Duplicates → Duplicate values are automatically removed

---

Example

thisset = {"apple", "banana", "cherry", "apple"}

print(thisset)

Output:

{'apple', 'banana', 'cherry'}

Notice:
"apple" appears only once.

---

2. Modifying a Set

Adding One Item

Use .add():

thisset = {"apple", "banana", "cherry"}

thisset.add("orange")

print(thisset)

---

Adding Multiple Items

Use .update():

thisset.update(["mango", "kiwi"])

print(thisset)

---

Removing Items

Using remove():

thisset.remove("banana")

Important:
remove() raises an error if the item does not exist.

---

Using discard()

thisset.discard("banana")

Difference:
discard() does NOT raise an error if the item is missing.

---

3. Set Operations (Logic)

Sets are powerful because they support mathematical operations.

---

Union (Combine All Items)

Method:

set1.union(set2)

Operator:

set1 | set2

Example:

set1 = {"a", "b"}
set2 = {1, 2}

print(set1 | set2)

---

Intersection (Common Items Only)

Method:

set1.intersection(set2)

Operator:

set1 & set2

---

Difference (Items in Set1 but NOT in Set2)

Method:

set1.difference(set2)

Operator:

set1 - set2

---

Symmetric Difference

Keeps items that exist in either set, but NOT both.

Method:

set1.symmetric_difference(set2)

Operator:

set1 ^ set2

---

Boolean Note

In Python sets:

True == 1
False == 0

So these are treated as duplicate values.

Example:

myset = {True, 1, False, 0}

print(myset)

Output:

{False, True}

---

4. Why Use Sets?

Removing Duplicates Instantly

Sets are perfect for cleaning repeated data.

Example:

names = ["Ali", "Sara", "Ali", "Hana", "Sara"]

unique_names = set(names)

print(unique_names)

Output:

{'Ali', 'Sara', 'Hana'}

---

Practice Exercises

1. Disjoint Check

Write a program to check if two sets have no common items without using built-in functions.

---

2. Unique Counter

Given a list of student names, count the number of unique names.

---

3. Symmetric Difference

Use the ^ operator to find items that exist in either Set A or Set B, but not both.
Python coding
Basic_Python_Sets.pdf
Basic Python Course
Data Structures: Sets

By Yehya Oumer
(Certificate from Mizan Institute of Technology)

Issued: 2026

---

1. Understanding Sets

A Set is a collection used to store multiple unique items in a single variable.

Sets are written using curly brackets {}.

Example:

thisset = {"apple", "banana", "cherry"}

print(thisset)

---

Characteristics of Sets

- Unordered → Items do not keep a fixed order
- Unindexed → No index numbers
- No Duplicates → Repeated values are automatically removed
- Mutable → You can add or remove items

---

Duplicate Values are Ignored

thisset = {"apple", "banana", "cherry", "apple"}

print(thisset)

Output:

{'apple', 'banana', 'cherry'}

Even though "apple" appears twice, it is stored only once.

---

2. Modifying a Set

Adding One Item

Use .add():

thisset = {"apple", "banana"}

thisset.add("orange")

print(thisset)

---

Adding Multiple Items

Use .update():

thisset.update(["mango", "kiwi"])

print(thisset)

---

Removing Items

Using remove():

thisset.remove("banana")

Important:
If the item does not exist, Python raises an error.

---

Using discard()

thisset.discard("banana")

Difference:
discard() does not raise an error if the item is missing.

---

3. Set Operations (Logic)

Sets support mathematical operations.

These operations are extremely useful in programming and data analysis.

---

Union

Combines all unique values from both sets.

Method:

set1.union(set2)

Operator:

set1 | set2

Example:

set1 = {"a", "b"}
set2 = {1, 2}

print(set1 | set2)

---

Intersection

Returns only common values.

Method:

set1.intersection(set2)

Operator:

set1 & set2

Example:

set1 = {"apple", "banana"}
set2 = {"banana", "orange"}

print(set1 & set2)

Output:

{'banana'}

---

Difference

Returns values in the first set but not in the second set.

Method:

set1.difference(set2)

Operator:

set1 - set2

---

Symmetric Difference

Returns values that are NOT shared between both sets.

Method:

set1.symmetric_difference(set2)

Operator:

set1 ^ set2

---

Boolean Note

In Python sets:

True == 1
False == 0

So Python treats them as duplicate values.

Example:

myset = {True, 1, False, 0}

print(myset)

Output:

{False, True}

---

4. Why Use Sets?

Removing duplicates instantly.

Example:

names = ["Ali", "Sara", "Ali", "Hana", "Sara"]

unique_names = set(names)

print(unique_names)

Output:

{'Ali', 'Sara', 'Hana'}

---

Real-World Uses of Sets

- Removing duplicate usernames
- Finding common interests between users
- Comparing datasets
- Membership testing

---

Practice Exercises

1. Disjoint Check

Write a program to check if two sets have zero common items without using built-in functions.

---

2. Unique Counter

Given a list of student names, count how many unique names exist.

---

3. Symmetric Difference

Use the ^ operator to find items that exist in either Set A or Set B, but not both.