---
# System prepended metadata

title: Loops and Conditionals
tags: [PythonFlask2021, Fundamentals, Lesson Notes, Python]

---

###### tags: `Lesson Notes` `Python` `Fundamentals` `PythonFlask2021`

# Loops and Conditionals
If you don't like loops and conditionals sorry, but this is a fact of a programmers life.  It is just something we have to do.  Looping through data and checking to see if something is there or not just happens to be a part of your life now.

## Starter Code:
```
data = [
    {
        "house": "First House", "floors": [
            {
                "floor": "1st Floor", "rooms": [
                    {"room": "Living Room", "contents": ['couch', 'TV', 'painting']}, 
                    {"room": "Kitchen", "contents": ['table', 'chairs', 'stove', 'fridge']}, 
                    {"room": "Bathroom", "contents": ['sink', 'mirror', 'toilet']}
                ]
            }, 
            {
                "floor": "2nd Floor", "rooms": [
                    {"room": "Master Bedroom", "contents": ['bed', 'dresser', 'clothes']}, 
                    {"room": "Kids Room", "contents": ['bed', 'dresser', 'desk', 'clothes']}, 
                    {"room": "Bathroom", "contents": ['tub', 'sink', 'toilet', 'mirror']}
                ]
            }
        ]
    },
    {
        "house": "Second House", "floors": [
            {
                "floor": "1st Floor", "room": [
                    {"room": "Den", "contents": ['Bar', 'Bar Stools', 'TV', 'Couch']},
                    {"room": "Living Room", "contents": ['couch', 'TV', 'rug', 'end tables']}
                ]
            },
            {
                "floor": "2nd Floor", "rooms": [
                    {"room": "Bedroom", "contents": ['bed', 'dresser', 'clothes']},
                    {"room": "Bathroom", "contents": ['sink', 'toilet', 'tub']}
                ]
            }
        ]
    }
]
```

## Loops:
- Ok so we have our starter code that contains data on 2 houses.  So lets start our loop demo by printing just the 2 house names.
```
print(data[0]['house'])
print(data[0]['house'])

# Output:
First House
Second House
```
- Yea ok so that works.  But we needed 2 print statements and had to know how many houses were in our database...this is where loops come in

```
def houseNames(house):
    for h in house:
        print("Printing house names: ", h['house'])

houseNames(data)

# Output:
Printing house names:  First House
Printing house names:  Second House
```
- Ok yes a little more code but now no matter how big our database is we can call this function and get all the house names.  
- So lets print all the house names and floor names

```
def allFloors(data):
    for d in data:
        print("House: ", d['house'])
        for f in d['floors']:
            print("Floors: ", f['floor'])
            
allFloors(data)

# Output:
House:  First House
Floors:  1st Floor
Floors:  2nd Floor
House:  Second House
Floors:  1st Floor
Floors:  2nd Floor
```
- Ok got it.  The key is knowing how to access each item that you want to print.

## Conditionals:
- Ok so day we want to check to make sure the Den is listed in the right house and the right floor?

```
def printDen(data):
    if data[1]['floors'][0]['rooms'][0]['room'] == 'Den':
        print("The Den is at this spot")
    else:
        print('Sorry you did not find the den')

printDen(data)

# Output:
"The Den is at this spot"
```
- Ok but how do we know that worked? Lets leave the path the same but look instead for the living room

```
def printLivingRoom(data):
    if data[1]['floors'][0]['rooms'][0]['room'] == 'Living Room':
        print("You have found the living room")
    else:
        print('Sorry you found a different room')
        
printLivingRoom(data)

# Output:
'Sorry you found a different room'
```
- Not too bad I guess.  

## Combo
- Using the same code lets do a little bit more to it.  Use a loop and conditional.

```
def loopsConditional(data, a):
    for d in data:
        print("Print me the house name please: ", d['house'])
        if d['house'] == a:
            for f in d['floors']:
                print("Floors: ", f['floor'])
        else:
            print('Sorry this is not the house you are looking for')

loopsConditional(data, "Second House")

# Output:
Print me the house name please:  First House
Sorry this is not the house you are looking for
Print me the house name please:  Second House
Floors:  1st Floor
Floors:  2nd Floor
```






