Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Logical Operators | Booleans and Comparisons
Data Types in Python

bookLogical Operators

People say "yes and yes", "yes or no", "definitely not". In Python, the logical operators and, or, and not express these ideas formally and produce Booleans (True/False) you'll use with comparisons in if/while.

What each operator means

Precedence

not binds tighter than and, which binds tighter than or (not > and > or). Use parentheses when in doubt.

For instance, age >= 18 and has_id is True only if both checks succeed:

123
age = 21 has_id = True print(age >= 18 and has_id) # True
copy

Truth table

A truth table lists all possible truth values of inputs and shows the resulting output of a logical expression. It's a compact way to reason about logic without running code.

Using the table

If X is False and Y is True, then X and Y is False, X or Y is True, and not X is True.

Return values & short-circuiting (together)

and and or don't always yield the words True/False; they return one of their operands, and Python may stop early once the result is known.

  • A and B:

    • If A is falsey, the whole expression is false and the result is A (Python does not evaluate B);
    • If A is truthy, the result depends on B and the expression evaluates to B.
  • A or B:

    • If A is truthy, the expression is true and the result is A (Python does not evaluate B);
    • If A is falsey, the result depends on B and the expression evaluates to B.
  • not X always returns an actual Boolean: True or False.

Q2. Which statement matches classical logic for "neither X nor Y"? A) not X or not Y B) not (X or Y) C) not X and Y D) X and not Y

Q3. What does the expression return?

username = ""
result = username or "Anonymous"

A) "" B) "Anonymous" C) True D) False

Answer key: Q1 β†’ False, False, True; Q2 β†’ B; Q3 β†’ B.

12345678
# Using the returned operand behavior + short-circuiting print("" or "Guest") # "Guest" (left falsey β†’ returns right) print("User" or "Guest") # "User" (left truthy β†’ returns left) print(0 and 123) # 0 (left falsey β†’ returns left) print(5 and 123) # 123 (left truthy β†’ returns right) print(not 0, not "hi") # True False
copy

1. Fill the blanks with True or False). Let X = True, Y = False.

2. Which statement matches classical logic for "neither X nor Y"?

3. What does the expression return?

question-icon

Fill the blanks with True or False). Let X = True, Y = False.

X and Y β†’
not X β†’

X or Y β†’

question mark

Which statement matches classical logic for "neither X nor Y"?

Select the correct answer

question mark

What does the expression return?

Select the correct answer

Everything was clear?

How can we improve it?

Thanks for your feedback!

SectionΒ 2. ChapterΒ 4

Ask AI

expand

Ask AI

ChatGPT

Ask anything or try one of the suggested questions to begin our chat

Suggested prompts:

Can you explain more about short-circuiting with examples?

What does "falsey" and "truthy" mean in Python?

Can you show how these logical operators are used in real-world scenarios?

Awesome!

Completion rate improved to 5

bookLogical Operators

Swipe to show menu

People say "yes and yes", "yes or no", "definitely not". In Python, the logical operators and, or, and not express these ideas formally and produce Booleans (True/False) you'll use with comparisons in if/while.

What each operator means

Precedence

not binds tighter than and, which binds tighter than or (not > and > or). Use parentheses when in doubt.

For instance, age >= 18 and has_id is True only if both checks succeed:

123
age = 21 has_id = True print(age >= 18 and has_id) # True
copy

Truth table

A truth table lists all possible truth values of inputs and shows the resulting output of a logical expression. It's a compact way to reason about logic without running code.

Using the table

If X is False and Y is True, then X and Y is False, X or Y is True, and not X is True.

Return values & short-circuiting (together)

and and or don't always yield the words True/False; they return one of their operands, and Python may stop early once the result is known.

  • A and B:

    • If A is falsey, the whole expression is false and the result is A (Python does not evaluate B);
    • If A is truthy, the result depends on B and the expression evaluates to B.
  • A or B:

    • If A is truthy, the expression is true and the result is A (Python does not evaluate B);
    • If A is falsey, the result depends on B and the expression evaluates to B.
  • not X always returns an actual Boolean: True or False.

Q2. Which statement matches classical logic for "neither X nor Y"? A) not X or not Y B) not (X or Y) C) not X and Y D) X and not Y

Q3. What does the expression return?

username = ""
result = username or "Anonymous"

A) "" B) "Anonymous" C) True D) False

Answer key: Q1 β†’ False, False, True; Q2 β†’ B; Q3 β†’ B.

12345678
# Using the returned operand behavior + short-circuiting print("" or "Guest") # "Guest" (left falsey β†’ returns right) print("User" or "Guest") # "User" (left truthy β†’ returns left) print(0 and 123) # 0 (left falsey β†’ returns left) print(5 and 123) # 123 (left truthy β†’ returns right) print(not 0, not "hi") # True False
copy

1. Fill the blanks with True or False). Let X = True, Y = False.

2. Which statement matches classical logic for "neither X nor Y"?

3. What does the expression return?

question-icon

Fill the blanks with True or False). Let X = True, Y = False.

X and Y β†’
not X β†’

X or Y β†’

question mark

Which statement matches classical logic for "neither X nor Y"?

Select the correct answer

question mark

What does the expression return?

Select the correct answer

Everything was clear?

How can we improve it?

Thanks for your feedback!

SectionΒ 2. ChapterΒ 4
some-alt