Showing posts with label Coding class series. Show all posts
Showing posts with label Coding class series. Show all posts

Monday, March 16, 2026

Lesson 18: Python Error Handling, Exceptions, and Debugging | Coding Class Series

March 16, 2026 0

 


Lesson 18: Python Error Handling, Exceptions, and Debugging | Coding Class Series

Introduction

Welcome to Lesson 18!
In this lesson, we will learn about handling errors in Python, using exceptions, and debugging techniques.
Error handling ensures that your program does not crash unexpectedly and behaves predictably.


1. Common Errors in Python

  • SyntaxError – Mistake in code structure
  • NameError – Using a variable before defining it
  • TypeError – Using incompatible data types
  • ValueError – Wrong type of value for a function
  • ZeroDivisionError – Dividing a number by zero

Example:

# SyntaxError example
# print("Hello World"

# NameError example
# print(x)

2. Handling Exceptions with try-except

try:
    num = int(input("Enter a number: "))
    result = 10 / num
    print("Result:", result)
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")
except ValueError:
    print("Error: Invalid input! Enter a number.")

3. Using else and finally

try:
    num = int(input("Enter a number: "))
    result = 10 / num
except Exception as e:
    print("Error occurred:", e)
else:
    print("Division successful! Result is", result)
finally:
    print("This block always executes")

4. Raising Custom Exceptions

def check_age(age):
    if age < 18:
        raise ValueError("Age must be at least 18")
    else:
        print("Access granted")

try:
    check_age(15)
except ValueError as e:
    print("Error:", e)

5. Debugging Techniques

  • Use print statements to check variable values
  • Use Python debugger (pdb) for step-by-step execution:
import pdb

def add(a, b):
    pdb.set_trace()
    return a + b

result = add(5, "10")  # This will raise TypeError
print(result)
  • Use IDE debugging tools (VS Code, PyCharm)

6. Practice Exercises

  1. Write a program that divides two numbers and handles all possible exceptions.
  2. Create a function to calculate square root, raise a custom exception if the number is negative.
  3. Debug a program that adds a string to a number and fix it using try-except.
  4. Use finally to close a file after reading its contents, even if an error occurs.


Lesson 17: Python File Handling and Working with CSV/JSON | Coding Class Series

March 16, 2026 0



Lesson 17: Python File Handling and Working with CSV/JSON | Coding Class Series

Introduction

Welcome to Lesson 17!
In this lesson, we will learn how to read and write files in Python and work with CSV and JSON data formats.
File handling is essential to store, retrieve, and process data in Python programs.


1. Working with Text Files

Python provides the open() function to work with files.

Modes:

  • 'r' – Read (default)
  • 'w' – Write (creates or overwrites file)
  • 'a' – Append (add to file)
  • 'r+' – Read and Write

Example: Writing and reading a text file

# Write to a file
with open("example.txt", "w") as f:
    f.write("Hello, Python File Handling!\n")
    f.write("This is Lesson 17.\n")

# Read from the file
with open("example.txt", "r") as f:
    content = f.read()
    print(content)

2. Reading Files Line by Line

with open("example.txt", "r") as f:
    for line in f:
        print(line.strip())

3. Appending Data to a File

with open("example.txt", "a") as f:
    f.write("Appending a new line.\n")

4. Working with CSV Files

Python provides the csv module to work with CSV data.

Writing CSV:

import csv

data = [["Name", "Age", "City"],
        ["Alice", 25, "New York"],
        ["Bob", 30, "London"]]

with open("people.csv", "w", newline="") as file:
    writer = csv.writer(file)
    writer.writerows(data)

Reading CSV:

import csv

with open("people.csv", "r") as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

5. Working with JSON Files

Python provides the json module to work with JSON data.

Writing JSON:

import json

person = {
    "name": "Alice",
    "age": 25,
    "city": "New York"
}

with open("person.json", "w") as f:
    json.dump(person, f, indent=4)

Reading JSON:

import json

with open("person.json", "r") as f:
    data = json.load(f)
    print(data)

6. Practice Exercises

  1. Create a text file notes.txt, write multiple lines, and read them line by line.
  2. Create a CSV file for your favorite movies (Title, Director, Year) and read it back.
  3. Create a JSON file containing 3 student records with name, age, and grade. Read and display them in Python.
  4. Append new data to both CSV and JSON files.


