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
Python coding
Python_Testing_and_Debugging_Guide.pdf
Common Programming Errors

Syntax Error

if True
print("Hello")

Missing colon.

---

Name Error

print(username)

Variable not defined.

---

Type Error

"5" + 5

String and integer cannot be added directly.

---

Zero Division Error

10 / 0

Division by zero is not allowed.

---

Why Testing and Debugging Matter

Professional developers do not rely on luck.

They:

- Write tests
- Verify results
- Debug systematically

This leads to reliable and maintainable software.

---

Practice Exercises

1. Create a function called multiply() and write unit tests for it.

---

2. Use assertIn() to verify that "banana" exists inside a list.

---

3. Write a test that confirms dividing by zero raises a ZeroDivisionError.

---

4. Create a program with an intentional bug and use print() debugging to locate the problem.

---

5. Refactor repeated code using the DRY principle.
Python coding
Version_Control_and_Deployment_Bonus.pdf
Basic Python Course
Bonus: Version Control & Deployment

By Yehya Oumer
(Certificate from Mizan Institute of Technology)

Issued: 2026

---

1. Version Control with Git

As projects become larger, simply creating multiple copies of files is not enough.

Version Control helps developers:

- Track changes
- Restore previous versions
- Work with teams
- Manage large projects efficiently

Git is the most popular version control system in the world.

---

Why Use Git?

Without Git:

project_final.py
project_final_v2.py
project_final_final.py
project_final_really_final.py

This quickly becomes confusing.

With Git:

Every change is tracked automatically.

---

The Git Workflow

Git follows a simple workflow.

---

Initialize a Repository

git init

Starts tracking a project.

---

Add Files

git add .

Selects changes that should be saved.

---

Create a Commit

git commit -m "Initial version"

Creates a snapshot of your project.

---

Push to GitHub

git push

Uploads your project to a remote repository.

---

2. GitHub: Your Developer Portfolio

GitHub is a cloud platform used to host Git repositories.

Think of GitHub as:

A portfolio for programmers

---

Why GitHub Matters

Your GitHub profile can showcase:

- Python projects
- AI experiments
- Data analysis projects
- Machine learning models
- Open-source contributions

Many employers review GitHub profiles before hiring developers.

---

Benefits of GitHub

- Backup your projects
- Collaborate with others
- Share code publicly
- Build a professional portfolio

---

3. Deployment: Sharing Your Applications

Deployment means making your application available to users.

Before deployment:

Only you can run the program.

After deployment:

Anyone can use the application online.

---

Popular Deployment Platforms

- Streamlit Cloud
- Render
- Railway
- Vercel
- AWS
- Google Cloud
- Microsoft Azure

---

4. Building a Simple Streamlit App

Streamlit is one of the easiest ways to turn Python code into a web application.

---

Example

import streamlit as st
import pandas as pd

st.title("Yehya's Sales Dashboard")

df = pd.read_csv("sales.csv")

---

Displaying Data

st.write(
"Here is the latest cleaned sales data:"
)

st.dataframe(df)

---

Creating a Chart

st.line_chart(
df["Price"]
)

---

What This Application Does

- Loads sales data
- Displays the dataset
- Creates a line chart
- Runs inside a browser

No HTML, CSS, or JavaScript required.

---

Running a Streamlit App

Save the file as:

app.py

Run:

streamlit run app.py

A browser window will automatically open.

---

Why Deployment Matters

Deployment allows you to:

- Share projects
- Build SaaS products
- Create dashboards
- Publish AI applications
- Earn money from software

---

Real-World Applications

- AI Chatbots
- Business Dashboards
- Data Analysis Tools
- Stock Market Apps
- Machine Learning Predictors
- Customer Management Systems

---

5. The Roadmap to AI Architect

After mastering Python fundamentals, continue with:

---

Math for Machine Learning

Learn:

- Linear Algebra
- Calculus
- Statistics
- Probability

---

Scikit-Learn

Study:

- Regression
- Classification
- Clustering
- Model Evaluation

---

