Category: Learn Python

  • Exception Handling in Python

    🧠 What is an Exception?

    • Sometimes, a program has an error while running.
    • These errors are called exceptions.
    • Example: Dividing a number by zero β†’ this gives an error.

    πŸ§ͺ Example:

    print(10 / 0)
    

    πŸ‘† This gives an error: ZeroDivisionError


    🎯 Why Use Exception Handling?

    • To stop the program from crashing when error happens.
    • We can show a friendly message instead.

    πŸ“˜ Keywords Used:

    KeywordMeaning (Simple)
    tryWrite risky code here
    exceptWhat to do if error happens
    elseWhat to do if no error happens
    finallyAlways do this, error or no error
    raiseYou make your own error

    πŸ›  Structure:

    try:
        # Your code
    except:
        # If error happens
    else:
        # If no error happens
    finally:
        # Always run this
    

    πŸ“Œ Real-Life Example:

    • ATM machine:
      • If you enter the wrong PIN β†’ show error, don’t crash!
    • Same in Python: If something goes wrong, show a message, not crash.

    Examples :

    1) Demo crash without handling:

    num = int(input("Enter a number: "))
    print(100 / num)
    

    2) Using try-except

    try:
        num = int(input("Enter a number: "))
        print(100 / num)
    except ZeroDivisionError:
        print("You cannot divide by zero!")
    except ValueError:
        print("Please enter a valid number.")
    

    3) else and finally

    try:
        num = int(input("Enter a number: "))
        result = 100 / num
    except ZeroDivisionError:
        print("Cannot divide by zero!")
    else:
        print("Result is:", result)
    finally:
        print("Execution complete.")
    

    4) Handling Multiple Errors

    try:
        lst = [1, 2, 3]
        index = int(input("Enter index: "))
        print(lst[index])
    except (IndexError, ValueError) as e:
        print("Error:", e)
    

    5) Custom Exceptions

    age = int(input("Enter your age: "))
    if age < 18:
        raise Exception("You must be at least 18 years old.")
    

    6) Creating Your Own Exception Class

    class UnderAgeError(Exception):
        pass
    
    age = int(input("Enter age: "))
    if age < 18:
        raise UnderAgeError("You are under 18, not allowed!")
    

    7) Get two inputs and safely divide them.

    try:
        a = int(input("Enter numerator: "))
        b = int(input("Enter denominator: "))
        result = a / b
        print("Result:", result)
    except ZeroDivisionError:
        print("Denominator cannot be zero!")
    except ValueError:
        print("Please enter valid numbers.")
    

    8)Ask for an index and print item from a list.

    fruits = ["apple", "banana", "cherry"]
    try:
        i = int(input("Enter index (0–2): "))
        print("Fruit:", fruits[i])
    except IndexError:
        print("Index out of range.")
    except ValueError:
        print("Invalid input. Please enter a number.")
    

    9) Raise exception if password is less than 6 characters.

    try:
        username = input("Username: ")
        password = input("Password: ")
        if len(password) < 6:
            raise ValueError("Password too short! Must be at least 6 characters.")
        print("Login successful.")
    except ValueError as ve:
        print("Error:", ve)
    

    10) Age Verifier using Custom Exception

    class AgeTooLowError(Exception):
        pass
    
    try:
        age = int(input("Enter your age: "))
        if age < 18:
            raise AgeTooLowError("Access denied: You are under 18.")
        else:
            print("Access granted.")
    except AgeTooLowError as e:
        print(e)
    except ValueError:
        print("Please enter a valid number.")
    

    11) Read a file. If not found, handle error.

    try:
        with open("data.txt", "r") as file:
            content = file.read()
            print(content)
    except FileNotFoundError:
        print("File not found.")
    

  • File Handling in Python: Read, Write, and Manage Files

    What is File Handling?

    “File handling allows you to interact with files stored on your computer. You can create, read, write, and update files directly from your Python code.”

    Example Use Cases:

    1. Automating report generation.
    2. Reading large datasets for analysis.
    3. Logging activities in an application.

    Modes of File Handling in Python

    “When working with files, you can open them in different modes:

    • r: Read mode
    • w: Write mode
    • a: Append mode
    • r+: Read and write mode
    • x: Create a file but throw an error if it already exists.”

    Reading a File in Python

    “Let’s start with reading files. Suppose you have a file named example.txt containing some data.”

    with open("example.txt", "r") as file:  
        content = file.read()  
        print(content)  
    

    “This reads the entire content of the file and prints it. The with statement ensures the file closes automatically.”

    Writing to a File

    “Now, let’s write data into a file. If the file doesn’t exist, Python creates it.”

    with open("output.txt", "w") as file:  
        file.write("Hello, this is written by Python!")  
    

    “This will overwrite the file if it already exists. Be cautious while using w mode.”

    Appending Data to a File

    “What if you don’t want to overwrite the file but instead add new data? Use append mode (a).”

    with open("output.txt", "a") as file:  
        file.write("\nAdding a new line to the file.")  
    

    Reading Files Line by Line

    • “For large files, reading line by line saves memory.”
    with open("example.txt", "r") as file:  
        for line in file:  
            print(line.strip())  
    

    Examples :

    1. A school generates a report for each student
    students = ["Saravana", "Anjali", "Rahul"]  
    
    with open("students_report.txt", "w") as report:  
        for student in students:  
            report.write(f"Report for {student}\n")  
            report.write("Maths: 85, Science: 90, English: 88\n\n")  
    

    2. Create backups of important data by copying files.

    def backup_file(source, destination):
        with open(source, "r") as src:
            data = src.read()
        with open(destination, "w") as dest:
            dest.write(data)
    
    backup_file("important_data.txt", "backup_important_data.txt")
    print("Backup created successfully!")
    

    Use Case: Periodic backups for financial reports or user records.

    Inventory Management in Retail

    def update_inventory(item, quantity):
        with open("inventory.txt", "a") as inventory_file:
            inventory_file.write(f"{item}: {quantity}\n")
    
    update_inventory("Laptop", 10)
    update_inventory("Smartphone", 15)
    print("Inventory updated!")
    

    Use Case: Managing stock for e-commerce websites or retail stores.

    Maintaining an Attendance Log

    def mark_attendance(student_name, date):
        with open("attendance_log.txt", "a") as log:
            log.write(f"{student_name} attended on {date}\n")
    
    mark_attendance("Saravana", "2024-11-20")
    mark_attendance("Anjali", "2024-11-20")
    print("Attendance marked!")
    

  • Python Objects – Step-by-Step Guide for Beginners

    In Python, everything is an object – yes, even numbers, strings, and functions!

    Let’s understand what objects are, how they work, and how you can create your own.


    πŸ”Ή Step 1: What is an Object?

    An object is a collection of data (variables) and behaviors (functions/methods). Think of an object as a real-world thing that has:

    • Properties (like name, color, age)
    • Actions (like speak, walk, drive)

    πŸ“Œ Example: A Car is an object. It has properties like brand, model, color and actions like start(), stop(), drive().


    πŸ”Ή Step 2: Objects Are Created from Classes

    A class is like a blueprint. You use it to create objects.

    πŸ“¦ Class = Design
    πŸš— Object = Real item built from that design


    πŸ”Ή Step 3: Define a Class in Python

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
        def greet(self):
            print(f"Hi, I am {self.name} and I am {self.age} years old.")
    

     Explanation:

    • class Person: β†’ defines a new class called Person
    • __init__() β†’ a special method that runs when an object is created (like a constructor)
    • self β†’ refers to the current object
    • greet() β†’ a method (function inside the class)

     Step 4: Create Objects from the Class

    p1 = Person("Asha", 25)
    p2 = Person("Ravi", 30)
    
    p1.greet()  # Output: Hi, I am Asha and I am 25 years old.
    p2.greet()  # Output: Hi, I am Ravi and I am 30 years old.
    

    Now, p1 and p2 are objects (also called instances) of the class Person.


    πŸ”Ή Step 5: Add More Methods

    You can add more functions (called methods) inside the class:

    class Person:
        def __init__(self, name, age):
            self.name = name
            self.age = age
    
        def greet(self):
            print(f"Hi, I am {self.name} and I am {self.age} years old.")
            
        def checkvote(self):
            if(self.age>=18):
                print("Eligible to Vote")
            else:
                print("Not Eligible to Vote")
    
    a1=Person("Asha",10)
    a1.greet()
    a1.checkvote()
    
    
    
    ConceptReal Life Example
    ClassMobile phone design
    ObjectReal phone in your hand
    AttributeBrand, model, price
    MethodCall, message, camera

    Example :

    class student:
        def __init__ (self,rollno,stname,m1,m2,m3,m4,m5):
            self.rollno=rollno
            self.stname=stname
            self.m1=m1
            self.m2=m2
            self.m3=m3
            self.m4=m4
            self.m5=m5
    
        def result(self):
            total=self.m1+self.m2+self.m3+self.m4+self.m5
            print("Total = ",total)
    
        def welcome(self):
            print("Welcome : ",self.stname)
            
    s1=student(1001,'Raja',100,100,80,70,90)
    s2=student(1002,'Kumar',100,100,80,100,90)
    s1.welcome()
    s1.result()
    s2.welcome()
    s2.result()
    

    Output

    Welcome : Raja
    Total = 440
    Welcome : Kumar
    Total = 470

  • Data Structures in Python – Complete Notes

    🧠 What are Data Structures?

    Data structures are ways to store and organize data so we can access and modify it efficiently.

    🧱 Types of Built-in Data Structures in Python

    Python has 4 main built-in data structures:

    TypeOrderedMutableAllows DuplicatesSyntax
    Listβœ… Yesβœ… Yesβœ… Yes[]
    Tupleβœ… Yes❌ Noβœ… Yes()
    Set❌ Noβœ… Yes❌ No (unique){}
    Dictionaryβœ… Yesβœ… Yes❌ No (unique keys){key: value}

    1️⃣ Lists – Ordered and Mutable

    Used to store multiple items in a single variable.

    πŸ”Ή Syntax:

    my_list = [10, 20, 30, "Python", True]
    

    πŸ”Ή Operations

    my_list[1]          # Access
    my_list.append(40)  # Add at end
    my_list.remove(20)  # Remove item
    my_list[0] = 100    # Update item
    

    2️⃣ Tuples – Ordered and Immutable

    Like lists, but cannot be changed (read-only).

    πŸ”Ή Syntax:

    my_tuple = (10, 20, 30, "Python")
    

    πŸ”Ή Operations

    my_tuple[1]        # Access
    len(my_tuple)      # Length
    # Cannot add or remove elements
    

    πŸ“Œ Use when data should not be changed, like dates or constants.


    3️⃣ Sets – Unordered, No Duplicates

    Used to store unique values.

    πŸ”Ή Syntax:

    my_set = {1, 2, 3, 4, 4, 2}
    print(my_set)  # Output: {1, 2, 3, 4}
    

    πŸ”Ή Operations

    my_set.add(5)        # Add item
    my_set.remove(3)     # Remove item
    

    βœ… Good for membership tests and removing duplicates.


    4️⃣ Dictionaries – Key-Value Pairs


    Used to store data in pairs (like a real-life dictionary).

    πŸ”Ή Syntax:

    my_dict = {"name": "John", "age": 25, "is_student": True}
    

    πŸ”Ή Operations

    my_dict["name"]             # Access value
    my_dict["age"] = 26         # Update value
    my_dict["city"] = "Chennai" # Add new pair
    del my_dict["is_student"]   # Delete key
    

    πŸ” Looping Through Data Structures

    πŸ”Ή List/Tuple:

    for item in my_list:
        print(item)
    

    πŸ”Ή Set:

    for item in my_set:
        print(item)
    

    πŸ”Ή Dictionary:

    for key, value in my_dict.items():
        print(key, value)
    
    
    profile={"name":"kumar","age":20}
    for key,value in profile.items():
        print(key,":",value)
    
    

    Output:

    name : kumar
    age : 20

    πŸ§ͺ Example Practice:


    students = ["Arun", "Beena", "Charles"]
    print(students)
    marks = (85, 90, 78)
    print(marks)
    unique_subjects = {"Math", "Science", "Math"}  
    print(unique_subjects)
    profile = {"name": "Kumar", "age": 20}
    print(profile)
    

    πŸ“Œ Summary for Beginners:

    Data TypeUse for…
    ListStore changing sequences
    TupleStore fixed sequences
    SetStore unique items
    DictionaryStore labeled data (key-value)

    real-life use cases with examples

    βœ… 1. List – When Order & Change Matters

    πŸ“Œ Real-Life Use Case:

    • Shopping List – You add items, remove items, or change quantities.

    πŸ§ͺ Python Example:

    shopping_list = ["milk", "eggs", "bread"]
    shopping_list.append("butter")      # Add item
    shopping_list.remove("milk")        # Remove item
    shopping_list[0] = "cheese" 
    # Replace "eggs" with "cheese"
    print(shopping_list)  
    # Output: ['cheese', 'bread', 'butter']
    

    βœ… Use When:

    • You need ordered items.
    • Items can change (mutable).
    • Duplicates are okay.

    βœ… 2. Tuple – When Data Shouldn’t Change

    πŸ“Œ Real-Life Use Case:

    • Date of Birth, GPS coordinates, or Configuration values – These don’t change.
    date_of_birth = (1995, 12, 15)  # year, month, day
    coordinates = (13.0827, 80.2707)  # Chennai GPS
    
    print("Born in:", date_of_birth[0])
    

    βœ… Use When:

    • You want a fixed collection of values.
    • Memory efficiency is important.
    • Used as dictionary keys (immutable).

    βœ… 3. Set – When You Need Only Unique Items

    πŸ“Œ Real-Life Use Case:

    • Attendees List – To ensure no one is counted twice.
    • Available tags or unique student IDs.
    attendees = {"Alice", "Bob", "Alice", "David"}
    print(attendees)  # Output: {'Alice', 'Bob', 'David'}
    
    attendees.add("Eve")     # Add new person
    attendees.remove("Bob")  # Remove person
    
    print(attendees)
    

    βœ… Use When:

    • Order doesn’t matter.
    • No duplicates allowed.
    • You want fast membership test (in operator).

    βœ… 4. Dictionary – Store Data with Labels

    πŸ“Œ Real-Life Use Case:

    • Student Profile, Bank Account Details, Product Catalog
    student = {
        "name": "Karthik",
        "age": 21,
        "marks": 88,
        "college": "ABC University"
    }
    
    # Accessing values
    print(student["name"])   # Karthik
    student["marks"] = 92    # Update marks
    student["city"] = "Chennai"  # Add new key
    print(student)
    

    βœ… Use When:

    • You need to label values (name, age, etc.).
    • Quick lookup based on key.
    • You want structured data.

    πŸ’‘ Quick Analogy for Remembering:

    Real LifePython Data Structure
    Shopping listList
    Birth certificateTuple
    Guest register bookSet
    Student ID cardDictionary

    πŸ”„ Mixed Example (All in One):

    students = [
        {"name": "Arun", "age": 17, "subjects": {"Math", "Science"}},
        {"name": "Beena", "age": 18, "subjects": {"Math", "English"}},
    ]
    
    for student in students:
        print(f"{student['name']} is {student['age']} years old and studies {student['subjects']}")
    

    This uses:

    • List of students
    • Dictionaries to store each student’s details
    • Sets to store unique subjects

  • Control Flow Statements in Python

    🚦 What is Control Flow?

    In real life, we make decisions all the time.
    For example:

    • If it’s raining, take an umbrella.
    • If you finish your homework, then play.

    Python does the same using control flow statements. These help the program decide what to do next.

    βœ… 1. if Statement

    🧠 Use: To do something only if a condition is true.

    πŸ“˜ Syntax:

    if condition:
        # do something
    

    πŸ§ͺ Example:

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

    βœ… 2. if...else Statement

    🧠 Use: To choose between two options.

    πŸ“˜ Syntax:

    if condition:
        # do this if true
    else:
        # do this if false
    

    πŸ§ͺ Example:

    age = 16
    if age >= 18:
        print("You can vote")
    else:
        print("You are too young to vote")
    

    βœ… 3. if…elif…else

    🧠 Use: To check more than two conditions.

    πŸ“˜ Syntax:

    if condition1:
        # do this
    elif condition2:
        # do this
    else:
        # do this if nothing above is true
    

    πŸ§ͺ Example:

    score = 85
    if score >= 90:
        print("Grade A")
    elif score >= 80:
        print("Grade B")
    else:
        print("Try harder")
    

    πŸ” 4. while Loop

    🧠 Use: To repeat as long as the condition is true.

    πŸ“˜ Syntax:

    while condition:
        # do this again and again
    

    πŸ§ͺ Example:

    count = 1
    while count <= 3:
        print("Count is", count)
        count += 1
    

    πŸ” 5. for Loop

    🧠 Use: To loop through a list, string, or range.

    πŸ“˜ Syntax:

    for item in list:
        # do this for each item
    

    πŸ§ͺ Example:

    for i in range(1, 4):
        print("Number:", i)
    

    β›” 6. break Statement

    🧠 Use: To stop a loop early.

    πŸ“˜ Syntax:

    for i in range(5):
        if i == 3:
            break
        print(i)
    

    πŸ§ͺ Output

    0
    1
    2
    

    πŸ”„ 7. continue Statement

    🧠 Use: To skip one step and move to the next.

    πŸ“˜ Syntax:

    for i in range(5):
        if i == 3:
            continue
        print(i)
    

    πŸ§ͺ Output

    0
    1
    2
    4