Skip to main content

Text, Boolean, and None — Representing Meaning Beyond Numbers

What You'll Learn

  • Text data (strings)
  • True/False decisions (booleans)
  • Truthy and falsy values
  • Representing "nothing" (None)
  • Why strings can't change

You've mastered numbers in the previous lesson. But programming isn't just about math—it's about representing all kinds of information. Consider these everyday examples:

  • Text: "Hello", "alice@example.com", "Room 404"
  • True or False: Light switch ON/OFF, Fridge EMPTY/FULL, Answer YES/NO
  • Nothing: No milk available, no response received, no data found

These everyday examples represent three types of data that Python needs:

  • Text (str): "Hello", "alice@example.com", "Room 404"
  • True/False (bool): Switch is ON, Fridge is EMPTY, Question is YES
  • Nothing (None): No milk, no response, no data

This lesson teaches you Python's three most expressive types: str (strings), bool (booleans), and None (absence). Together, they let you represent the richness of real-world meaning.


Concept 1: What Is a String (str)?

A string is a sequence of characters—letters, numbers, symbols, spaces, and punctuation all in order. It's how Python stores text.

Examples of Strings

Loading Python environment...

Key characteristics:

  • A sequence: Made of individual characters in a string together
  • Immutable: Once created, you can't change individual characters (you create a new string instead)
  • Ordered: Position matters ("bat" ≠ "tab")
  • Can be empty: "" is a valid string with zero characters

Why Use Strings?

Strings represent any text data:

  • Names, emails, usernames
  • Messages, labels, descriptions
  • File paths, URLs, IDs
  • Anything that isn't a number or True/False

When you need to store, display, or process words or text, use str.

Quote Variations: Three Ways to Write Strings

Python gives you three ways to write strings, all equally valid. The choice depends on your content:

Single Quotes: 'hello'

Loading Python environment...

Use when your string contains double quotes:

Loading Python environment...

Double Quotes: "hello"

Loading Python environment...

Use when your string contains single quotes (apostrophes):

Loading Python environment...

Triple Quotes: '''...''' or """..."""

Loading Python environment...

Use for multi-line strings (text spanning multiple lines). Triple quotes preserve line breaks.

Key insight: All three quote types create strings. Pick whichever keeps your code readable:

Loading Python environment...

String Immutability: You Can't Change Individual Characters

Immutable means unchangeable. Once a string is created, you cannot modify its individual characters.

Loading Python environment...

If you want "Blice", you must create a new string:

Loading Python environment...

Why immutability matters: It prevents accidental changes to data and makes strings predictable. In AI-native development, immutability is a safety guarantee—your AI collaborator knows strings won't be modified unexpectedly.


Concept 2: What Is a Boolean (bool)?

A boolean is a data type with exactly two possible values: True or False. It's for yes/no, on/off, pass/fail decisions.

Examples of Booleans

Loading Python environment...

Key Characteristics

  • Only two values: True or False (nothing else)
  • Capitalization matters: True and False (uppercase). Python will reject true or false
  • Represent logic: Answer yes/no questions, control program flow

Why Use Booleans?

Booleans answer yes/no questions:

  • Is the user logged in? True or False
  • Has the user paid? True or False
  • Is the product in stock? True or False
  • Is the password correct? True or False

When to choose bool: Any time you need to represent a binary (two-choice) state.

Code Example: Boolean Variables

Loading Python environment...


Concept 3: Truthy and Falsy Values

Here's a powerful concept that prepares you for conditional statements (Chapter 22):

In Python, almost EVERY value can be treated as True or False. Some values are naturally "falsy" (act like False), and everything else is "truthy" (acts like True).

Understanding Falsy Values

These values are considered False:

ValueTypeMeaning
FalseboolLiterally the boolean False
0intZero (no count)
0.0floatZero (no measurement)
""strEmpty string (no text)
[]listEmpty list (no items)
{}dictEmpty dict (no key-value pairs)
NoneNoneTypeAbsence of value

Understanding Truthy Values

Everything else is True:

ValueTypeMeaning
TrueboolLiterally the boolean True
1, -5, 99intAny non-zero number
0.1, -3.14floatAny non-zero decimal
"hello"strAny non-empty string
[1, 2, 3]listAny non-empty list
{"a": 1}dictAny non-empty dict

Checking Truthiness with bool()

The bool() function converts any value to True or False:

Loading Python environment...

Code Demonstration: Truthy/Falsy in Context

Loading Python environment...

Why Truthy/Falsy Matters

Understanding truthy/falsy values prepares you for Chapter 22, where you'll learn to write conditional logic like:

  • Checking if a username is not empty (truthy check)
  • Verifying if age meets requirements (comparison)
  • Testing if a user has premium status (boolean check)

