🐍 Python 75-Day Plan
WEEK 1 — DEEP THEORY GUIDE (EXPANDED EDITION)
Baby Steps: Variables, print(), Data Types, Math & More
Prepared for: Meesam | Days 1–7 | Foundation Phase
Day 1 — What is Python & Setup
1.1 What is a Programming Language?
A programming language is a formal set of instructions that tells a computer what to do. Computers only
understand binary (0s and 1s), but programming languages let humans write in a more readable form which is
then translated into binary.
Languages exist at different levels of abstraction:
• Machine Language (binary) — direct CPU instructions; humans cannot read this
• Assembly Language — slightly readable, but still low-level and hardware-specific
• High-Level Languages (Python, Java, C++) — close to English; a translator converts them to machine
code
💡 ANALOGY
Think of it like Urdu. Humans use Urdu to communicate with each other.
Programmers write Python to communicate with computers.
Just as Urdu has grammar rules (syntax), Python has its own strict rules too.
1.2 What is Python Specifically?
Python was created in 1991 by Guido van Rossum. He wanted a language that was simple, readable, and fun.
The name comes from 'Monty Python's Flying Circus' — not the snake!
Two critical defining characteristics:
• High-level: Reads almost like English. You write 'if age > 18:' instead of cryptic machine codes.
• Interpreted: Python runs your code line by line immediately — there is no separate 'compile' step like in
C++. Errors appear instantly on the line they occur.
Python's Design Philosophy — The Zen of Python
Type 'import this' in Python to see 19 guiding principles. Key ones:
• Beautiful is better than ugly
• Simple is better than complex
• Readability counts
• Errors should never pass silently
• There should be one obvious way to do it
1.3 How Python Code Becomes Instructions
When you run a Python file, here is exactly what happens behind the scenes:
1. Source code (.py file) — your human-readable Python text
2. Lexing — Python breaks your code into tokens (keywords, names, operators)
3. Parsing — tokens are assembled into an Abstract Syntax Tree (AST)
4. Compilation to Bytecode — AST is compiled to .pyc bytecode (low-level instructions for Python's virtual
machine)
5. Python Virtual Machine (PVM) — executes bytecode line by line
📌 KEY INSIGHT
▸ This is why Python is called 'interpreted' — the PVM reads bytecode at runtime
▸ The .pyc files in __pycache__ folders are this compiled bytecode
▸ Python re-compiles .py → .pyc only if the source file has changed (smart caching)
1.4 Why Python for Data Analytics?
Library Purpose Real-world use
Pandas Data manipulation Clean, filter, group, merge tables of data
NumPy Numerical computing Fast math on huge arrays of numbers
Matplotlib Charts & graphs Line charts, bar charts, pie charts
Seaborn Statistical visuals Beautiful heatmaps, box plots, scatter plots
Scikit-learn Machine learning Train models to predict future values
Plotly Interactive charts Zoomable, clickable dashboards
1.5 Setup: Installing Python and VS Code
Step 1 — Install Python from [Link] (check 'Add Python to PATH')
Step 2 — Install VS Code from [Link]
Step 3 — In VS Code, install the Python extension by Microsoft
Step 4 — Verify in Command Prompt:
python --version # Should print: Python 3.x.x
pip --version # pip is Python's package manager (installs libraries
like pandas)
1.6 NEW CONCEPT: Python Execution Modes
Python can be run in two different ways — understand both:
• Interactive Mode (REPL): Type 'python' in terminal → see >>> prompt. Type code, press Enter, see
result immediately. Great for testing small ideas.
• Script Mode: Write code in a .py file, then run it with 'python [Link]'. Used for all real programs.
# Interactive Mode (type directly after >>>)
>>> 2 + 3
5
>>> print('Hello')
Hello
# Script Mode (save as [Link], then run: python [Link])
print('Hello, Meesam!')
Day 2 — Your First Line: the print() Function
2.1 What is a Function?
A function is a reusable block of code with a name. You activate (call) it by writing its name followed by
parentheses and any inputs (called arguments) inside. Python has many built-in functions ready to use.
💡 ANALOGY
print() is like a loudspeaker. Whatever you put inside the brackets,
Python announces it on the screen. Without print(), your program is
completely silent — it may run correctly but you will see nothing.
2.2 Anatomy of print()
print(value, ..., sep=' ', end='\n', file=[Link], flush=False)
# The four parameters you should know:
# value — what to display (can be multiple, separated by commas)
# sep — what to put between values (default: a space ' ')
# end — what to add at the very end (default: newline '\n')
# flush — force immediate output (used in advanced programs)
2.3 print() Examples — All Variations
print("Hello, Meesam!") # Output: Hello, Meesam!
print(42) # Output: 42
print(3.14) # Output: 3.14
print(True) # Output: True
# Multiple values with commas
print("Name:", "Meesam", "Age:", 20) # Output: Name: Meesam Age: 20
# Custom separator
print("2024", "12", "25", sep="-") # Output: 2024-12-25
print("A", "B", "C", sep=" | ") # Output: A | B | C
# Custom end (stay on same line)
print("Loading", end="...")
print("Done!") # Output: Loading...Done!
# Print empty line (useful for spacing in output)
print()
2.4 Common Mistakes with print()
❌ Wrong ✓ Correct Why?
Print('Hello') print('Hello') Python is case-sensitive. Must be
lowercase 'print'
print(Hello) print('Hello') Without quotes, Python looks for a
variable named Hello → NameError
print 'Hello' print('Hello') Python 2 syntax. Python 3 requires
parentheses
print('Hello") print('Hello') Mismatched quotes — opened with single,
closed with double
2.5 NEW CONCEPT: What Happens Inside print()
When Python sees print("Hello"), here is exactly what happens internally:
6. Python evaluates the expression inside brackets: "Hello"
7. It calls the __str__() method to convert the value to its string representation
8. It writes the string bytes to standard output (stdout) — your terminal
9. It appends the 'end' value (default: '\n' = newline character)
10. The terminal reads stdout and renders the characters on screen
📌 KEY INSIGHT
▸ '\n' is an ESCAPE CHARACTER — a backslash followed by 'n' means 'new line'
▸ This is why each print() starts on a new line by default
▸ You can disable this with end='' if you want multiple prints on one line
Day 3 — Print Practice, Comments & Escape Characters
3.1 Comments — Full Explanation
A comment is text in your code that Python completely ignores during execution. It starts with the # symbol.
Everything after # on that line is skipped.
💡 ANALOGY
Comments are like margin notes in a textbook.
The printed text (code) is what the subject explains.
Your handwritten notes (comments) are personal reminders — the publisher ignores them.
# Single-line comment — Python skips this line entirely
name = 'Meesam' # Inline comment — Python ignores everything after #
# BAD comment (states the obvious — adds no value):
x = x + 1 # adds 1 to x
# GOOD comment (explains WHY, not just WHAT):
attempts += 1 # Count failed logins to trigger account lockout after 3 tries
# Multi-line comment — use triple quotes (called a docstring)
'''
This is a multi-line comment.
Useful for long explanations or function documentation.
Python doesn't execute any of this text.
'''
3.2 NEW CONCEPT: Escape Characters in Strings
An escape character is a backslash \ followed by a letter that represents a special character you cannot type
directly into a string.
Escape Sequence What it means Example
\n New line — moves cursor to next print('Line1\nLine2') → Line1 on one line, Line2 on
line next
\t Tab — adds horizontal spacing print('Name:\tMeesam') → Name: Meesam
\' Single quote inside single-quoted print('It\'s Python') → It's Python
string
\" Double quote inside double- print("She said \"hello\"") → She said "hello"
quoted string
\\ Literal backslash character print('C:\\Users') → C:\Users
\r Carriage return — goes back to Used in some file formats (Windows line endings)
start of line
# Escape characters in action
print("Student Profile\n-----------------")
print("Name:\t\tMeesam")
print("Roll No:\t2025-BBIT-577")
print("University:\tUET Lahore")
# Output:
# Student Profile
# -----------------
# Name: Meesam
# Roll No: 2025-BBIT-577
# University: UET Lahore
3.3 NEW CONCEPT: Raw Strings
Sometimes you don't want backslashes to be interpreted as escape characters (e.g., file paths on Windows). Use
a raw string by putting r before the quote:
# Normal string — backslash is escape character
path = "C:\Users\Meesam\Documents" # \U and \M are interpreted as escapes →
bug!
# Raw string — backslash is treated as a literal character
path = r"C:\Users\Meesam\Documents" # Correct! Prints:
C:\Users\Meesam\Documents
# Raw strings are also used in pattern matching (regex) — you will see this
later
Day 4 — Variables: Storing Information
4.1 What is a Variable?
A variable is a named reference to a value stored in memory. When you write name = 'Meesam', Python stores
the string 'Meesam' somewhere in RAM and creates a label called 'name' that points to it.
💡 ANALOGY
A variable is like a labelled box. You write 'age' on the outside of a box, then put 20 inside.
Any time you need your age, you say 'age' — Python opens that box and gives you 20.
You can remove the old item and put something new in at any time.
# Basic variable creation (assignment)
name = 'Meesam' # string variable
age = 20 # integer variable
gpa = 3.75 # float variable
is_student = True # boolean variable (new concept!)
nothing = None # None variable (new concept!)
# Print variables
print(name) # Output: Meesam
print(age) # Output: 20
4.2 Variable Naming Rules
❌ Wrong ✓ Correct Rule
my name = 'Ali' my_name = 'Ali' No spaces — use underscore _
1score = 90 score1 = 90 Cannot start with a digit
class = 'A' student_class = 'A' 'class' is a reserved keyword
my-score = 85 my_score = 85 Hyphens not allowed — use underscore
@marks = 70 marks = 70 No special characters (@, #, !, $, etc.)
📌 NAMING CONVENTIONS
▸ snake_case — use lowercase with underscores: student_name, total_marks (standard for variables)
▸ UPPER_SNAKE — all caps for constants: MAX_SCORE = 100, PI = 3.14159
▸ CamelCase — for class names (you will learn this in Week 6): StudentProfile
▸ Python reserved words you cannot use: if, for, while, class, def, return, True, False, None, and, or, not,
in, is, pass, break, continue, import, from, try, except
4.3 Multiple Assignment — Shortcut Techniques
# Assign the same value to multiple variables at once
x = y = z = 0
print(x, y, z) # Output: 0 0 0
# Assign different values on one line (tuple unpacking)
name, age, city = 'Meesam', 20, 'Lahore'
print(name) # Output: Meesam
print(age) # Output: 20
print(city) # Output: Lahore
# Swap two variables (Python's elegant way — no temp variable needed)
a = 10
b = 20
a, b = b, a # Swap!
print(a, b) # Output: 20 10
4.4 How Python Stores Variables in Memory
Python manages memory using a system of objects and references. Every value is an 'object' stored at a memory
address. Variables are just labels pointing to objects.
name = 'Meesam'
print(id(name)) # e.g. 140234567890 — the memory address
# Reassigning points the label to a NEW memory location
name = 'Ahmed'
print(id(name)) # Different address — new object in memory
# Two variables can point to the SAME object (small integers are cached)
a = 5
b = 5
print(id(a) == id(b)) # True — Python reuses cached small integers
# del removes a variable label (the object stays until garbage collected)
del name
# print(name) # Now causes NameError: name 'name' is not defined
Day 5 — Data Types: str, int, float, bool, None
5.1 Python's Core Data Types — Overview
Every value in Python has a type. Python is dynamically typed — you don't declare types; Python figures them
out automatically. The 5 fundamental types for beginners:
Type Full Name Example Values When to Use
str String 'Hello', '20', 'Lahore' Names, text, any characters
int Integer 0, 5, -10, 1000, 42 Counts, ages, roll numbers
float Float 3.14, 9.8, -0.5, 3.75 GPA, prices, measurements
bool Boolean True, False Yes/No decisions, conditions
None NoneType None Absence of value, empty result
5.2 Strings — Deeper Explanation
A string is a sequence of characters. In Python, strings are immutable — once created, they cannot be changed
(you create a new string instead).
# Both single and double quotes work
name = "Meesam"
city = 'Lahore'
# Triple quotes for multi-line strings
address = """House 5,
Gulberg III,
Lahore, Pakistan"""
# String length with len()
print(len("Meesam")) # Output: 6
# String indexing — access individual characters (starts at 0!)
word = "Python"
print(word[0]) # Output: P (first character)
print(word[1]) # Output: y
print(word[-1]) # Output: n (last character, negative index!)
print(word[-2]) # Output: o (second from last)
# String slicing — extract a substring
print(word[0:3]) # Output: Pyt (index 0,1,2 — stop is excluded)
print(word[2:]) # Output: thon (from index 2 to end)
print(word[:4]) # Output: Pyth (from start to index 3)
5.3 NEW CONCEPT: String Methods
Strings have built-in methods (functions that belong to the string). Call them with a dot: [Link]()
name = " meesam ali "
# Case methods
print([Link]()) # Output: MEESAM ALI
print([Link]()) # Output: meesam ali
print([Link]()) # Output: Meesam Ali
print([Link]()) # Output: meesam ali (only first letter of
string)
# Whitespace methods
print([Link]()) # Output: meesam ali (removes spaces at both ends)
print([Link]()) # Output: meesam ali (removes left spaces only)
print([Link]()) # Output: meesam ali (removes right spaces only)
# Search and replace
sentence = "I love Python and Python loves me"
print([Link]("Python")) # Output: 2 (counts occurrences)
print([Link]("Python")) # Output: 7 (index of first occurrence)
print([Link]("Python", "Programming")) # replaces all occurrences
# Check methods — return True or False
print("123".isdigit()) # Output: True (all chars are digits)
print("abc".isalpha()) # Output: True (all chars are letters)
print("abc123".isalnum()) # Output: True (all chars are letters or digits)
print(" ".isspace()) # Output: True (all chars are whitespace)
5.4 NEW CONCEPT: f-Strings (Formatted Strings)
f-strings are the modern, best way to embed variables inside strings. Put f before the quote, then wrap variables
in { }. Introduced in Python 3.6.
name = "Meesam"
age = 20
gpa = 3.75
# f-string — put f before the opening quote
print(f"Name: {name}")
print(f"Age: {age}")
print(f"GPA: {gpa}")
# You can do calculations inside { }
print(f"GPA %: {(gpa/4.0)*100:.1f}%") # :.1f = 1 decimal place
print(f"In 5 years, I will be {age+5}") # Output: In 5 years, I will be 25
# Format numbers with f-strings
pi = 3.14159265
print(f"Pi to 2 decimal places: {pi:.2f}") # Output: 3.14
print(f"Pi to 4 decimal places: {pi:.4f}") # Output: 3.1416
salary = 75000
print(f"Salary: {salary:,}") # Output: Salary: 75,000 (adds
comma)
5.5 NEW CONCEPT: Boolean (bool) Type
Boolean is the simplest data type: it can only be True or False. Note the capital T and F — lowercase true/false
are NOT valid. Booleans power all decision-making in Python.
# Boolean variables
is_student = True
has_graduated = False
is_enrolled = True
print(type(is_student)) # Output: <class 'bool'>
# Comparison operators produce boolean results
print(10 > 5) # Output: True
print(10 < 5) # Output: False
print(10 == 10) # Output: True (== checks equality, not assignment)
print(10 != 5) # Output: True (not equal)
print(10 >= 10) # Output: True (greater than or equal)
print(10 <= 9) # Output: False (less than or equal)
# Logical operators combine booleans
print(True and True) # Output: True (both must be True)
print(True and False) # Output: False
print(True or False) # Output: True (at least one must be True)
print(not True) # Output: False (reverses the boolean)
# Truthy and Falsy values — non-boolean values act as booleans in conditions
print(bool(0)) # Output: False (0 is Falsy)
print(bool("")) # Output: False (empty string is Falsy)
print(bool(None)) # Output: False (None is Falsy)
print(bool(42)) # Output: True (any non-zero number is Truthy)
print(bool("Meesam")) # Output: True (non-empty string is Truthy)
5.6 NEW CONCEPT: The None Type
None is a special value meaning 'nothing', 'empty', or 'no value'. It is Python's way of representing absence.
None is its own type: NoneType.
# None represents absence of a value
result = None
print(result) # Output: None
print(type(result)) # Output: <class 'NoneType'>
# Check for None using 'is' (not ==)
if result is None:
print('No result yet')
# Functions that don't return anything actually return None
x = print('Hello') # print() returns None
print(x) # Output: None
# Common use: default value for variables not yet set
user_input = None
# ... later in the program ...
user_input = 'Meesam'
Day 6 — Numbers & Math
6.1 Arithmetic Operators — Complete Reference
Operator Name Example Result & Notes
+ Addition 10 + 3 13 — adds numbers
- Subtraction 10 - 3 7 — subtracts
* Multiplication 10 * 3 30 — multiplies
/ Division 10 / 3 3.333... — always gives float
// Floor Division 10 // 3 3 — drops decimal (rounds down)
% Modulus 10 % 3 1 — gives the REMAINDER
** Exponent 2 ** 8 256 — 2 to the power of 8
6.2 Order of Operations (BODMAS)
Python follows strict mathematical order: Brackets → Exponents → Division/Multiplication →
Addition/Subtraction
print(2 + 3 * 4) # Output: 14 (3*4=12 first, then 12+2)
print((2 + 3) * 4) # Output: 20 (brackets first: 2+3=5, then 5*4)
print(2 ** 3 ** 2) # Output: 512 (** is right-associative: 3**2=9,
then 2**9)
print(10 / 2 + 3) # Output: 8.0 (10/2=5.0 first, then 5.0+3)
# Real example: percentage calculation
marks = 85
total = 100
percentage = (marks / total) * 100
print(f"Percentage: {percentage}%") # Output: Percentage: 85.0%
6.3 Integer vs Float — When Python Switches
Python automatically determines whether to return an int or float from math operations:
print(type(5 + 3)) # <class 'int'> int + int = int
print(type(5 + 3.0)) # <class 'float'> int + float = float
print(type(10 / 2)) # <class 'float'> / always returns float (even 10/2
= 5.0)
print(type(10 // 2)) # <class 'int'> // with two ints returns int
print(type(10.0 // 2)) # <class 'float'> // with any float returns float
6.4 Built-in Math Functions
abs(-15) # 15 — absolute value
round(3.7) # 4 — round to nearest integer
round(3.456, 2) # 3.46 — round to 2 decimal places
max(5, 2, 9, 1) # 9 — largest value
min(5, 2, 9, 1) # 1 — smallest value
pow(2, 10) # 1024 — same as 2**10
sum([85, 90, 78, 92]) # 345 — sum of a list
6.5 NEW CONCEPT: The math Module
For advanced math, import Python's built-in math module. A module is a file containing extra Python functions
you can use by importing it.
import math
print([Link]) # 3.141592653589793
print(math.e) # 2.718281828459045 (Euler's number)
print([Link](16)) # 4.0 — square root
print([Link](2)) # 1.4142135623730951
print([Link](3.2)) # 4 — round UP always
print([Link](3.9)) # 3 — round DOWN always
print([Link](3.9)) # 3 — remove decimal (same as int() for
positives)
print([Link](5)) # 120 — 5! = 5×4×3×2×1
print([Link](100, 10)) # 2.0 — log base 10 of 100
print(math.log2(8)) # 3.0 — log base 2 of 8
# Trigonometry (angles in radians)
print([Link]([Link]/2)) # 1.0 — sin(90°)
print([Link](0)) # 1.0 — cos(0°)
6.6 Shorthand Assignment Operators
score = 10
score += 5 # score = score + 5 → 15
score -= 3 # score = score - 3 → 12
score *= 2 # score = score * 2 → 24
score /= 4 # score = score / 4 → 6.0
score //= 2 # score = score // 2 → 3.0
score **= 3 # score = score ** 3 → 27.0
score %= 5 # score = score % 5 → 2.0 (remainder of 27/5)
Day 7 — Week 1 Complete Review
7.1 NEW CONCEPT: Error Types — Know Your Bugs
When your Python code has a problem, Python raises an Error. Learning to read error messages is one of the
most important skills in programming. Python errors are specific and informative.
Error Type What causes it Example
SyntaxError Wrong grammar — code cannot even be print('Hello' ← missing closing
read parenthesis
NameError Using a variable that doesn't exist yet print(score) ← score was never
defined
TypeError Wrong type used in an operation print('Age: ' + 20) ← can't add str and
int
ValueError Right type but invalid value int('hello') ← 'hello' cannot become
a number
ZeroDivisionError Dividing by zero print(10 / 0) ← math is undefined
IndentationError Wrong indentation (spaces) in code Will be important when you learn
blocks if/for/while
# How to READ a Python error message:
# -----------------------------------
# File '[Link]', line 3, in <module> ← WHERE the error occurred
# print('Hello' + 5) ← the EXACT line
# TypeError: can only concatenate str (not "int") to str
# ^^^^^^^^^ ← the ERROR TYPE ← the EXPLANATION
# Strategy: Read the LAST line first (error type + explanation)
# Then look at the line number to find the problem in your code
7.2 NEW CONCEPT: type() and isinstance()
# type() — check what type a value is
print(type('Meesam')) # <class 'str'>
print(type(20)) # <class 'int'>
print(type(3.75)) # <class 'float'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>
# isinstance() — check if a value IS a specific type (returns True/False)
print(isinstance(20, int)) # True
print(isinstance(3.75, float)) # True
print(isinstance('Hi', str)) # True
print(isinstance(True, bool)) # True
print(isinstance(True, int)) # Also True! (bool is a subclass of int in
Python)
# Practical use: validate before operating
value = '42'
if isinstance(value, str):
value = int(value) # convert to int first
print(value + 10) # Output: 52
7.3 Week 1 Complete Summary Table
Concept What it is Key Example
print() Display output on screen print('Hello')
sep / end Control print() separator and ending print('A','B',sep='-')
Variables Named storage for values name = 'Meesam'
str type Text values 'Hello', 'Lahore'
int type Whole numbers 20, -5, 1000
float type Decimal numbers 3.75, 9.8
bool type True or False is_student = True
None type Absence of value result = None
Arithmetic Math operations 10 + 3, 10 % 3, 2**8
Comments Notes for programmers # This is a comment
Escape chars Special characters in strings 'Line1\nLine2'
f-strings Embed variables in strings f'Name: {name}'
String methods Functions built into strings [Link](), [Link]()
math module Advanced math functions [Link](16), [Link]
type() Check a variable's type type(name) → str
isinstance() Check type, returns True/False isinstance(x, int)
Error types Common Python errors to recognise TypeError, ValueError
Multi-assign Assign multiple variables at once a, b, c = 1, 2, 3
7.4 Week 1 Final Challenge Program
# ===== MY STUDENT PROFILE =====
# Created by: Meesam | Roll: 2025-BBIT-577
name = 'Meesam'
university = 'UET Lahore'
roll_number = '2025-BBIT-577'
program = 'BBIT'
gpa = 3.75
age = 20
favourite_subject = 'Data Analytics'
total_semesters = 8
completed_semesters = 1
is_enrolled = True
# Calculations
remaining = total_semesters - completed_semesters
gpa_percent = (gpa / 4.0) * 100
progress_pct = (completed_semesters / total_semesters) * 100
# Display using f-strings
print('=' * 35)
print(f' STUDENT PROFILE — {university}')
print('=' * 35)
print(f' Name : {name}')
print(f' Roll Number : {roll_number}')
print(f' Program : {program}')
print(f' Age : {age}')
print(f' GPA : {gpa} / 4.0 ({gpa_percent:.1f}%)')
print(f' Favourite : {favourite_subject}')
print(f' Progress : {completed_semesters}/{total_semesters} semesters
({progress_pct:.0f}%)')
print(f' Remaining : {remaining} semesters')
print(f' Enrolled : {is_enrolled}')
print('=' * 35)
7.5 Self-Test Questions (Expanded)
11. What is the difference between = and == in Python?
12. What does int('3.9') return — 3, 4, or an error? Why?
13. What is the output of: print(10 // 3)? And print(10 % 3)?
14. Fix this: print('Hello' + 5)
15. What is the output of: print(2 + 3 * 4)?
16. What does None mean? How is it different from 0 or ''?
17. What does bool(0) return? And bool('hello')? Why?
18. Write code to print your name in UPPERCASE using a string method.
19. What is the difference between / and // in Python?
20. What error does print(Hello) cause (without quotes)? And why?
21. How do you import the math module and calculate the square root of 144?
22. Write a one-line f-string that prints: 'My GPA is 3.75 which is 93.8%'
✅ ANSWERS
1. = assigns (name = 'Ali'). == checks equality (name == 'Ali' → True/False).
2. ValueError — '3.9' has a decimal. Use float('3.9') first, then int().
3. 10//3 = 3 (floor division). 10%3 = 1 (remainder).
4. print('Hello ' + str(5)) OR print('Hello', 5) OR print(f'Hello {5}')
5. 14 — BODMAS: 3*4=12 first, then 2+12=14.
6. None means no value at all. 0 is a number. '' is an empty string. None is the absence of any value.
7. bool(0) = False (0 is Falsy). bool('hello') = True (non-empty string is Truthy).
8. name = 'meesam'; print([Link]()) → MEESAM
9. / always returns float (10/2 = 5.0). // returns integer part only (10//2 = 5).
10. NameError: 'Hello' is treated as a variable name, which was never defined.
11. import math; print([Link](144)) → 12.0
12. gpa=3.75; print(f'My GPA is {gpa} which is {(gpa/4)*100:.1f}%')
🎉 Week 1 Complete — Expanded Edition!
Next: Week 2 — input(), if/else Logic, Loops & More