Day 2: Operators, Input/Output & Type Casting
🐍 Day 2: Operators, Input/Output & Type Casting
1. Learning Objectives
By the end of Day 2, you will be able to:
- Use all major Python operators: arithmetic, comparison, logical, assignment, and identity
- Understand operator precedence (which operations happen first)
- Accept user input with
input()and process it correctly - Convert between data types using
int(),float(),str(), andbool() - Write interactive programs that respond to the user
2. Concept Explanation
2.1 Arithmetic Operators — Python as a Calculator
Python can do everything a calculator does and far more:
| Operator | Name | Example | Result |
|---|---|---|---|
+ |
Addition | 10 + 3 |
13 |
- |
Subtraction | 10 - 3 |
7 |
* |
Multiplication | 10 * 3 |
30 |
/ |
Division (always returns float) | 10 / 3 |
3.333... |
// |
Floor division (integer result) | 10 // 3 |
3 |
% |
Modulus (remainder) | 10 % 3 |
1 |
** |
Exponentiation | 10 ** 3 |
1000 |
Critical detail: / always returns a float, even when dividing evenly:
print(10 / 2) # 5.0 — float, not int!
print(10 // 2) # 5 — int, floor division drops decimals
% is more useful than it looks:
# Is a number even or odd?
print(7 % 2) # 1 → odd
print(8 % 2) # 0 → even
# Extract the last digit
print(12345 % 10) # 5
# Check if a year is divisible by 4
print(2024 % 4) # 0 → divisible
2.2 Comparison Operators — Asking Questions
These always return a boolean (True or False):
| Operator | Meaning | Example | Result |
|---|---|---|---|
== |
Equal to | 5 == 5 |
True |
!= |
Not equal to | 5 != 3 |
True |
> |
Greater than | 10 > 5 |
True |
< |
Less than | 3 < 1 |
False |
>= |
Greater than or equal | 5 >= 5 |
True |
<= |
Less than or equal | 4 <= 3 |
False |
⚠️ Single
=vs. Double==:=assigns a value.==compares two values.
This is the #1 beginner mistake!
x = 5 # Assignment: put 5 into x
x == 5 # Comparison: is x equal to 5? → True
x = 10 # Assignment: now x is 10
x == 5 # Comparison: is x equal to 5? → False
2.3 Logical Operators — Combining Conditions
| Operator | Meaning | Example | Result |
|---|---|---|---|
and |
Both must be True | (5 > 3) and (2 < 4) |
True |
or |
At least one must be True | (5 < 3) or (2 < 4) |
True |
not |
Reverses the boolean | not (5 > 3) |
False |
Truth tables for quick reference:
AND: OR: NOT:
True and True → True True or True → T not True → False
True and False → False True or False → T not False → True
False and True → False False or True → T
False and False→ False False or False→ F
Real-world examples:
age = 22
has_license = True
# Can this person drive?
can_drive = (age >= 18) and has_license
print(can_drive) # True
# Is a number in range?
num = 75
in_range = (num >= 0) and (num <= 100)
print(in_range) # True
# Is it a weekend day?
day = "Saturday"
is_weekend = (day == "Saturday") or (day == "Sunday")
print(is_weekend) # True
2.4 Assignment Operators — Shorthand
You already know =. Here are the convenient shortcuts:
| Operator | Equivalent To |
|---|---|
x += 5 |
x = x + 5 |
x -= 3 |
x = x - 3 |
x *= 2 |
x = x * 2 |
x /= 4 |
x = x / 4 |
x //= 2 |
x = x // 2 |
x %= 3 |
x = x % 3 |
x **= 2 |
x = x ** 2 |
score = 100
score += 50 # score is now 150
score -= 30 # score is now 120
score *= 2 # score is now 240
print(score) # 240
2.5 Operator Precedence — Who Goes First?
Python follows PEMDAS (like math class):
1. () Parentheses
2. ** Exponentiation
3. +x, -x Unary plus/minus (signs)
4. *, /, //, % Multiplication, division, floor division, modulus
5. +, - Addition, subtraction
6. ==, !=, >, <, >=, <= Comparisons
7. not Logical NOT
8. and Logical AND
9. or Logical OR
# What's the result?
result = 2 + 3 * 4 # 14, not 20 — multiplication first
result = (2 + 3) * 4 # 20 — parentheses override
result = 10 - 4 / 2 # 8.0 — division before subtraction
result = 2 ** 3 ** 2 # 512 — right-to-left: 2 ** (3 ** 2) = 2 ** 9
💡 Golden Rule: When in doubt, use parentheses. They cost nothing and prevent bugs.
2.6 input() — Talking to Your User
input() pauses your program and waits for the user to type something and press Enter. It always returns a string.
name = input("What is your name? ")
print("Hello, " + name + "!")
Example run:
What is your name? Alice
Hello, Alice!
⚠️ The #1 trap: Even if the user types
42,input()returns"42"(a string), not42(an integer).
age = input("How old are you? ") # User types "25"
print(age * 2) # "2525" — string repetition, not 50!
2.7 Type Casting — Converting Between Types
This is how you fix the input() problem:
| Function | What It Does | Example |
|---|---|---|
int() |
Converts to integer | int("42") → 42 |
float() |
Converts to float | float("3.14") → 3.14 |
str() |
Converts to string | str(100) → "100" |
bool() |
Converts to boolean | bool(1) → True |
The correct pattern for numeric input:
# Pattern: Wrap input() with the type you need
age = int(input("How old are you? "))
# Now age is a real integer!
print(age * 2) # Works correctly: 50
print(age + 10) # Works correctly: 35
What can go wrong:
int("hello") # ❌ ValueError: invalid literal for int()
int("3.14") # ❌ ValueError — can't convert float string directly to int
int(float("3.14")) # ✅ 3 — two-step conversion: str → float → int
float("42") # ✅ 42.0 — works fine
str(3.14) # ✅ "3.14"
bool("False") # ⚠️ True! — non-empty strings are truthy!
⚠️
bool("False")isTruebecause the string"False"is non-empty. Onlybool("")(empty string) givesFalse.
3. Code Examples — Putting It All Together
Example 1: Simple Calculator
# A basic calculator that adds two user-entered numbers
print("=== SIMPLE ADDER ===")
num1 = float(input("Enter first number: "))
num2 = float(input("Enter second number: "))
result = num1 + num2
print("The sum is:", result)
# Verify types
print("num1 type:", type(num1))
print("result type:", type(result))
Example 2: Age Verifier
# Check if someone meets multiple conditions
age = int(input("Enter your age: "))
has_id = input("Do you have an ID? (yes/no): ")
is_adult = age >= 18
has_id_bool = (has_id == "yes")
can_enter = is_adult and has_id_bool
print("\n=== ENTRY CHECK ===")
print("Over 18?", is_adult)
print("Has ID?", has_id_bool)
print("Allowed to enter?", can_enter)
Example 3: All Operators in Action
# Demonstrating every operator type
a = 15
b = 4
print("=== ARITHMETIC ===")
print(f"{a} + {b} = {a + b}")
print(f"{a} - {b} = {a - b}")
print(f"{a} * {b} = {a * b}")
print(f"{a} / {b} = {a / b}") # Always float
print(f"{a} // {b} = {a // b}") # Integer division
print(f"{a} % {b} = {a % b}") # Remainder
print(f"{a} ** {b} = {a ** b}")
print("\n=== COMPARISON ===")
print(f"{a} == {b}: {a == b}")
print(f"{a} != {b}: {a != b}")
print(f"{a} > {b}: {a > b}")
print(f"{a} < {b}: {a < b}")
print("\n=== LOGICAL ===")
x, y = True, False
print(f"{x} and {y} = {x and y}")
print(f"{x} or {y} = {x or y}")
print(f"not {x} = {not x}")
Note: We're using f-strings (the
fbefore quotes) — they let you embed variables directly inside{}. More on strings on Day 8, but start using them now!
4. Hands-On Exercises
Exercise 1: Temperature Converter
Convert Celsius to Fahrenheit. Formula: F = (C × 9/5) + 32. Ask the user for Celsius and print Fahrenheit.
Exercise 2: Even or Odd Detector
Ask the user for a whole number. Print whether it's even or odd. (Hint: use %)
Exercise 3: Eligibility Checker
Ask the user for their age and years of experience. Print True if they are at least 25 years old AND have 3+ years of experience. Print False otherwise.
Exercise 4: Tip Calculator
Ask for the bill amount and tip percentage (e.g., 15 for 15%). Calculate and print the tip amount, total bill, and amount per person (ask for number of people too).
Exercise 5: Logical Operator Practice
Without running the code, predict the output. Then verify:
a, b, c = 10, 20, 30
print((a < b) and (b < c))
print((a > b) or (b < c))
print(not (a == 10))
print((a + b > c) and (b - a == 10))
print((a * 2 == b) or (c / 2 == b) and (a < c))
5. Applied Challenge Task 🏗️
Smart Grade Calculator
Build a program that:
- Asks the student for their name
- Asks for three test scores (0–100 each)
- Calculates the average score (sum ÷ 3)
- Determines if the student passed (average ≥ 60)
- Determines the letter grade:
- 90–100: A
- 80–89: B
- 70–79: C
- 60–69: D
- Below 60: F
- Prints a clean summary:
=== GRADE REPORT ===
Student: Alex
Scores: 85, 92, 78
Average: 85.0
Letter Grade: B
Passed: True
=====================
Stretch goals:
- Validate that scores are between 0–100 (print a warning but don't crash)
- Use
+=to accumulate the total score - Handle the edge case where average is exactly on a boundary (e.g., 89.5 → round up?)
6. Brief Review Summary
| Concept | Key Points |
|---|---|
| Arithmetic | +, -, *, /, //, %, ** — / always returns float |
| Comparison | ==, !=, >, <, >=, <= — always return bool |
| Logical | and, or, not — combine boolean expressions |
| Assignment | =, +=, -=, *=, /=, etc. — convenient shortcuts |
| Precedence | PEMDAS + comparisons before logical — use parentheses! |
input() |
Pauses for user input — always returns a string |
| Type Casting | int(), float(), str(), bool() — convert between types |
| Pattern | int(input(...)) — the standard way to get numeric input |
7. Preview of Next Topic — Day 3
Tomorrow we enter the world of decision-making:
- Conditional statements:
if,elif,else - Boolean logic in depth
- Nested conditions
- Ternary expressions (one-line if/else)
- Writing programs that branch based on conditions
🎯 Your Action Items for Day 2:
- ✅ Complete all 5 exercises
- ✅ Complete the Smart Grade Calculator challenge
- ✅ Experiment with each operator in the interactive shell
- ✅ Try breaking
int()andfloat()with bad input — see what errors you get
Comments
Post a Comment
Leave us your comments here...