Complete Python Course

By Shri Chand Thapa · Published July 24, 2026

Comprehensive Python tutorial from basics to advanced topics, taught entirely with runnable code examples covering variables, strings, control flow, data structures, functions, and more.

  • python
  • tutorial
  • beginner-to-advanced
  • programming-fundamentals
78 cells1 experiment180 views0 forks

Inside this notebook

# 🐍 Complete Python Course — Basics se Advanced tak (Hinglish) Namaste Shri! Yeh notebook ek **complete Python course** hai jisme hum zero se shuru karke advanced topics tak jayenge. Har concept ko **Hinglish** mein samjhaya gaya hai aur saath mein **runnable code** hai jise aap khud chala kar output dekh sakte ho. ## 📚 Course ka Structure (15 Parts) | Part | Topic | Kya seekhoge | |------|-------|--------------| | 1 | **Basics** | Variables, data types, operators, I/O, f-strings | | 2 | **Strings** | String methods, slicing, formatting (deep) | | 3 | **Control Flow** | if/else, loops, break/continue/pass, match-case | | 4 | **Data Structures** | list, tuple, set, dict + `collections` module | | 5 | **Functions** | args/kwargs, scope (LEGB), lambda, closures | | 6 | **Functional Programming** | comprehensions, map/filter/reduce, itertools/functools | | 7 | **OOP** | classes, inheritance, polymorphism, dunder, dataclasses | | 8 | **Advanced OOP** | decorators, descriptors, metaclasses | | 9 | **Modules & Packages** | import, `__main__`, pip, venv | | 10 | **File Handling** | read/write, csv/json, pathlib | | 11 | **Exceptions** | try/except/finally, custom exceptions | | 12 | **Iterators & Generators** | iterator protocol, yield | | 13 | **Advanced** | context managers, type hints, regex, datetime | | 14 | **Concurrency** | threading, multiprocessing, asyncio, GIL | | 15 | **Memory & Best Practices** | garbage collection, references, tips | > 💡 **Tip:** Har code cell ko…

--- # 📘 Part 1: Python Basics ## Python kya hai aur kyun? Python ek **high-level, interpreted, dynamically-typed** language hai. Iska matlab: - **High-level:** Insaan ke padhne jaisi syntax — `print("Hello")` likhna kaafi hai. - **Interpreted:** Code line-by-line chalta hai, compile karne ki zaroorat nahi. - **Dynamically-typed:** Variable ka type aapko likhna nahi padta — Python khud samajh jaata hai. ## 1.1 Variables aur Data Types Variable ek **container** hai jo data store karta hai. Python mein variable banane ke liye bas naam likho aur `=` se value do. Koi type declare karne ki zaroorat nahi!

# --- 1.1 Variables aur Data Types ---

# Variable banana: naam = value
naam = "Shri"          # str  (string - text)
age = 25               # int  (integer - poora number)
height = 5.9           # float (decimal number)
is_student = True      # bool (True / False)
skills = ["Python", "ML"]  # list (collection)

# type() se pata karo ki variable ka type kya hai
print("naam      ->", naam, "     type:", type(naam).__name__)
print("age       ->", age, "      type:", type(age).__name__)
print("height    ->", height, "   type:", type(height).__name__)
print("is_student->", is_student, "   type:", type(is_student).__name__)
print("skills    ->", skills, "type:", type(skills).__name__)

print("\n--- Python ke 4 basic (primitive) types ---")
print("int   : poore numbers      -> 10, -5, 0")
…
naam      -> Shri      type: str
age       -> 25       type: int
height    -> 5.9    type: float
is_student-> True    type: bool
skills    -> ['Python', 'ML'] type: list

--- Python ke 4 basic (primitive) types ---
int   : poore numbers      -> 10, -5, 0
float : decimal numbers    -> 3.14, -0.5
str   : text (quotes mein) -> 'hello'
bool  : True ya False
# --- 1.2 Operators ---
# Operators values par operations karte hain.