Deep Learning

Learn:

- Neural Networks
- TensorFlow
- PyTorch

---

Cloud AI

Deploy models using:

- AWS
- Google Cloud
- Microsoft Azure

---

Final Advice

The fastest way to master programming is:

Learn → Build → Teach

Continue creating projects, publishing code, and teaching others what you learn.

---

Practice Exercises

1. Initialize a Git repository and create your first commit.

---

2. Create a GitHub account and upload one Python project.

---

3. Build a simple Streamlit application that displays a CSV file.

---

4. Add a line chart showing student grades.

---

5. Research the differences between:

AWS
Google Cloud
Azure

and write a short comparison.
Python coding
Python_Masterclass_Final_Summary.pdf
# Python Programming Masterclass
### Complete Course Summary & Reference Guide

By Yehya Oumer
Mizan Institute of Technology
From Basics to Data Science & AI Foundations
Issued: May 2026

---

# Module 1: Numerical Foundations (NumPy)

Efficient data handling starts with NumPy, providing arrays that are significantly faster than standard Python lists. 0

## NumPy Essentials

import numpy as np

arr = np.array([1, 2, 3, 4, 5])

# Reshaping 1D to 2D
new_arr = arr.reshape(1, 5)

# Statistics
mean_val = np.mean(arr)

---

# Module 2: Data Analysis with Pandas

Pandas is used for cleaning, exploring, and manipulating structured data using DataFrames. 1

## Cleaning Messy Data

import pandas as pd

df = pd.read_csv('data.csv')

# Remove null values
df.dropna(inplace=True)

# Remove duplicate rows
df.drop_duplicates(inplace=True)

# Format date column
df['Date'] = pd.to_datetime(df['Date'])

---

# Module 3: Statistical Visualization

Transform raw numbers into meaningful visual insights using Matplotlib and Seaborn. 2

## Visualization Toolkit

- Line Plots → Trends over time
- Scatter Plots → Relationships between variables
- Box Plots → Distribution and outlier detection
- Heatmaps → Correlation analysis

### Example

import seaborn as sns
import matplotlib.pyplot as plt

sns.heatmap(df.corr(), annot=True)

plt.show()

---

# Module 4: Web Scraping & APIs

Gather real-world data from the internet using Python. 3

## BeautifulSoup & Requests

import requests
from bs4 import BeautifulSoup

res = requests.get("https://example.com")

soup = BeautifulSoup(
res.content,
"html.parser"
)

print(soup.find('h1').text)

---

# Module 5: Professional Development

Learn how to write reliable, maintainable, and professional Python code. 4

## Testing & PEP 8

