This is a simple step-by-step Python learning hub for complete beginners. You start from zero and slowly become good at coding. We have 7 levels. Each level teaches one important topic with easy practice questions. Practice is the only way to learn coding well – do every question yourself. After the levels, try the 20 fun console projects to use everything you learned.
- Set 1: Variables & Input/Output
- Set 2: Strings
- Set 3: If/Elif/Else - Conditionals
- Set 4: Loops
- Set 5: Lists & Tuples
- Set 6: Sets & Dictionaries
- Set 7: Functions
- Projects
Purpose
Learn how to store data in variables, take input from user, and print results. This is the first step of every Python program.
-
Swap Two Numbers
Define two numbers in variable. Swap them without extra variable. Print both after swap.Example: Input `First = 10` and `Second = 20` → Output: `First = 20`, `Second = 10`
-
Swap Two Strings
Take two strings from user. Swap them without extra variable. Print both after swap.Example: Input `First = "Ali"` and `Second = "Alia"` → Output: `First = "Alia"`, `Second = "Ali"`
-
Add Two Numbers
Ask user for two numbers. Add them and print the sum.Example: Input `5` and `8` → Output: `Sum = 13`
-
Area of Rectangle
Ask user for length and width. Calculate area and print it.Example: Input `4` and `6` → Output: `Area = 24`
-
Say Hello to User
Ask user for name. PrintHello [Name]!Example: Input `Ali` → Output: `Hello Ali!`
-
Full Name Greeting
Ask for first name and last name. Join them and print greeting.Example: Input `Alia` and `Mirza` → Output: `Hello, Alia Mirza!`
-
Welcome with Age
Ask for name and age. Print welcome message using f-string.Example: Input `Ali` and `20` → Output: `Welcome, Ali! You are 20 years old.`
Purpose
Learn how to work with words and sentences. Almost every program needs text.
-
String Length Counter
Ask user for a sentence. Print how many characters it has.Example: Input `Hello Pakistan` → Output: `Length: 14`
-
Upper and Lower Case
Ask for a string. Print it in uppercase and lowercase.Example: Input `Python` → Output: `UPPER: PYTHON`, `lower: python`
-
Name Formatting
Ask first and last name. Print normal, uppercase, and title case.Example: Input `lilly`, `collins` → Output: `Normal: lilly collins`, `Title Case: Lilly Collins`
-
Formatted Bill
Ask item name, quantity, price. Print neat bill with total.Example: Input `Apple`, `5`, `50` → Output: `Item: Apple` `Quantity: 5` `Total: Rs.250`
Purpose
Learn how to make your program choose different actions using if/elif/else.
-
Even or Odd
Ask a number. Print Even or Odd.Example: Input `7` → Output: `Odd`
-
Compare Two Numbers
Ask two numbers. Print which is bigger or if equal.Example: Input `10` `5` → Output: `10 is greater`
-
Pass or Fail
Ask marks. Print Pass (≥40) or Fail.Example: Input `35` → Output: `Fail`
-
Count Vowels
Ask for a word. Count vowels (a,e,i,o,u – ignore case).Example: Input `education` → Output: `Number of vowels: 5`
-
Positive, Negative, Zero
Ask a number. Print what it is.Example: Input `-4` → Output: `Negative`
-
Grade System
Ask percentage. Print A (≥80), B (60-79), C (40-59), Fail.Example: Input `85` → Output: `A Grade`
-
Simple Calculator
Ask two numbers and operation (+ - * /). Print result. Show error for divide by zero.Example: Input `10`, `5`, `/` → Output: `Result: 2.0`
Purpose
Learn how to repeat work easily using while and for loops.
-
Print 1 to 10
Use for loop to print numbers 1 to 10. -
Multiplication Table
Ask a number. Print its table (1 to 10).Example: Input `5` → `5 x 1 = 5` ... `5 x 10 = 50`
-
Sum of Numbers
Ask a number n. Print sum from 1 to n.Example: Input `10` → Output: `Sum = 55`
-
Even Numbers 1-20
Print all even numbers from 1 to 20 using loop. -
Countdown
Print numbers from 10 down to 1 using while loop. -
Simple Star Pattern
Print this pattern using loops:* 1 * * 1 2 * * * 1 2 3 * * * * 1 2 3 4 * * * * * 1 2 3 4 5
Purpose
Learn how to store many items in lists (can change) and tuples (cannot change).
-
Create Fruit List
Ask user for 5 fruits. Store in list and print. -
Access List Items
Make list [10,20,30,40,50]. Print first, middle, last. -
Add and Insert Items
Start empty list. Append 3 items. Insert one at position 1. Print final list. -
List Slicing
Make list 1 to 10. Print first 5, last 3, and items 3 to 8. -
Introduction to Tuples
Make tuple of 5 days. Print it and try to change one item (will give error). -
Convert List to Tuple
Ask 4 subjects → store in list → convert to tuple → print both.
Purpose
Learn sets (unique items) and dictionaries (key-value pairs).
-
Create and Add to Set
Make empty set. Add 5 numbers. Print set (duplicates removed). -
Set Operations
Make two sets. Print union and intersection. -
Remove from Set
Make set with 6 items. Remove one and discard one (if not exist). Print after each. -
Student Marks Dictionary
Make dict with 3 student names and marks. Print all. -
Add and Update Dict
Start empty dict. Add 3 key-value pairs. Update one value. -
Word Frequency
Ask a sentence. Make dict to count how many times each word appears.
Why this level?
Learn how to make functions so you can use same code again easily.
-
Add Two Numbers Function
Make function add(a, b) that returns sum. Call it and print. -
Check Even/Odd Function
Make function is_even(num) that returns True or False. Use it. -
Maximum of Three
Make function max_of_three(a,b,c) that returns biggest number. -
Factorial Function
Make function factorial(n) using loop. Return n!. -
Greeting Function
Make function greet(name, age) that prints welcome message. -
Area Calculator Function
Make function area(shape, values) that calculates rectangle or triangle area.
Skills: variables, loops, conditionals, random, input validation, functions.
- V1 (starter): Computer picks 1–100, student guesses, give higher/lower hints, track attempts.
- V2 (required): Add input validation, allow multiple rounds, show best score (fewest attempts).
- Stretch (self-learn): Add difficulty levels (range changes), timer, and persistent high-score file.
Starter hint:import random→secret = random.randint(1,100);loop until guessed.
Quick tests: guess correctly in N attempts; invalid input doesn't crash.
Skills: functions, exception handling, parsing strings, loops.
- V1: Support
+ - * /for two numbers via input prompts. - V2: Support chaining operations, handle divide-by-zero and bad input.
- Stretch: implement expression parsing (e.g., "3 + 4 * 2") or REPL mode.
Starter hint: separateparse_input(),compute(a, op, b)functions. Use try/except.
Quick tests: 3/0 handled gracefully; "abc" prompts again.
Skills: lists, file I/O (text or JSON), CRUD operations, functions.
- V1: add/view/remove tasks stored in memory.
- V2: save/load tasks to a JSON/text file so tasks survive program restart.
- Stretch: search/filter tasks, mark priority, and sort by date added.
Starter hint: use json module: write tasks (list of dicts) to disk.
Quick tests: add task → saved file contains task; restart program → tasks loaded.
Skills: dictionaries, lists, file I/O, simple validation, search.
- V1: basic add/view/search by name (in-memory).
- V2: persist using CSV/JSON; update/delete contact.
- Stretch: export/import VCF, or search fuzzy matches.
Starter hint: store each contact as{ "name":..., "phone":..., "email":... }and use list comprehension for search.
Quick tests: add → find by name; remove → no longer found; file persists.
Skills: strings, concatenation, user input, functions, lists.
- V1: ask for a few words and print the story.
- V2: support multiple story templates chosen by user.
- Stretch: read templates from files, randomize templates, or add grammar checks.
Starter hint: use placeholders like {noun} and .format(**answers).
Quick tests: given inputs, output contains those words in expected places.
Skills: random, loops, counters, basic plotting (optional), statistics.
- V1: Simulate rolling N dice and show outcomes counts.
- V2: Run many trials, show empirical probabilities and compare to expected.
- Stretch: Display histogram (matplotlib optional) and let user choose dice types.
Starter hint: Collections.Counter is handy for counts.
Quick tests: 6-sided die → approx 1/6 frequency in many trials (students can see convergence).
Skills: lists/dicts, file I/O (CSV/JSON), aggregation, date handling (optional).
- V1: Add expense (amount + category) and show total per run.
- v2: Persist to CSV, show totals per category and monthly totals.
- Stretch: Import bank CSV, filter by date ranges.
Starter hint: Represent each record as {"amount":float, "cat":str, "date": "YYYY-MM-DD"}; use csv or json.
Quick tests: Add entries → category totals correct.
Skills: JSON, loops, input validation, scoring, functions.
- V1: Ask 5 questions from an in-memory list; compute score.
- V2: Load questions from JSON, randomize order, show correct answers at end.
- Stretch: Timed questions, multiple users, and persistent user scores.
Starter hint: JSON schema: {"q":"...", "options":["a","b"], "answer":0}.
Quick tests: Scoring matches expected answers; JSON loads properly.
Skills: loops, conditionals, modulo arithmetic, nested loops for patterns.
- V1: Classic FizzBuzz (print 1..N with rules).
- V2: Extend rules (e.g., multiple keyword mapping), and write unit tests.
- Stretch: Generate ASCII shapes (pyramids) and analyze complexity (O(n), O(n^2)).
Starter hint: Use modular checks in order (if i % 15 == 0 before %3/%5).
Quick tests: Known sequences for first 20 values.
Skills: file I/O, string processing, dicts, sorting.
- V1: Read a text file and output top-10 words.
- V2: Ignore stopwords/punctuation, case-insensitive, show counts.
- Stretch: Build concordance or show sentence locations for top words.
Starter hint: Normalize text (.lower()), remove punctuation (str.translate) and use Counter.
Quick tests: For short sample file, expected top words & counts.
Skills: functions, state management, optional classes, input validation.
- V1: Simulate deposit/withdrawal and show balance (functional style).
- V2: Add transaction history (list) and persist to JSON.
- Stretch: Convert to Account class, support multiple accounts and transfers.
Starter hint: Start with procedural approach before introducing class Account: as a stretch.
Quick tests: Deposits and withdrawals update balance; cannot withdraw over balance.