Lesson 16: Python Modules, Packages, and Pip | Coding Class Series

March 16, 2026 0



Lesson 16: Python Modules, Packages, and Pip | Coding Class Series

Introduction

Welcome to Lesson 16!
In this lesson, we will learn about Python modules and packages, how to import them, and how to install external libraries using pip.
Modules and packages help you organize code and reuse functionality efficiently.


1. What is a Module?

A module is a file containing Python code (functions, classes, variables).
You can reuse modules in multiple programs.

Example: math module

import math

print(math.sqrt(16))  # Output: 4.0
print(math.pi)        # Output: 3.141592653589793

2. Importing Modules

You can import a module in different ways:

# Import the whole module
import math
print(math.factorial(5))  # Output: 120

# Import specific functions
from math import factorial, ceil
print(factorial(6))  # Output: 720
print(ceil(4.2))     # Output: 5

# Import with alias
import math as m
print(m.sqrt(25))    # Output: 5.0

3. Creating Your Own Module

You can create a module by saving functions in a .py file.

my_module.py

def greet(name):
    return f"Hello, {name}!"

def add(a, b):
    return a + b

main.py

import my_module

print(my_module.greet("Alice"))
print(my_module.add(10, 5))

4. What is a Package?

A package is a folder containing multiple modules and an __init__.py file.
It allows better organization of related modules.

Example structure:

my_package/
    __init__.py
    module1.py
    module2.py

Usage:

from my_package import module1
module1.function_name()

5. Installing External Libraries with pip

pip is the Python package manager. You can install external libraries easily.

# Install a library
pip install requests

# Check installed libraries
pip list

Example usage:

import requests

response = requests.get("https://api.github.com")
print(response.status_code)  # Output: 200

6. Upgrading and Uninstalling Packages

# Upgrade a package
pip install --upgrade requests

# Uninstall a package
pip uninstall requests

7. Practice Exercises

  1. Create a module calculator.py with functions for addition, subtraction, multiplication, and division. Import it in another program.
  2. Organize two modules (math_ops.py and string_ops.py) into a package my_utils. Import and use functions.
  3. Install the numpy library using pip and create an array.
  4. Upgrade numpy and then uninstall it using pip commands.


Lesson 15: Python Exception Handling and Debugging | Coding Class Series

March 16, 2026 0



Lesson 15: Python Exception Handling and Debugging | Coding Class Series

Introduction

Welcome to Lesson 15!
In this lesson, we will learn how to handle errors in Python programs using exceptions and debug our code.
Exception handling is important to prevent program crashes and manage unexpected situations gracefully.


1. What is an Exception?

An exception is an error that occurs during the execution of a program.
Common examples:

  • Division by zero
  • File not found
  • Index out of range
# Division by zero
a = 10
b = 0
print(a / b)  # Raises ZeroDivisionError

2. Try and Except

Use try and except to catch and handle exceptions.

try:
    a = 10
    b = 0
    print(a / b)
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")

3. Handling Multiple Exceptions

You can handle different types of exceptions separately.

try:
    numbers = [1, 2, 3]
    print(numbers[5])
    a = 10 / 0
except IndexError:
    print("Index not found in the list!")
except ZeroDivisionError:
    print("Cannot divide by zero!")

4. Using else and finally

  • else: runs if no exception occurs
  • finally: always runs, even if an exception occurs
try:
    a = 10
    b = 2
    print(a / b)
except ZeroDivisionError:
    print("Error: Cannot divide by zero!")
else:
    print("Division successful!")
finally:
    print("This runs always!")

5. Raising Exceptions

You can manually raise exceptions using raise.

age = -5

if age < 0:
    raise ValueError("Age cannot be negative!")

6. Debugging Tips

  • Print statements: Check the values of variables at different points.
  • Python debugger (pdb): Step through code line by line.
  • IDE debugging tools: PyCharm, VS Code allow breakpoints and watches.
import pdb

x = 5
y = 0

pdb.set_trace()  # Start debugging here
z = x / y
print(z)

7. Practice Exercises

  1. Write a program that asks the user for two numbers and divides them. Handle division by zero errors.
  2. Open a file that may not exist and handle FileNotFoundError.
  3. Raise an exception if a user's input string length is less than 5.
  4. Use pdb to debug a program that calculates the factorial of a number.