- Follow DRY (Don't Repeat Yourself)
- Use PEP 8 naming conventions
- Prefer snake_case for variables and functions

### Example

import unittest

class TestProject(unittest.TestCase):

def test_logic(self):

self.assertEqual(
2 + 2,
4
)

---

# Conclusion & Next Steps

You have successfully completed the Python foundations required for AI Architecture.

Next topics to study:

- Machine Learning Mathematics
- Model Development
- Scikit-Learn
- Deep Learning
- AI Engineering

✓ Course Completed Successfully
Python coding
Advanced_Python_Architecture_Mastery.pdf
Advanced Python Architecture

By Yehya Oumer
Mizan Institute of Technology
Issued: 2026

---

# 1. Object-Oriented Programming (OOP) Mastery

In AI architecture, almost everything is built around objects.

Frameworks such as PyTorch use classes and inheritance extensively to build neural network layers and reusable components. 0

---

## Classes, Methods, and Inheritance

class AIModel:

def __init__(self, name):

self.name = name

def predict(self, data):

raise NotImplementedError(
"Subclasses must implement this!"
)


class NeuralNetwork(AIModel):

def predict(self, data):

return (
f"Processing {data} "
f"using {self.name} architecture..."
)


model = NeuralNetwork(
"Transformer-V2"
)

print(
model.predict(
[0.1, 0.5, 0.9]
)
)

---

## Why OOP Matters

Benefits:

- Reusable code
- Better organization
- Easier maintenance
- Scalable software architecture
- Foundation of modern AI frameworks

---

# 2. Decorators: Enhancing Functions

Decorators allow you to modify the behavior of a function without changing its original source code. 1

They are commonly used for:

- Logging
- Monitoring
- Timing functions
- Authentication
- Performance measurement

---

## Example

import time

def timer_decorator(func):

def wrapper(*args, **kwargs):

start = time.time()

result = func(
*args,
**kwargs
)

print(
f"Execution time: "
f"{time.time() - start:.4f}s"
)

return result

return wrapper


@timer_decorator
def train_model():

time.sleep(1.5)

return "Model Trained!"


train_model()

---

## What Happens Here?

@timer_decorator

Wraps the function automatically.

---

time.time()

Measures execution time.

---

Useful for:

- AI training sessions
- Performance optimization
- Benchmarking

---

# 3. Generators & Memory Efficiency

Large-scale applications cannot always load huge datasets into memory.

Generators solve this problem by producing data one item at a time. 2

---

## Example

def batch_generator(
data,
batch_size
):

for i in range(
0,
len(data),
batch_size
):

yield data[
i:i + batch_size
]


large_dataset = list(
range(1000000)
)

for batch in batch_generator(
large_dataset,
32
):

pass

---

## Understanding yield

Unlike return:

return

Stops the function completely.

---

yield

Pauses the function and remembers its state.

---

Benefits:

- Lower memory usage
- Faster processing
- Better scalability

---

# 4. Asynchronous Programming (asyncio)

Asynchronous programming allows multiple tasks to run concurrently without blocking each other. 3

This is useful when:

- Calling APIs
- Downloading files
- Working with networks
- Processing multiple requests

---

## Example

import asyncio

async def fetch_api_data(id):

print(
f"Starting request {id}..."
)

await asyncio.sleep(2)

return (
f"Data {id} received"
)


async def main():

results = await asyncio.gather(
fetch_api_data(1),
fetch_api_data(2)
)

print(results)


asyncio.run(main())

---

## Understanding Key Concepts

async def

Defines an asynchronous function.

---

await

Waits without blocking the entire program.

---

asyncio.gather()

Runs multiple tasks concurrently.

---

Benefits:

- Faster applications
- Better responsiveness
- Efficient network operations

---

# 5. Context Managers (with Statement)

Context managers safely manage resources.

They ensure resources are released properly even if an error occurs. 4

---

## Example

`python
class DatabaseConnection:

enterer__(self):

print(
"Connected to AI Database"
)

return self
Python coding
Advanced_Python_Architecture_Mastery.pdf
def exit(
self,
exc_type,
exc_val,
exc_tb
):

print(
"Connection Closed Safely"
)


with DatabaseConnection() as db:

print(
"Running queries..."
)

---

## Why Context Managers Matter

Without context managers:

python
Open resource
Do work
Manually close resource

Easy to forget.

---

With context managers:

python
Open resource
Do work
Automatically close resource

Safer and cleaner.

---

Common Uses

- Files
- Databases
- Network connections
- Cloud resources

---

# The AI Architect Mindset

Advanced Python is not only about writing code.

It is about designing systems that are:

- Scalable
- Maintainable
- Efficient
- Professional

Use:

text
OOP → Structure
Decorators → Flexibility
Generators → Scale
Asyncio → Speed
Context Managers → Safety

These concepts form the foundation of professional software engineering and AI architecture. 5

---

# Practice Exercises

### 1. OOP Challenge

Create a class called:

python
Robot

Add:

python
name
version
speak()

---

### 2. Decorator Challenge

Create a decorator that prints:

text
Function Started
Function Finished

before and after execution.

---

### 3. Generator Challenge

Create a generator that yields:

python
1 to 100

one number at a time.

---

### 4. Async Challenge

Create three asynchronous functions and execute them using:

python
asyncio.gather()

---

### 5. Context Manager Challenge

Create a custom context manager that prints:

text
Resource Opened

when entering and:

text
Resource Closed
`

when exiting.
❤1
━━━━━━━━━━━━━━━━━━━━━━
🎓 COURSE COMPLETED
━━━━━━━━━━━━━━━━━━━━━━

Congratulations!

You have successfully completed the Python Programming Masterclass.

From Python fundamentals to Advanced Python Architecture, you have gained the knowledge and skills needed to continue your journey in software development, data science, and AI.

However, learning does not stop here.

In the coming days, this channel will continue to provide:

✓ Practice Questions
✓ Quizzes and Tests
✓ Programming Challenges
✓ Projects
✓ Advanced Tips
✓ Learning Resources
✓ Course Updates
✓ AI & Technology Content

Make sure to stay active, participate in discussions, and complete the upcoming exercises to strengthen your understanding.

The course may be complete, but the journey of mastery has only begun.

Keep learning.
Keep building.
Keep improving.

━━━━━━━━━━━━━━━━━━━━━━
Course Status: COMPLETED ✓
Next Phase: Practice & Mastery
━━━━━━━━━━━━━━━━━━━━━━

By Yehya Oumer
Mizan Institute of Technology
2026
📢 New Chapter Started

The lessons are finished.

Now we focus on what matters most:

Building.

Expect daily Python content:
✓ Projects
✓ Useful Scripts
✓ Coding Challenges
✓ AI Tools
✓ Python Tips
✓ Career Advice
✓ Advanced Concepts

Don't become someone who completed a course.

Become someone who uses what they learned.

Stay tuned.
🐍 Python Tip #1: List Comprehensions

List comprehensions allow you to create lists in a shorter and cleaner way.

Instead of:

numbers = []

for i in range(1, 6):
numbers.append(i)

print(numbers)

You can write:

numbers = [i for i in range(1, 6)]

print(numbers)

Output:

[1, 2, 3, 4, 5]

---

You can also perform operations while creating the list.

Example:

squares = [x**2 for x in range(1, 6)]

print(squares)

Output:

[1, 4, 9, 16, 25]

---

Using conditions:

even_numbers = [
x for x in range(1, 11)
if x % 2 == 0
]

print(even_numbers)

Output:

[2, 4, 6, 8, 10]

---

Why use list comprehensions?

✓ Cleaner code
✓ Fewer lines
✓ Faster execution
✓ Widely used in Data Science and AI

Challenge:

Create a list comprehension that generates:

[10, 20, 30, 40, 50]

without manually typing the numbers.
Python coding
🐍 Python Tip #1: List Comprehensions List comprehensions allow you to create lists in a shorter and cleaner way. Instead of: numbers = [] for i in range(1, 6): numbers.append(i) print(numbers) You can write: numbers = [i for i in range(1, 6)] print(numbers)…
💡 Python Tip #2: The enumerate() Function

When looping through a list, you often need both the item's index and its value.

Instead of writing:

fruits = ["Apple", "Banana", "Orange"]

for i in range(len(fruits)):
print(i, fruits[i])

You can use enumerate():

fruits = ["Apple", "Banana", "Orange"]

for index, fruit in enumerate(fruits):
print(index, fruit)

Output:

0 Apple
1 Banana
2 Orange

---

Starting the Index from a Different Number

By default, enumerate() starts counting from 0.

You can change the starting number:

fruits = ["Apple", "Banana", "Orange"]

for index, fruit in enumerate(fruits, start=1):
print(index, fruit)

Output:

1 Apple
2 Banana
3 Orange

---

Why use enumerate()?

✓ Cleaner and more readable code
✓ No need to manually manage indexes
✓ Reduces common indexing mistakes
✓ Frequently used in real-world Python projects

---

Challenge:

Without using range(len()), print the following output using enumerate():

Student 1: Ahmed
Student 2: Sara
Student 3: John

using this list:

students = ["Ahmed", "Sara", "John"]
Python coding
💡 Python Tip #2: The enumerate() Function When looping through a list, you often need both the item's index and its value. Instead of writing: fruits = ["Apple", "Banana", "Orange"] for i in range(len(fruits)): print(i, fruits[i]) You can use enumerate():…
🔥 Python Trick #3: Multiple Variable Assignment

Python allows you to assign multiple variables in a single line.

Instead of:

name = "Yehya"
age = 16
country = "Ethiopia"

You can write:

name, age, country = "Yehya", 16, "Ethiopia"

---

You can also assign the same value to multiple variables.

Example:

x = 0
y = 0
z = 0

Simplified:

x = y = z = 0

---

Unpacking a Collection

Python can unpack a list or tuple directly into variables.

Example:

languages = ["Python", "Java", "C++"]

first, second, third = languages

print(first)
print(second)
print(third)

Output:

Python
Java
C++

---

Ignoring Values

If you only need some values, use _ for the ones you don't care about.

Example:

numbers = (10, 20, 30)

first, _, third = numbers

print(first)
print(third)

Output:

10
30

---

Why use multiple assignment?

✓ Cleaner code
✓ Less typing
✓ Easier to read
✓ Commonly used in professional Python code

---

Challenge:

Without creating temporary variables, write Python code that swaps the values of:

a = 15
b = 40

so the final output becomes:

a = 40
b = 15
Python coding
🔥 Python Trick #3: Multiple Variable Assignment Python allows you to assign multiple variables in a single line. Instead of: name = "Yehya" age = 16 country = "Ethiopia" You can write: name, age, country = "Yehya", 16, "Ethiopia" --- You can also assign…
🐍 Python Tip #4: The zip() Function

The zip() function combines two or more iterables element by element.

Example:

names = ["Ahmed", "Sara", "John"]
scores = [95, 88, 91]

for name, score in zip(names, scores):
print(name, score)

Output:

Ahmed 95
Sara 88
John 91

---

Using zip() with Three Lists

You can combine more than two lists.

Example:

names = ["Ahmed", "Sara", "John"]
ages = [18, 19, 20]
countries = ["Egypt", "Ethiopia", "Canada"]

for name, age, country in zip(names, ages, countries):
print(name, age, country)

Output:

Ahmed 18 Egypt
Sara 19 Ethiopia
John 20 Canada

---

Converting zip() to a List

The zip() function returns a zip object.

To see all paired values, convert it into a list.

Example:

letters = ["A", "B", "C"]
numbers = [1, 2, 3]

result = list(zip(letters, numbers))

print(result)

Output:

[('A', 1), ('B', 2), ('C', 3)]

---

Why use zip()?

✓ Iterate over multiple lists at the same time
✓ Write cleaner and shorter code
✓ Avoid manual indexing with range()
✓ Frequently used in data processing and automation

---

Challenge:

Using zip(), print the following output:

Ali scored 90
Sara scored 85
John scored 95

using these lists:

students = ["Ali", "Sara", "John"]
marks = [90, 85, 95]
Python coding
🐍 Python Tip #4: The zip() Function The zip() function combines two or more iterables element by element. Example: names = ["Ahmed", "Sara", "John"] scores = [95, 88, 91] for name, score in zip(names, scores): print(name, score) Output: Ahmed 95 Sara…
⚡ Python Tip #5: The any() and all() Functions

Python provides two useful built-in functions for checking multiple conditions: any() and all().

---

Using any()

The any() function returns True if at least one value is True.

Example:

values = [False, False, True]

print(any(values))

Output:

True

---

Using all()

The all() function returns True only if every value is True.

Example:

values = [True, True, True]

print(all(values))

Output:

True

---

Another Example

numbers = [10, 20, 30, 40]

print(all(num > 5 for num in numbers))

Output:

True

Since every number is greater than 5, all() returns True.

---

Example with any()

numbers = [10, 20, 30, 40]

print(any(num > 35 for num in numbers))

Output:

True

Only one number (40) is greater than 35, so any() returns True.

---

Why use any() and all()?

✓ Makes code shorter and cleaner
✓ Eliminates unnecessary loops
✓ Easy way to evaluate multiple conditions
✓ Commonly used in data validation and filtering

---

Challenge:

Given the list:

numbers = [12, 18, 25, 30]

1. Check if all numbers are even.
2. Check if any number is greater than 20.

Try solving it before running the code!
Python coding
⚡ Python Tip #5: The any() and all() Functions Python provides two useful built-in functions for checking multiple conditions: any() and all(). --- Using any() The any() function returns True if at least one value is True. Example: values = [False, False…
🚀 Python Tip #6: The *args and **kwargs Parameters

Sometimes you don't know how many arguments a function will receive.

Python provides *args and **kwargs to handle this flexibly.

---

Using *args

The *args parameter allows a function to accept any number of positional arguments.

Example:

def add_numbers(*args):
print(sum(args))

add_numbers(5, 10)
add_numbers(1, 2, 3, 4, 5)

Output:

15
15

---

Using **kwargs

The **kwargs parameter allows a function to accept any number of keyword arguments.

Example:

def student_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

student_info(
name="Ahmed",
age=18,
country="Ethiopia"
)

Output:

name: Ahmed
age: 18
country: Ethiopia

---

Using Both Together

A function can use both *args and **kwargs.

Example:

def display(*args, **kwargs):
print(args)
print(kwargs)

display(
10,
20,
name="Sara",
age=19
)

Output:

(10, 20)
{'name': 'Sara', 'age': 19}

---

Why use *args and **kwargs?

✓ Accept a flexible number of arguments
✓ Build reusable functions
✓ Useful for libraries and frameworks
✓ Commonly used in Flask, Django, and AI libraries

---

Challenge:

Create a function called multiply() that accepts any number of numbers using *args and returns their product.

Example:

multiply(2, 3, 4)

Expected Output:

24
Python coding
🚀 Python Tip #6: The *args and **kwargs Parameters Sometimes you don't know how many arguments a function will receive. Python provides *args and **kwargs to handle this flexibly. --- Using *args The *args parameter allows a function to accept any number…
🐍 Python Tip #7: The enumerate() Function

When looping through a list, you sometimes need both the index and the value.

Instead of manually tracking the index, Python provides the enumerate() function.

---

Without enumerate()

fruits = ["Apple", "Banana", "Orange"]

index = 0

for fruit in fruits:
print(index, fruit)
index += 1

Output:

0 Apple
1 Banana
2 Orange

---

With enumerate()

fruits = ["Apple", "Banana", "Orange"]

for index, fruit in enumerate(fruits):
print(index, fruit)

Output:

0 Apple
1 Banana
2 Orange

---

Starting from a Different Number

You can choose where the counting begins.

Example:

fruits = ["Apple", "Banana", "Orange"]

for index, fruit in enumerate(fruits, start=1):
print(index, fruit)

Output:

1 Apple
2 Banana
3 Orange

---

Why use enumerate()?

✓ Cleaner code
✓ No need for a manual counter
✓ Easier to read and maintain
✓ Commonly used in Python projects

---

Challenge:

Using enumerate(), print the following output:

Question 1: What is Python?
Question 2: What is a List?
Question 3: What is a Dictionary?

using this list:

questions = [
"What is Python?",
"What is a List?",
"What is a Dictionary?"
]
Python coding
🐍 Python Tip #7: The enumerate() Function When looping through a list, you sometimes need both the index and the value. Instead of manually tracking the index, Python provides the enumerate() function. --- Without enumerate() fruits = ["Apple", "Banana"…
⚡ Python Tip #8: The sorted() Function

The sorted() function returns a new sorted list without modifying the original one.

---

Basic Example

numbers = [5, 2, 8, 1, 9]

result = sorted(numbers)

print(result)

Output:

[1, 2, 5, 8, 9]

The original list remains unchanged.

---

Sorting in Descending Order

Use the reverse=True parameter.

numbers = [5, 2, 8, 1, 9]

result = sorted(numbers, reverse=True)

print(result)

Output:

[9, 8, 5, 2, 1]

---

Sorting Strings

fruits = ["Orange", "Apple", "Banana", "Mango"]

print(sorted(fruits))

Output:

['Apple', 'Banana', 'Mango', 'Orange']

---

Difference Between sorted() and sort()

sorted()

numbers = [3, 1, 2]

new_numbers = sorted(numbers)

print(numbers)
print(new_numbers)

Output:

[3, 1, 2]
[1, 2, 3]

---

`list.sort()

``
python
numbers = [3, 1, 2]

numbers.sort()

print(numbers)

Output:

python
[1, 2, 3]

Unlike `sorted()`, the `sort()` method modifies the original list.

---

Why use `sorted()`?

✓ Keeps the original data unchanged
✓ Easy to sort numbers and strings
✓ Supports ascending and descending order
✓ Commonly used in data processing and reporting

---

Challenge:

Given the list:

python
scores = [88, 95, 72, 100, 67]
`

1. Print the scores in ascending order.
2. Print the scores in descending order.
3. Verify that the original list remains unchanged after using `sorted()`.
Python coding
⚡ Python Tip #8: The sorted() Function The sorted() function returns a new sorted list without modifying the original one. --- Basic Example numbers = [5, 2, 8, 1, 9] result = sorted(numbers) print(result) Output: [1, 2, 5, 8, 9] The original list remains…
💡 Python Tip #9: Lambda Functions

A lambda function is a small anonymous function that can have any number of arguments but only one expression.

Lambda functions are useful when you need a simple function for a short period of time.

---

Basic Syntax

lambda arguments: expression

---

Example

Instead of writing:

def square(x):
return x ** 2

print(square(5))

You can write:

square = lambda x: x ** 2

print(square(5))

Output:

25

---

Multiple Arguments

Lambda functions can accept multiple arguments.

Example:

multiply = lambda a, b: a * b

print(multiply(6, 4))

Output:

24

---

Using lambda with sorted()

You can sort complex data using a custom key.

Example:

students = [
("Ali", 85),
("Sara", 95),
("John", 78)
]

result = sorted(
students,
key=lambda student: student[1]
)

print(result)

Output:

[('John', 78), ('Ali', 85), ('Sara', 95)]

---

Why use Lambda Functions?

✓ Write short functions quickly
✓ Useful with sorted(), map(), and filter()
✓ Makes code more concise
✓ Commonly used in data analysis and automation

---

Challenge:

Using a lambda function, create a function that returns the cube of a number.

Example:

cube = lambda x: x ** 3

print(cube(4))

Expected Output:

64
Python coding
💡 Python Tip #9: Lambda Functions A lambda function is a small anonymous function that can have any number of arguments but only one expression. Lambda functions are useful when you need a simple function for a short period of time. --- Basic Syntax lambda…
🚀 Python Tip #10: The collections.Counter Class

Counting how many times items appear in a list is a common task.

Instead of writing loops manually, Python provides the Counter class from the collections module.

---

Importing Counter

from collections import Counter

---

Basic Example

from collections import Counter

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

count = Counter(fruits)

print(count)

Output:

Counter({
'apple': 3,
'banana': 2,
'orange': 1
})

---

Counting Characters

from collections import Counter

text = "programming"

count = Counter(text)

print(count)

Output:

Counter({
'g': 2,
'r': 2,
'm': 2,
'p': 1,
'o': 1,
'a': 1,
'i': 1,
'n': 1
})

---

Finding the Most Common Items

Use the most_common() method.

Example:

from collections import Counter

votes = [
"Python",
"Java",
"Python",
"C++",
"Python",
"Java"
]

count = Counter(votes)

print(count.most_common(1))

Output:

[('Python', 3)]

---

Why use Counter?

✓ Count items with a single line of code
✓ Find the most common elements quickly
✓ Useful for text analysis and data processing
✓ Frequently used in Data Science and Machine Learning

---

Challenge:

Given the following list:

numbers = [1, 2, 2, 3, 3, 3, 4, 4, 5]

1. Count how many times each number appears.
2. Print the most common number.
3. Which number appears exactly once?