# Code Links
- [Loops](https://pythontutor.com/visualize.html#code=data%20%3D%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22house%22%3A%20%22First%20House%22,%20%22floors%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%221st%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Living%20Room%22,%20%22contents%22%3A%20%5B'couch',%20'TV',%20'painting'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Kitchen%22,%20%22contents%22%3A%20%5B'table',%20'chairs',%20'stove',%20'fridge'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'sink',%20'mirror',%20'toilet'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%222nd%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Master%20Bedroom%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'clothes'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Kids%20Room%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'desk',%20'clothes'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'tub',%20'sink',%20'toilet',%20'mirror'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%7D,%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22house%22%3A%20%22Second%20House%22,%20%22floors%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%221st%20Floor%22,%20%22room%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Den%22,%20%22contents%22%3A%20%5B'Bar',%20'Bar%20Stools',%20'TV',%20'Couch'%5D%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Living%20Room%22,%20%22contents%22%3A%20%5B'couch',%20'TV',%20'rug',%20'end%20tables'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%222nd%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bedroom%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'clothes'%5D%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'sink',%20'toilet',%20'tub'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%5D%0A%0Aprint%28data%29%0Aprint%28data%5B0%5D%29%0Aprint%28data%5B0%5D%5B'house'%5D%29%0Aprint%28data%5B1%5D%5B'house'%5D%29%0A%0Adef%20houseNames%28house%29%3A%0A%20%20%20%20for%20h%20in%20house%3A%0A%20%20%20%20%20%20%20%20print%28%22Printing%20house%20names%3A%20%22,%20h%5B'house'%5D%29%0AhouseNames%28data%29%0A%0Adef%20allFloors%28data%29%3A%0A%20%20%20%20for%20d%20in%20data%3A%0A%20%20%20%20%20%20%20%20print%28%22House%3A%20%22,%20d%5B'house'%5D%29%0A%20%20%20%20%20%20%20%20for%20f%20in%20d%5B'floors'%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print%28%22Floors%3A%20%22,%20f%5B'floor'%5D%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%0AallFloors%28data%29%0A%0A&cumulative=false&heapPrimitives=nevernest&mode=edit&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false)
- [Conditionals](https://pythontutor.com/visualize.html#code=data%20%3D%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22house%22%3A%20%22First%20House%22,%20%22floors%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%221st%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Living%20Room%22,%20%22contents%22%3A%20%5B'couch',%20'TV',%20'painting'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Kitchen%22,%20%22contents%22%3A%20%5B'table',%20'chairs',%20'stove',%20'fridge'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'sink',%20'mirror',%20'toilet'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%222nd%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Master%20Bedroom%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'clothes'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Kids%20Room%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'desk',%20'clothes'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'tub',%20'sink',%20'toilet',%20'mirror'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%7D,%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22house%22%3A%20%22Second%20House%22,%20%22floors%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%221st%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Den%22,%20%22contents%22%3A%20%5B'Bar',%20'Bar%20Stools',%20'TV',%20'Couch'%5D%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Living%20Room%22,%20%22contents%22%3A%20%5B'couch',%20'TV',%20'rug',%20'end%20tables'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%222nd%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bedroom%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'clothes'%5D%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'sink',%20'toilet',%20'tub'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%5D%0Aprint%28data%5B1%5D%5B'floors'%5D%5B0%5D%5B'rooms'%5D%5B0%5D%5B'room'%5D%29%0A%0Adef%20printDen%28data%29%3A%0A%20%20%20%20if%20data%5B1%5D%5B'floors'%5D%5B0%5D%5B'rooms'%5D%5B0%5D%5B'room'%5D%20%3D%3D%20'Den'%3A%0A%20%20%20%20%20%20%20%20print%28%22The%20Den%20is%20at%20this%20spot%22%29%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print%28'Sorry%20you%20did%20not%20find%20the%20den'%29%0A%0AprintDen%28data%29%0A%0Adef%20printLivingRoom%28data%29%3A%0A%20%20%20%20if%20data%5B1%5D%5B'floors'%5D%5B0%5D%5B'rooms'%5D%5B0%5D%5B'room'%5D%20%3D%3D%20'Living%20Room'%3A%0A%20%20%20%20%20%20%20%20print%28%22You%20have%20found%20the%20living%20room%22%29%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20print%28'Sorry%20you%20found%20a%20different%20room'%29%0A%20%20%20%20%20%20%20%20%0AprintLivingRoom%28data%29%0A%0A&cumulative=false&heapPrimitives=nevernest&mode=edit&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false)
- [Combo](https://pythontutor.com/visualize.html#code=data%20%3D%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22house%22%3A%20%22First%20House%22,%20%22floors%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%221st%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Living%20Room%22,%20%22contents%22%3A%20%5B'couch',%20'TV',%20'painting'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Kitchen%22,%20%22contents%22%3A%20%5B'table',%20'chairs',%20'stove',%20'fridge'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'sink',%20'mirror',%20'toilet'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%222nd%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Master%20Bedroom%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'clothes'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Kids%20Room%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'desk',%20'clothes'%5D%7D,%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'tub',%20'sink',%20'toilet',%20'mirror'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%7D,%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22house%22%3A%20%22Second%20House%22,%20%22floors%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%221st%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Den%22,%20%22contents%22%3A%20%5B'Bar',%20'Bar%20Stools',%20'TV',%20'Couch'%5D%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Living%20Room%22,%20%22contents%22%3A%20%5B'couch',%20'TV',%20'rug',%20'end%20tables'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22floor%22%3A%20%222nd%20Floor%22,%20%22rooms%22%3A%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bedroom%22,%20%22contents%22%3A%20%5B'bed',%20'dresser',%20'clothes'%5D%7D,%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B%22room%22%3A%20%22Bathroom%22,%20%22contents%22%3A%20%5B'sink',%20'toilet',%20'tub'%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%0A%5D%0A%0Adef%20loopsConditional%28data,%20a%29%3A%0A%20%20%20%20for%20d%20in%20data%3A%0A%20%20%20%20%20%20%20%20print%28%22Print%20me%20the%20house%20name%20please%3A%20%22,%20d%5B'house'%5D%29%0A%20%20%20%20%20%20%20%20if%20d%5B'house'%5D%20%3D%3D%20a%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20f%20in%20d%5B'floors'%5D%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20print%28%22Floors%3A%20%22,%20f%5B'floor'%5D%29%0A%20%20%20%20%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20print%28'Sorry%20this%20is%20not%20the%20house%20you%20are%20looking%20for'%29%0A%0AloopsConditional%28data,%20%22Second%20House%22%29%0A%0A&cumulative=false&heapPrimitives=nevernest&mode=edit&origin=opt-frontend.js&py=3&rawInputLstJSON=%5B%5D&textReferences=false)