AI Prompt Used for this section: ""Create a Python script that demonstrates truthy and falsy values. Show examples of False-evaluating values (0, '', [], {}, None) and truthy values (1, 'hello', [1,2], {'a': 1}). Use bool() to convert each to True/False.""

Generated Code:

Loading Python environment...

Validation Steps:

  • ✓ Ran on Windows, Mac, and Linux—works across platforms
  • ✓ Correctly identifies all falsy values evaluate to False
  • ✓ Correctly identifies all truthy values evaluate to True
  • ✓ Output format clear and easy to understand
  • ✓ No control flow statements (loops/conditionals taught in Chapter 22)

Concept 4: What Is None?

None is a special value representing absence—"nothing," "no data," "no result."

None Is NOT Zero or Empty

Many beginners confuse None with 0 or "". They're completely different:

Loading Python environment...

The semantic difference:

  • 0 = "The count is zero" (a count that exists)
  • "" = "The message is empty" (a string that exists but has no text)
  • None = "There is no value at all" (nothing exists)

None as a Singleton

There is exactly ONE None object in the entire Python program:

Loading Python environment...

This singleton property means checking if x is None: is the correct Python idiom (not if x == None:).

Why Use None?

None represents missing or absent data:

  • Function has no result: return None
  • Optional parameter not provided: name: str | None = None
  • Data field is missing: phone: str | None = None
  • Placeholder for data you'll fill later: result: int | None = None

Examples of None

Loading Python environment...

Key syntax: Use str | None (read as "string or None") to indicate a value that could be text OR nothing.


Practice Exercise 1: Identify Truthy/Falsy Values

For each value below, determine whether it's truthy or falsy. Write your answer as T (truthy) or F (falsy):

Loading Python environment...

Answers (check yourself after completing):

1. F  2. F  3. F  4. T  5. F  6. T  7. F  8. T  9. F  10. T
11. T 12. T 13. T 14. F 15. F

Practice Exercise 2: Choose the Right Type (str, bool, or None)

For each scenario, decide whether you'd use str, bool, or None:

Loading Python environment...

Your answers:

Loading Python environment...


Practice Exercise 3: Fix the String Quote Error

The code below has quote-related issues. Fix them:

Loading Python environment...

Your corrections:

Loading Python environment...


Common Pitfalls

Pitfall 1: Forgetting Quote Matching

Loading Python environment...

Pitfall 2: Confusing True/False Capitalization

Loading Python environment...

Pitfall 3: Treating None Like Zero or Empty String

Loading Python environment...

Pitfall 4: Trying to Modify Strings

Loading Python environment...

Pitfall 5: Forgetting Triple Quotes for Multi-line

Loading Python environment...


Why This Matters: Semantic Clarity

Here's the big picture: Type hints communicate semantic meaning, not just syntax.

When you write:

Loading Python environment...

You're telling your AI collaborator (and future you):

  1. user_name is text representing a person's name
  2. is_premium_member is a yes/no decision about membership status
  3. phone_number could be a phone (text) or nothing (absent data)

This semantic clarity enables your AI collaborator to:

  • Suggest string operations (uppercase, split, validate email)
  • Understand boolean logic for decision-making
  • Handle optional fields correctly (default values, validation)

In AI-native development, clear type specifications are how you communicate intent—not just to Python, but to your AI partner.

🎓 Expert Insight

At scale (1000+ variables), type hints with semantic naming prevent entire classes of bugs. When you see confirmed: bool, you immediately know it's a yes/no decision. When you see phone: str | None, you know to handle the "no phone" case. This clarity becomes AI-readable specifications. Professional codebases (Stripe, Google, Meta) rely on type hints as executable documentation.


Try With AI

Ready to master truthy/falsy evaluation and None semantics?

🔍 Explore Truthy/Falsy Patterns:

"Test these 10 values with bool() and tell me which are truthy and falsy: '', 'hello', 0, 42, [], [1,2], None, False, True, '0'. Explain the pattern you observe. Why is '0' (string) truthy but 0 (int) falsy? What's the rule for empty vs. non-empty values?"

🎯 Practice Boolean Validation:

"Create a user registration validator that checks: (1) username is not empty, (2) age is not None and not zero, (3) email contains '@'. Use truthy/falsy checking instead of explicit comparisons like == ''. Show me the code with type hints and explain why if not username: is better than if username == '':"

🧪 Test None vs. Empty Semantics:

"Explain the difference between missing_data = None, zero_value = 0, and empty_text = ''. For optional user input (like middle name), which should I use? Create code showing why if value is None: is correct but if value == 0: would be wrong. Include a real bug this causes."

🚀 Apply to Your Forms:

"I'm building a form for [describe your application]. Help me identify which fields are required (str), optional (str | None), and boolean decisions (bool). For each field, show me the correct validation logic using truthy/falsy evaluation and None checking."