# 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 %}
