Skip to content

Aashish-po/Learning_Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🐍 My Python Learning Journey

From C++ and JavaScript to Python: A Computer Science student's path to mastering Python for AI, data science, and beyond.

Python Code style: Ruff License: MIT

πŸ‘¨β€πŸ’» About Me

Aashish Poudel | Computer Science Student | Nepal πŸ‡³πŸ‡΅

I'm a passionate programmer transitioning from C++ and full-stack JavaScript development to Python, with a focus on AI and data science. This repository chronicles my complete learning journey, from fundamental syntax to building production-ready applications.

Connect with me:

My Background:

  • Strong Foundation: C++ for algorithms and competitive programming
  • Full-Stack Web: JavaScript/TypeScript, React, React Native, Node.js, Express, tRPC
  • Tools: pnpm, VS Code, Git/GitHub, modern development workflows
  • Current Projects: AI Study Assistant (React Native), TicketStream SaaS (helpdesk tool)

🎯 Why This Repository Exists

The Problem: Most Python tutorials jump straight to syntax without context. If you already know programming, you don't need another "Hello World" guide.

The Solution: This repository documents my real learning journey as an experienced programmer learning Python. It shows:

  • What translates from other languages (spoiler: a lot!)
  • What's different (whitespace matters, self everywhere, duck typing)
  • What's better (list comprehensions, context managers, with statements)
  • What's powerful (classes, decorators, generators, async/await)

Who This Helps:

  • Programmers from C++, Java, JavaScript learning Python
  • Self-taught developers wanting structure
  • Students seeking real-world project examples
  • Anyone building AI/ML applications

πŸš€ Quick Start

# Clone this repository
git clone https://github.com/Aashish-po/Learning_Python.git
cd Learning_Python

# Install dependencies (using modern uv package manager)
uv sync

# Run any example
uv run python 01-fundamentals/variables.py

# Run the sales analyzer project
cd 07-data-analysis/sales_analyzer
uv run python -m sales_analyzer.main

# Run tests
uv run pytest

πŸ“– Table of Contents


πŸ—ΊοΈ Learning Path

My journey progressed through these stages:

Phase 1: Fundamentals (Week 1-2)

Status: βœ… Complete

Understanding Python's core syntax and philosophy.

