# Logical Operators

## Objective

After working through this lesson, you’ll be able to:

* Write Python code that uses logical operators to connect Boolean expressions.

## Introductory Problem

Write Python code to determine if you and your friend will get a fire emoji.

Ask the user, "Have you snapped with your friend for the past 3 days? ")

* If yes, print "you snapped with your friend"&#x20;
* If no, print "you have not snapped with your friend"

Ask the user, "Has your friend snapped with you for the past 3 days"

* If yes, print "your friend snapped with you"
* If no, print "your friend has not snapped with you"

If the answer to both questions is yes, then print, you started a Snapstreak!

{% code title="intro.py" %}

```python
sent = input("Have you snapped with your friend for the past 3 days? ")
if sent == "yes":
   print("you snapped with your friend")
elif sent == "no":
   print("you have not snapped with your friend")
received = input("Has your friend snapped with you for the past 3 days? ")
if received == "yes":
   print("your friend snapped with you")
elif received == "no":
   print("your friend has not snapped with you")
if sent == "yes":
   if received received == "yes":
      print("you started a Snapstreak!")
```

{% endcode %}

Logical operators allow you to connect Boolean expressions to create a compound expression.

| Operator | Meaning                                                                                                                                        |
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| and      | Connects two Boolean expressions into one compound expression. Both subexpressions must be true for the compound expression to be true.        |
| or       | Connects two Boolean expressions into one compound expression. One or both subexpressions must be true for the compound expression to be true. |
| not      | Reverses the truth of its operand                                                                                                              |

## Example 1

Rewrite the Introductory Problem using the logical and operator.  If both conditions are true, print, you started a Snapstreak! Else print, not so friendly yet.

{% code title="example1.py" %}

```python
sent = input("Have you snapped with your friend for the past 3 days? ")
if sent == "yes":
   print("you snapped with your friend")
elif sent == "no":
   print("you have not snapped with your friend")
received = input("Has your friend snapped with you for the past 3 days? ")
if received == "yes":
   print("your friend snapped with you")
elif received == "no":
   print("your friend has not snapped with you")
if sent == "yes" and received == "yes":
   print("you started a Snapstreak!")
else:
   print("not so friendly yet")
```

{% endcode %}

## Example 2

Snapchat decides to change its criteria for creating a Snapstreak. Now only one user has to send a message to the other for three days.  Change the code to satisify the new condition.

{% code title="example2.py" %}

```python
sent = input("Have you snapped with your friend for the past 3 days? ")
if sent == "yes":
   print("you snapped with your friend")
elif sent == "no":
   print("you have not snapped with your friend")
received = input("Has your friend snapped with you for the past 3 days? ")
if received == "yes":
   print("your friend snapped with you")
elif received == "no":
   print("your friend has not snapped with you")
if sent == "yes" or received == "yes":
   print("you started a Snapstreak!")
else:
   print("not so friendly yet")
```

{% endcode %}

## Example 3

Hundred emoji.  Ask the user:

* how many days in a row have you sent your friend a message?
* how many days in a row has your friend has sent you a message? &#x20;

If you and your friend have sent a message to each other for more than 100 days in a row, print you receive a hundred emoji.  Otherwise, print not there yet.

{% code title="example3.py" %}

```python
dayssent = int(input("How many days in a row have you sent your friend a message? "))
daysreceived = int(input("How many days in a row has your friend sent you a message? "))
if dayssent >= 100 and daysreceived >= 100:
   print("you receive a hundred emoji")
else:
   print("not there yet")
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.pythonclassroom.com/decisions-if-elif-else/logical-and.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