# Arithmetic operators (ganit)
print("=== Arithmetic ===")
print("10 + 3 =", 10 + 3)   # addition
print("10 - 3 =", 10 - 3)   # subtraction
print("10 * 3 =", 10 * 3)   # multiplication
print("10 / 3 =", 10 / 3)   # division (hamesha float deta hai)
print("10 // 3 =", 10 // 3) # floor division (poora bhaag)
print("10 % 3 =", 10 % 3)   # modulus (remainder/bacha hua)
print("10 ** 3 =", 10 ** 3) # power (10 ki power 3)

# Comparison operators (tulna) -> hamesha bool dete hain
print("\n=== Comparison ===")
print("5 == 5 :", 5 == 5)   # equal
print("5 != 3 :", 5 != 3)   # not equal
print("5 > 3  :", 5 > 3)    # greater than
…
=== Arithmetic ===
10 + 3 = 13
10 - 3 = 7
10 * 3 = 30
10 / 3 = 3.3333333333333335
10 // 3 = 3
10 % 3 = 1
10 ** 3 = 1000

=== Comparison ===
5 == 5 : True
5 != 3 : True
5 > 3  : True
5 <= 3 : False

=== Logical ===
True and False : False
True or False  : True
not True       : False

x += 5 ke baad x = 15
# --- 1.3 Type Conversion (Casting) ---
# Ek type ko doosre type mein badalna.

num_str = "100"          # yeh string hai, number nahi
num_int = int(num_str)   # string -> int
print("int('100')  ->", num_int, type(num_int).__name__)

print("float('3.14') ->", float("3.14"), type(float("3.14")).__name__)
print("str(25)     ->", str(25), type(str(25)).__name__)
print("int(3.9)    ->", int(3.9), "(decimal kaat diya, round nahi kiya)")
print("round(3.9)  ->", round(3.9), "(round karta hai)")
print("bool(0)     ->", bool(0), "| bool(5) ->", bool(5), "(0=False, baaki=True)")
print("bool('')    ->", bool(""), "| bool('hi') ->", bool("hi"))

# list/tuple/set conversion
print("\nlist('abc') ->", list("abc"))
print("tuple([1,2]) ->", tuple([1, 2]))
print("set([1,1,2]) ->", set([1, 1, 2]), "(duplicates hat gaye)")
int('100')  -> 100 int
float('3.14') -> 3.14 float
str(25)     -> 25 str
int(3.9)    -> 3 (decimal kaat diya, round nahi kiya)
round(3.9)  -> 4 (round karta hai)
bool(0)     -> False | bool(5) -> True (0=False, baaki=True)
bool('')    -> False | bool('hi') -> True

list('abc') -> ['a', 'b', 'c']
tuple([1,2]) -> (1, 2)
set([1,1,2]) -> {1, 2} (duplicates hat gaye)
# --- 1.4 Input / Output aur f-strings ---

# print() se output
print("Hello, Python!")
print("Naam:", "Shri", "| Age:", 25)        # comma se auto space
print("A", "B", "C", sep="-")               # sep = separator
print("Line 1", end=" ")                     # end = line break nahi
print("Line 2")

# input() se user se data lete hain (notebook mein hum demo value use karenge)
# asli code mein: naam = input("Apna naam batao: ")
naam = "Shri"   # demo
age = 25

# f-string (formatted string) - sabse modern aur clean tarika
print(f"\nMera naam {naam} hai aur main {age} saal ka hoon.")
print(f"Agla saal main {age + 1} saal ka hounga.")
print(f"10/3 = {10/3:.2f}")   # .2f = 2 decimal places
…
Hello, Python!
Naam: Shri | Age: 25
A-B-C
Line 1 Line 2

Mera naam Shri hai aur main 25 saal ka hoon.
Agla saal main 26 saal ka hounga.
10/3 = 3.33
Naam: Shri Age: 25
Naam: Shri Age: 25

--- # 📗 Part 2: Strings in Depth String **text** hota hai jo quotes (`' '` ya `" "`) mein likha jaata hai. Strings Python mein bahut important hain kyunki real-world data (naam, messages, files) zyada tar text hi hota hai. **Key baatein:** - Strings **immutable** hoti hain — ek baar ban gayi to badal nahi sakti. Naye changes ke liye nayi string banti hai. - Har character ka ek **index** hota hai: `0` se shuru (aage se), aur `-1` se (peeche se). - **Slicing** `[start:stop:step]` se string ka hissa nikaal sakte ho.

# --- 2.1 Indexing aur Slicing ---

s = "PYTHON"
# Index:  P  Y  T  H  O  N
# Aage:   0  1  2  3  4  5
# Peeche:-6 -5 -4 -3 -2 -1

print("s[0]  =", s[0])     # pehla character
print("s[-1] =", s[-1])    # aakhri character
print("s[2]  =", s[2])

# Slicing: s[start:stop:step]  -> stop included NAHI hota
print("\n--- Slicing ---")
print("s[0:3] =", s[0:3])   # index 0,1,2 -> PYT
print("s[2:]  =", s[2:])    # index 2 se end tak -> THON
print("s[:3]  =", s[:3])    # start se index 2 tak -> PYT
print("s[:]   =", s[:])     # poori copy
print("s[::-1]=", s[::-1])  # reverse string!
…

This is a preview. Open the live notebook to see all 78 cells with their charts and full outputs, or fork it into your own Clusy workspace.

Complete Python Course | Clusy