Topics Covered:

  • Variables and data types (dynamic typing vs C++'s static typing)
  • Control flow (if/else, loops - similar to other languages)
  • Functions (first-class citizens, unlike C++)
  • Python's philosophy: "There should be one obvious way to do it"

Key Realization: Python's simplicity is deceptive. Less syntax β‰  less power.

πŸ“ Code: 01-fundamentals/


Phase 2: Data Structures (Week 2-3)

Status: βœ… Complete

Mastering Python's built-in data structures and their unique features.

Topics Covered:

  • Lists: Dynamic arrays with powerful methods (.append(), .extend(), slicing)
  • Dictionaries: Hash maps with clean syntax ({} vs JavaScript's new Map())
  • Sets: Unique collections with mathematical operations
  • Tuples: Immutable sequences for data integrity
  • List Comprehensions: Python's secret weapon for concise transformations

Key Insight: List comprehensions replace 80% of my JavaScript .map() and .filter() calls with more readable code.

Example:

# JavaScript approach
const squares = numbers.map(x => x ** 2).filter(x => x % 2 === 0);

# Python comprehension (cleaner!)
squares = [x**2 for x in numbers if x % 2 == 0]

πŸ“ Code: 02-data-structures/


Phase 3: Object-Oriented Programming (Week 3-4)

Status: βœ… Complete

Building reusable, maintainable code with classes.

Topics Covered:

  • Class Basics: __init__, self, instance vs class attributes
  • Methods: Instance methods, class methods, static methods
  • Inheritance: Building on existing classes (like C++ but simpler)
  • When to Use Classes: Classes vs functions - the eternal debate

Key Project: Refactored my sales analysis from functions to a SalesAnalyzer class, reducing code duplication by 40%.

Major Insight: Coming from functional JavaScript, I learned when classes actually improve code organization vs when they're overkill.

Decision Framework I Developed:

Use classes when:
βœ… You need to maintain state between operations
βœ… Passing same data to multiple functions
βœ… Creating multiple instances with similar behavior
βœ… Modeling real-world objects

Use functions when:
βœ… Simple input β†’ output transformations
βœ… Stateless operations
βœ… One-off calculations

πŸ“ Code: 03-oop/


Phase 4: Error Handling & Debugging (Week 4-5)

Status: βœ… Complete

Writing robust code that fails gracefully.

Topics Covered:

  • Try/Except Blocks: Python's error handling (cleaner than C++'s try/catch)
  • Specific Exceptions: ValueError, FileNotFoundError, KeyError, etc.
  • Custom Exceptions: Creating meaningful error types
  • Else & Finally: Code that runs conditionally or always
  • Defensive Programming: Validate early, fail fast, log everything

Real-World Application: Added comprehensive error handling to sales analyzer:

  • File not found? Clear error message + path hint
  • Invalid CSV? Show exact row with issue
  • Network errors? Retry with exponential backoff

Before:

data = pd.read_csv(filepath)  # Crashes with cryptic error

After:

try:
    data = pd.read_csv(filepath)
except FileNotFoundError:
    logger.error(f"File not found: {filepath}")
    logger.info(f"Expected location: {filepath.absolute()}")
    return None
except pd.errors.EmptyDataError:
    logger.error(f"File is empty: {filepath}")
    return None
except pd.errors.ParserError as e:
    logger.error(f"Invalid CSV format: {e}")
    return None

πŸ“ Code: 06-error-handling/


Phase 5: File Handling & Data Formats (Week 5)

Status: βœ… Complete

Working with external data sources.

Topics Covered:

  • Text Files: Reading/writing with context managers (with statement)
  • CSV Processing: Using csv module and pandas
  • JSON: Python's native support vs JavaScript
  • Path Handling: pathlib.Path (much better than string concatenation!)

Key Learning: Context managers (with statements) are Python's way of ensuring cleanup, like RAII in C++ but more explicit.

Pattern I Use Everywhere:

from pathlib import Path

# Bad: Manual file handling
f = open('data.txt', 'r')
data = f.read()
f.close()  # Might not run if error occurs!

# Good: Context manager (auto-closes)
with open('data.txt', 'r') as f:
    data = f.read()
# File guaranteed to close here

πŸ“ Code: 05-file-handling/


Phase 6: Modern Python Development (Week 6)

Status: βœ… Complete

Professional development tools and workflows.

Topics Covered:

  • uv Package Manager: 10-100x faster than pip (like pnpm for Python)
  • Ruff Linter/Formatter: One tool for linting + formatting (replaces ESLint + Prettier)
  • Environment Variables: python-dotenv for secrets management
  • Type Hints: Optional static typing (like TypeScript)
  • Project Structure: pyproject.toml (like package.json)

Biggest Impact: Switching from pip to uv reduced my dependency install time from 2 minutes to 5 seconds!

My Modern Python Stack:

# pyproject.toml - One file for everything
[project]
name = "my-project"
version = "0.1.0"
dependencies = [
    "pandas>=2.2.0",
    "requests>=2.31.0",
]

[tool.uv]
dev-dependencies = [
    "ruff>=0.1.0",
    "pytest>=7.4.0",
]

Comparison to My JavaScript Workflow:

Task JavaScript (pnpm) Python (uv)
Add package pnpm add express uv add flask
Install deps pnpm install uv sync
Run script pnpm run dev uv run python main.py
Lint + format eslint + prettier ruff (one tool!)

πŸ“ Code: Configuration files in root directory


Phase 7: Data Analysis & Visualization (Week 6-7)

Status: βœ… Complete

Turning data into insights with pandas and matplotlib.

Topics Covered:

  • Pandas Basics: DataFrames, Series, reading CSV files
  • Data Cleaning: Handling missing values, duplicates, invalid data
  • Data Analysis: Grouping, aggregation, statistical functions
  • Visualization: Creating charts with matplotlib
  • Real Project: Complete sales analysis pipeline

Project Highlight: Built a production-ready sales analysis tool that:

  • Loads and validates CSV data
  • Cleans data (removes duplicates, invalid entries)
  • Calculates metrics (revenue, top products, trends)
  • Generates visualizations (bar charts, line graphs)
  • Exports reports (CSV, TXT, PNG)
  • Handles errors gracefully
  • Uses OOP for maintainability

Impact: This project taught me more than 10 tutorials combined. Real problems force real learning.

πŸ“ Code: 07-data-analysis/sales_analyzer/


Phase 8: APIs & Integration (Week 7-8)

Status: βœ… Complete

Connecting Python to the outside world.

Topics Covered:

  • HTTP Requests: requests library for REST APIs
  • JSON Handling: Parsing API responses and configuration objects
  • Authentication: API keys, tokens, OAuth
  • Error Handling: Network errors, rate limiting, retries
  • Environment Variables: Keeping secrets safe

Current Focus: Building API clients for OpenAI and Anthropic Claude.

πŸ“ Code: 08-apis/


Phase 9: Testing & Quality Assurance (Week 8)

Status: πŸ”„ In Progress

Ensuring code reliability and maintainability.

Topics Covered:

  • Pytest Basics: Writing simple assertions and smoke tests
  • Project Structure: Organizing tests in a dedicated tests/ directory
  • Automation: Integrating linting (Ruff) and testing into the workflow

Key Achievement: Implemented initial smoke tests to verify arithmetic and string transformations within the environment.

πŸ“ Code: tests/


πŸŽ“ Skills Mastered

Core Python (Fundamentals)

βœ… Variables & Data Types

What I Learned:

  • Dynamic typing (no need to declare types like C++)
  • Type conversion and type checking
  • Mutable vs immutable types

Significance: Understanding mutability prevents subtle bugs, especially with lists as default arguments.

Example:

# Dangerous: Mutable default argument
def add_item(item, items=[]):  # WRONG! Same list reused!
    items.append(item)
    return items

# Correct: None as default
def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items

βœ… Functions

What I Learned:

  • Function definition and parameters
  • Default arguments and keyword arguments
  • *args and **kwargs for variable arguments
  • Lambda functions for simple operations
  • First-class functions (can pass functions as arguments)

Significance: Functions are the building blocks of reusable code.

Pattern I Use:

def process_data(
    data: list,
    filter_func=None,
    transform_func=None,
    limit: int = None
) -> list:
    """Process data with optional filtering and transformation."""
    result = data
    
    if filter_func:
        result = [item for item in result if filter_func(item)]
    
    if transform_func:
        result = [transform_func(item) for item in result]
    
    if limit:
        result = result[:limit]
    
    return result

βœ… Control Flow

What I Learned:

  • if/elif/else statements
  • for and while loops
  • break, continue, pass
  • Loop patterns: enumerate(), zip(), range()

Key Insight: Python's for item in collection is more readable than C++'s iterator syntax.


Data Structures

βœ… Lists

Mastered Techniques:

  • List creation and manipulation
  • Slicing: list[start:end:step]
  • List methods: .append(), .extend(), .insert(), .remove(), .pop()
  • List comprehensions (game-changer!)
  • Nested lists and 2D arrays

Favorite Pattern:

# Filter and transform in one line
results = [transform(item) for item in data if condition(item)]

# Nested comprehension for 2D data
matrix = [[row[i] for i in range(len(row))] for row in data]

βœ… Dictionaries

Mastered Techniques:

  • Dictionary creation and access
  • .get() with defaults (prevents KeyError)
  • .items(), .keys(), .values() for iteration
  • Dictionary comprehensions
  • Nested dictionaries for complex data

Pattern I Use Everywhere:

# Safe access with default
value = my_dict.get('key', 'default_value')

# Dictionary comprehension
config = {k: v for k, v in raw_config.items() if v is not None}

Object-Oriented Programming

βœ… Classes & Objects

Mastered Concepts:

  • Class definition with class keyword
  • __init__() constructor
  • Instance attributes vs class attributes
  • self parameter (Python's this)
  • Method definition

Real Application: My SalesAnalyzer class organizes analysis logic:

class SalesAnalyzer:
    """Analyze sales data with multiple methods."""
    
    def __init__(self, filepath):
        self.filepath = filepath
        self.data = None
        self.stats = {}
    
    def load(self):
        """Load data from CSV."""
        self.data = pd.read_csv(self.filepath)
        return self  # Enable method chaining
    
    def analyze(self):
        """Calculate all metrics."""
        self.stats = {
            'revenue': self.data['total'].sum(),
            'transactions': len(self.data)
        }
        return self

βœ… Methods & Attributes

Mastered Concepts:

  • Instance methods (operate on object data)
  • Class methods (@classmethod decorator)
  • Static methods (@staticmethod decorator)
  • Property decorators (@property)
  • Private attributes (by convention: _attribute)

βœ… When to Use Classes

Decision Framework I Developed:

Use classes when:

  • βœ… Maintaining state between operations
  • βœ… Passing same data to multiple functions
  • βœ… Creating multiple instances
  • βœ… Modeling real-world objects

Use functions when:

  • βœ… Simple transformations
  • βœ… Stateless operations
  • βœ… One-off calculations

Example:

# Bad: Class with one method
class Calculator:
    def add(self, a, b):
        return a + b

# Good: Just use a function
def add(a, b):
    return a + b

# Good: Class with state
class ShoppingCart:
    def __init__(self):
        self.items = []
        self.total = 0
    
    def add_item(self, item, price):
        self.items.append(item)
        self.total += price

Error Handling

βœ… Try/Except Blocks

Mastered Patterns:

  • Catching specific exceptions
  • Multiple exception handling
  • else clause (runs if no exception)
  • finally clause (always runs)
  • Creating custom exceptions

Production Pattern:

def load_config(filepath):
    """Load configuration with comprehensive error handling."""
    try:
        with open(filepath, 'r') as f:
            config = json.load(f)
    except FileNotFoundError:
        logger.error(f"Config not found: {filepath}")
        return get_default_config()
    except json.JSONDecodeError as e:
        logger.error(f"Invalid JSON: {e}")
        return get_default_config()
    except PermissionError:
        logger.error(f"No permission to read: {filepath}")
        return None
    else:
        logger.info("Config loaded successfully")
        return config
    finally:
        logger.debug("Config loading completed")

Modern Development Tools

βœ… uv Package Manager

Why I Use It:

  • 10-100x faster than pip
  • Single tool for packages, virtual environments, Python versions
  • Lock files for reproducibility
  • Drop-in replacement for pip

My Workflow:

uv init my-project        # Create new project
uv add pandas requests    # Add dependencies
uv sync                   # Install everything
uv run python main.py     # Run code

βœ… Ruff (Linting & Formatting)

Why I Use It:

  • Replaces ESLint + Prettier + isort
  • 10-100x faster than traditional tools
  • Automatic fixes for most issues
  • VS Code integration

Configuration:

[tool.ruff]
line-length = 100
target-version = "py312"

[tool.ruff.lint]
select = ["E", "F", "I", "N", "W"]

βœ… Environment Variables

Best Practices I Follow:

  • Never commit .env files
  • Always commit .env.example
  • Validate required variables on startup
  • Use python-dotenv for loading

Pattern:

from dotenv import load_dotenv
import os

load_dotenv()

API_KEY = os.getenv('OPENAI_API_KEY')
if not API_KEY:
    raise ValueError("OPENAI_API_KEY not set")

Data Analysis

βœ… Pandas

Core Skills:

  • Reading CSV files
  • DataFrame manipulation
  • Data cleaning (dropna, drop_duplicates)
  • Grouping and aggregation
  • Filtering and selecting

Example:

# Load and clean data
df = pd.read_csv('sales.csv')
df = df.dropna()
df = df[df['quantity'] > 0]

# Analyze
revenue = df['total'].sum()
top_products = df.groupby('product')['total'].sum().nlargest(5)

βœ… Matplotlib

Visualization Skills:

  • Bar charts for comparisons
  • Line charts for trends
  • Customizing plots (titles, labels, colors)
  • Saving plots to files

πŸ† Projects Showcase

1. Sales Analysis System

Status: βœ… Complete | Complexity: ⭐⭐⭐⭐

What It Does: A production-ready data analysis tool that processes sales data, generates insights, and creates visualizations.

Technical Highlights:

  • Object-Oriented Design: SalesAnalyzer class with method chaining
  • Error Handling: Comprehensive try/except blocks with logging
  • Data Pipeline: Load β†’ Clean β†’ Analyze β†’ Visualize β†’ Export
  • Configuration Management: Separate config.py with environment variables
  • Professional Output: CSV exports, text reports, PNG charts

Code Structure:

sales_analyzer/
β”œβ”€β”€ __init__.py
β”œβ”€β”€ main.py           # Entry point
β”œβ”€β”€ analyzer.py       # Core SalesAnalyzer class
β”œβ”€β”€ config.py         # Configuration and constants
β”œβ”€β”€ helpers.py        # Utility functions
β”œβ”€β”€ visualizer.py     # Chart creation
β”œβ”€β”€ data/
β”‚   └── sales.csv
└── output/
    β”œβ”€β”€ report.txt
    β”œβ”€β”€ top_products.csv
    └── revenue_chart.png

What I Learned:

  • Organizing large projects with multiple modules
  • Separating concerns (data loading, analysis, visualization)
  • Writing maintainable, reusable code
  • Professional error messages and logging
  • Testing with real data

Try It:

cd 07-data-analysis/sales_analyzer
uv run python -m sales_analyzer.main

Significance: This project bridges theory and practice. It's one thing to learn pandas syntax; it's another to build a complete analysis pipeline that handles real-world messiness.


2. API Integration Examples

Status: πŸ”„ In Progress | Complexity: ⭐⭐⭐

What It Includes:

  • REST API client with error handling
  • OpenAI integration for AI responses
  • Rate limiting and retry logic
  • Authentication patterns

What I'm Learning:

  • Async programming with asyncio
  • API best practices
  • Error handling for network requests
  • Managing API keys securely

3. Learning Exercises Collection

Status: πŸ”„ Ongoing | Complexity: ⭐⭐

What It Includes:

  • LeetCode solutions in Python
  • Algorithm implementations
  • Data structure practice
  • Comparative analysis (C++ vs Python approaches)

Significance: Translating my C++ competitive programming knowledge to Python, learning Pythonic ways to solve problems.


πŸ’‘ Key Insights from My Journey

1. Python β‰  Simplified C++

Initial Assumption: Python is just C++ with simpler syntax.

Reality: Python has fundamentally different philosophies:

  • Duck typing vs static typing: "If it walks like a duck..."
  • Everything is an object (even functions!)
  • Significant whitespace enforces readability
  • Batteries included (rich standard library)

2. Pythonic β‰  Verbose

Coming from JavaScript, I initially wrote code like this:

# Not Pythonic
result = []
for i in range(len(items)):
    if items[i] > 0:
        result.append(items[i] * 2)

# Pythonic
result = [item * 2 for item in items if item > 0]

Lesson: Python rewards learning idiomatic patterns. Comprehensions aren't just shorterβ€”they're faster and more readable.

3. Classes: Powerful but Not Always Needed

From JavaScript: Used classes everywhere (React components made me love them)

Python Taught Me: Functions can often do the job better.

The Test: If your class has one method, it should probably be a function.

4. Error Handling is Not Optional

Bad Habit from Scripting: Assuming happy path

Production Reality: Files are missing, APIs are down, users enter garbage data.

New Standard: Every function that touches external resources has error handling.

5. Modern Tools Matter

Before: Using pip, manual virtual environments, no linting

After: Using uv, Ruff, automatic formatting

Impact:

  • Setup time: 10 minutes β†’ 30 seconds
  • Formatting: Manual β†’ Automatic
  • Linting: Ignored β†’ On-save

6. The Best Teacher is Building

Tutorials: Taught me syntax

Projects: Taught me programming

Difference: Tutorials say "Here's how to read a CSV." Projects say "Your CSV is malformed on line 347, figure it out."


πŸ› οΈ Tech Stack

Core Python

  • Python 3.12 - Latest stable version
  • Type Hints - Optional static typing for clarity

Package Management

  • uv - Modern, fast package manager (10-100x faster than pip)
  • pyproject.toml - Single configuration file

Code Quality

  • Ruff - Linting and formatting (replaces Black, isort, Flake8)
  • mypy - Static type checking
  • pytest - Testing framework

Data & Analysis

  • pandas - Data manipulation and analysis
  • numpy - Numerical computing
  • matplotlib - Data visualization
  • seaborn - Statistical visualization

APIs & Integration

  • requests - HTTP library
  • python-dotenv - Environment variable management
  • openai - OpenAI API client
  • anthropic - Claude API client

Development Tools

  • VS Code - Editor with Python extension
  • Git/GitHub - Version control
  • GitHub CLI - Repository management

πŸ“š Resources That Helped

Official Documentation

Learning Platforms

Books

  • Fluent Python by Luciano Ramalho - Deep dive into Pythonic code
  • Python Cookbook by David Beazley - Practical recipes

Tools & Libraries

Communities


🎯 What's Next

Immediate Goals (Next 2 Weeks)

1. Testing with pytest

Why: Untested code is broken code waiting to happen.

Plan:

  • Learn pytest basics (fixtures, parametrize)
  • Add tests to sales analyzer
  • Practice TDD (test-driven development)
  • Target: 80% code coverage

2. Async Programming

Why: Modern APIs and web scraping need async.

Plan:

  • Master async/await syntax
  • Use asyncio for concurrent requests
  • Build async API client
  • Compare performance: sync vs async

3. Advanced OOP

Why: Decorators and metaclasses unlock Python's power.

Plan:

  • Function decorators (@property, @staticmethod)
  • Class decorators
  • Context managers (with statement internals)
  • Metaclasses (when appropriate)

Medium-Term Goals (1-2 Months)

4. Web Development with FastAPI

Why: FastAPI is modern, fast, and uses Python's type hints beautifully.

Projects:

  • Build REST API for sales data
  • Add authentication (JWT)
  • Deploy to production (Railway/Vercel)

5. Machine Learning Basics

Why: AI is why I'm learning Python.

Plan:

  • scikit-learn fundamentals
  • Model training and evaluation
  • Real dataset projects
  • ML pipeline development

6. LangChain & RAG

Why: Building intelligent AI applications.

Projects:

  • Document Q&A system
  • Custom knowledge base
  • RAG implementation
  • Integrate with my AI Study Assistant

Long-Term Vision (3-6 Months)

7. Deep Learning with PyTorch

  • Neural network basics
  • Computer vision
  • NLP with transformers
  • Fine-tuning LLMs

8. Production Python

  • Docker containerization
  • CI/CD pipelines
  • Monitoring and logging
  • Database integration (PostgreSQL, Redis)

9. Open Source Contribution

  • Contribute to Python libraries
  • Build my own packages
  • Share knowledge through blog posts

πŸš€ How to Use This Repository

For Beginners

Start Here:

  1. 01-fundamentals/ - Basic syntax and concepts
  2. 02-data-structures/ - Lists, dicts, sets
  3. 03-oop/ - Classes and objects
  4. Work through exercises in each directory

Learn By Doing:

  • Read the code
  • Run the examples
  • Modify and experiment
  • Break things and fix them

For Experienced Programmers

Skip the Basics:

  • Jump to 03-oop/ for Python-specific OOP
  • Check 06-error-handling/ for Pythonic patterns
  • Review modern tools in root config files

Compare Approaches:

  • See how I translated C++/JavaScript patterns
  • Learn what's different in Python
  • Understand why Python does it that way

For Project Ideas

Clone and Adapt:

  • Sales analyzer as template for data projects
  • API examples for integration work
  • Error handling patterns for production code

Modify for Your Domain:

  • Change data source (your CSV, API, database)
  • Add features (new metrics, visualizations)
  • Integrate with your projects

πŸ“Š Progress Tracking

Category Topic Status Confidence Notes
Fundamentals Variables & Types βœ… Complete ⭐⭐⭐⭐⭐ Solid foundation
Functions βœ… Complete ⭐⭐⭐⭐⭐ First-class functions mastered
Control Flow βœ… Complete ⭐⭐⭐⭐⭐ All patterns understood
Data Structures Lists βœ… Complete ⭐⭐⭐⭐⭐ Comprehensions are powerful!
Dictionaries βœ… Complete ⭐⭐⭐⭐⭐ Use everywhere
Sets & Tuples βœ… Complete ⭐⭐⭐⭐ Understand use cases
OOP Classes & Objects βœ… Complete ⭐⭐⭐⭐⭐ Production-ready
Inheritance βœ… Complete ⭐⭐⭐⭐ Understand patterns
Decorators πŸ“ Planned ⭐⭐⭐ Basic understanding
Error Handling Try/Except βœ… Complete ⭐⭐⭐⭐⭐ Use in all production code
Custom Exceptions βœ… Complete ⭐⭐⭐⭐ Created several
File I/O Text Files βœ… Complete ⭐⭐⭐⭐⭐ Context managers mastered
CSV/JSON βœ… Complete ⭐⭐⭐⭐⭐ Use in projects
Modern Tools uv βœ… Complete ⭐⭐⭐⭐⭐ Replaced pip entirely
Ruff βœ… Complete ⭐⭐⭐⭐⭐ Auto-format on save
python-dotenv βœ… Complete ⭐⭐⭐⭐⭐ Secrets management
Data Analysis pandas βœ… Complete ⭐⭐⭐⭐ Core operations mastered
matplotlib βœ… Complete ⭐⭐⭐⭐ Create production charts
Advanced pandas πŸ”„ In Progress ⭐⭐⭐ GroupBy, merge, pivot
APIs requests βœ… Complete ⭐⭐⭐⭐ REST API integration
Async/await πŸ”„ In Progress ⭐⭐ Learning asyncio
Testing pytest πŸ“ Planned ⭐⭐ Basic tests written
Advanced Type Hints βœ… Complete ⭐⭐⭐⭐ Use in new code
Generators πŸ“ Planned ⭐⭐ Basic understanding
Context Managers πŸ“ Planned ⭐⭐⭐ Use built-ins, creating own

Legend:

  • βœ… Complete - Confident using in production
  • πŸ”„ In Progress - Learning actively
  • πŸ“ Planned - Next on roadmap
  • ⭐⭐⭐⭐⭐ Expert - Can teach others
  • ⭐⭐⭐⭐ Proficient - Use confidently
  • ⭐⭐⭐ Competent - Can use with reference
  • ⭐⭐ Learning - Basic understanding

πŸŽ“ Project Ideas for Others

Based on my journey, here are projects that teach effectively:

Beginner Projects

1. Personal Budget Tracker

Skills: File I/O, CSV, basic calculations, dictionaries

Features:

  • Add income/expenses
  • Categorize transactions
  • Calculate totals by category
  • Save/load from CSV

Why It Works: Real-world problem, uses multiple concepts, clear success criteria.


2. Todo List CLI

Skills: Lists, file persistence, user input, basic classes

Features:

  • Add/remove/complete tasks
  • List all tasks
  • Filter by status
  • Save to file

Why It Works: Perfect first OOP project, introduces command-line interfaces.


3. Weather Dashboard

Skills: APIs, JSON, error handling, data formatting

Features:

  • Fetch weather from API
  • Display current conditions
  • Show 5-day forecast
  • Handle API errors

Why It Works: Teaches API consumption, real external data, error handling.


Intermediate Projects

4. Data Analysis Tool (Like My Sales Analyzer)

Skills: pandas, matplotlib, classes, error handling, file I/O

Features:

  • Load CSV data
  • Clean and validate
  • Calculate metrics
  • Create visualizations
  • Export reports

Why It Works: Combines everything learned, produces tangible output, real-world applicable.


5. Web Scraper

Skills: requests, BeautifulSoup, error handling, data storage

Features:

  • Scrape product prices
  • Extract article content
  • Handle pagination
  • Save to CSV/JSON

Why It Works: Teaches HTML parsing, real-world data acquisition, handling messy input.


6. REST API with FastAPI

Skills: FastAPI, async, databases, authentication

Features:

  • CRUD operations
  • User authentication
  • Data validation
  • API documentation

Why It Works: Modern web development, async programming, production patterns.


Advanced Projects

7. RAG System

Skills: LangChain, vector databases, LLMs, embeddings

Features:

  • Document ingestion
  • Vector storage
  • Semantic search
  • LLM integration

Why It Works: Cutting-edge AI, combines multiple technologies, portfolio-worthy.


8. ML Model Deployment

Skills: scikit-learn, Flask/FastAPI, Docker, deployment

Features:

  • Train ML model
  • Create API endpoint
  • Dockerize application
  • Deploy to cloud

Why It Works: End-to-end ML, production deployment, cloud platforms.


9. Real-Time Dashboard

Skills: WebSockets, async, databases, frontend integration

Features:

  • Live data updates
  • Multiple data sources
  • Interactive visualizations
  • User management

Why It Works: Full-stack development, real-time systems, modern architecture.


🀝 Contributing & Feedback

This is a personal learning repository, but I welcome:

Suggestions

  • Better ways to implement something
  • Python idioms I missed
  • Resource recommendations
  • Project ideas

Issues

  • Errors in code
  • Broken examples
  • Unclear documentation

Discussions

  • Your learning journey
  • Comparing approaches (C++, Java, JS β†’ Python)
  • Best practices

How to Contribute:

  1. Open an issue for discussion
  2. Fork and create a pull request
  3. Reach out directly

πŸ“œ License

MIT License - Use this code for your learning!

Permissions:

  • βœ… Use in personal projects
  • βœ… Modify and adapt
  • βœ… Learn from examples
  • βœ… Share with others

Conditions:

  • Include license notice
  • Don't claim as your own
  • Use at your own risk

πŸ™ Acknowledgments

Learning Resources:

  • DataLumina Python Course - Structured learning path
  • Python community - Helpful and welcoming
  • Real Python - Excellent tutorials

Tools:

  • Astral (uv, Ruff) - Modern Python tooling
  • VS Code team - Best Python editor
  • GitHub - Code hosting and collaboration

Inspiration:

  • Every programmer who shares their journey
  • Open source contributors
  • My programming mentors

πŸ“ž Let's Connect

I'm always happy to connect with fellow learners and developers!

Find me on:

My Other Projects:

  • AI Study Assistant - React Native + Node.js application
  • TicketStream - SaaS helpdesk platform
  • Check out my GitHub for more!

Want to discuss:

  • Python learning strategies
  • C++/JavaScript β†’ Python transition
  • AI/ML development
  • Project collaboration
  • Just say hi!

πŸ“ Final Thoughts

To Future Learners:

Python isn't just another programming languageβ€”it's a philosophy. "Simple is better than complex" isn't just a mantra; it's reflected in every aspect of the language.

If you're coming from C++ or JavaScript like me, you'll find Python both familiar and different. Embrace the differences. The lack of semicolons isn't laziness; it's intentional simplicity. The significant whitespace isn't arbitrary; it enforces readability.

My Biggest Lessons:

  1. Build Projects: Tutorials teach syntax. Projects teach programming.
  2. Write Pythonic Code: Don't just translate C++/Java. Learn Python's way.
  3. Use Modern Tools: uv, Ruff, type hintsβ€”they make development better.
  4. Error Handling Matters: Production code handles failure gracefully.
  5. Community Helps: Don't struggle alone. Ask questions.

This Repository is Your Roadmap:

  • Start wherever makes sense for your background
  • Skip what you know, focus on what's different
  • Build projects early and often
  • Share your journey

The Journey Continues:

This isn't a finished productβ€”it's a living document of my learning. As I grow, this repository grows. Your journey will be different, and that's perfect.

Remember: Every expert was once a beginner. Every complex project started with "Hello, World."

Keep coding. Keep learning. Keep building.

Happy coding! 🐍


Last Updated: March 2026
Current Focus: Async programming, testing with pytest, FastAPI
Next Milestone: Building production-ready AI applications


πŸ—ΊοΈ Quick Navigation

Learning Materials:

Projects:

Resources:

Configuration:


Made with ❀️ by Aashish Paudel

Documenting my journey from C++ and JavaScript to Python mastery

GitHub followers Stars

About

πŸ“š Complete Python learning journey from fundamentals to data science. Structured tutorials, hands-on exercises, API integration, and real-world projects. Perfect for beginners and intermediate learners.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors