finish part 1 day 3
This commit is contained in:
158
docs/day3.md
158
docs/day3.md
@@ -64,4 +64,160 @@ You saying the names of fruit out loud is funny but not very practical. Instead
|
||||
print(f"fruit {fruit} is at index {index}")
|
||||
```
|
||||
|
||||
with `enumerate` we can capture the position of the item and the item itself in the list.
|
||||
with `enumerate` we can capture the position of the item and the item itself in the list.
|
||||
|
||||
Why is this useful?
|
||||
|
||||
4. We can modify elements in a list if we have their position. Paste the following and press enter:
|
||||
|
||||
```python
|
||||
fruits = ["apple", "banana", "pear"]
|
||||
print(f"Our original list is: {fruits}")
|
||||
```
|
||||
|
||||
Now let's modify our list. Type the following and press enter:
|
||||
|
||||
```python
|
||||
for index, fruit in enumerate(fruits):
|
||||
print(f"fruit {fruit} is at index {index}")
|
||||
if fruits[index] == "apple":
|
||||
fruits[index] = "apricot"
|
||||
print(f"fruit is still {fruit} but {fruits[index]} is at position {index} now")
|
||||
```
|
||||
|
||||
Now paste this:
|
||||
|
||||
```python
|
||||
print(f"Our modified list is: {fruits}")
|
||||
```
|
||||
|
||||
5. We can also loop through the contents of a dictionary. Let's recreate our dictionary from before:
|
||||
|
||||
```python
|
||||
vocabulary = {"apple": "the usually round, red or yellow, edible fruit of a small tree, Malus sylvestris, of the rose family.", "banana": "a tropical plant of the genus Musa, certain species of which are cultivated for their nutritious fruit."}
|
||||
```
|
||||
|
||||
Now we'll loop through the keys in the dictionary:
|
||||
|
||||
```python
|
||||
for word in vocabulary:
|
||||
print(word)
|
||||
```
|
||||
|
||||
We can access any item in the dictionary with its key:
|
||||
|
||||
```python
|
||||
for word in vocabulary:
|
||||
print(vocabulary[word])
|
||||
```
|
||||
|
||||
And we can access both the key and value by using the `items()` function:
|
||||
|
||||
```python
|
||||
for word, definition in vocabulary.items():
|
||||
print(f"{word}: {definition}")
|
||||
```
|
||||
|
||||
6. One common data format you'll run into is a list of dictionaries. You can think of this like spreadsheet columns:
|
||||
|
||||
| first name | last name | age |
|
||||
|-|-|-|
|
||||
| Jim | Fowler | 24 |
|
||||
| Bob | Jones | 36 |
|
||||
| Alice | Appleseed | 52 |
|
||||
|
||||
Behind the scenes this table data might look like:
|
||||
|
||||
```json
|
||||
[
|
||||
{"first name" : "Jim", "last name": "Fowler", "age": 24},
|
||||
{"first name" : "Bob", "last name": "Jones", "age": 36},
|
||||
{"first name" : "Alice", "last name": "Appleseed", "age": 52}
|
||||
]
|
||||
```
|
||||
|
||||
Notice how the headers are copied each time - this is the only way to ensure headers are preserved when translated to this format. This is called "json" and is the current preferred way to send data over the web.
|
||||
|
||||
Let's create this data in Python
|
||||
|
||||
```python
|
||||
people = [
|
||||
{"first name" : "Jim", "last name": "Fowler", "age": 24},
|
||||
{"first name" : "Bob", "last name": "Jones", "age": 36},
|
||||
{"first name" : "Alice", "last name": "Appleseed", "age": 52}
|
||||
]
|
||||
```
|
||||
|
||||
We're building a program that checks each person and lets you know if they're over 30 years old. This is easy with for loops:
|
||||
|
||||
```python
|
||||
for person in people:
|
||||
if person["age"] > 30:
|
||||
print(f"{person['first name']} {person['last name']} is over 30.")
|
||||
```
|
||||
|
||||
7. Another common data format is a dictionary of lists. You can think of this like acceptible responses on a web form:
|
||||
|
||||
The form below has 3 valid states and 4 valid emotions:
|
||||
|
||||
<label>Choose a state:</label>
|
||||
<select>
|
||||
<option>Ohio</option>
|
||||
<option>Virginia</option>
|
||||
<option>Alask</option>
|
||||
</select>
|
||||
|
||||
<label>How you are feeling today:</label>
|
||||
<select>
|
||||
<option>Happy</option>
|
||||
<option>Sad</option>
|
||||
<option>Excited</option>
|
||||
<option>Nope</option>
|
||||
</select>
|
||||
|
||||
These could be represented by the following data:
|
||||
|
||||
```json
|
||||
{
|
||||
"states": ["Ohio", "Virginia", "Alaska"],
|
||||
"emotions": ["Happy", "Sad", "Excited", "Nope"]
|
||||
}
|
||||
```
|
||||
|
||||
Let's add this data to python:
|
||||
|
||||
```python
|
||||
choices = {
|
||||
"states": ["Ohio", "Virginia", "Alaska"],
|
||||
"emotions": ["Happy", "Sad", "Excited", "Nope"]
|
||||
}
|
||||
```
|
||||
|
||||
Now imagine you have to check if someone entered the right answer when filling out the form. Type the following:
|
||||
|
||||
```python
|
||||
state = input("Type the state you live in: ")
|
||||
```
|
||||
|
||||
```python
|
||||
emotion = input("How are you feeling: ")
|
||||
```
|
||||
|
||||
```python
|
||||
if state in choices["states"]:
|
||||
print("Good state")
|
||||
else:
|
||||
print("I don't know where that is.")
|
||||
```
|
||||
|
||||
```python
|
||||
if emotion in choices["emotions"]:
|
||||
print("Same")
|
||||
else:
|
||||
print("Not a valid emotion")
|
||||
```
|
||||
|
||||
### Creating an API
|
||||
|
||||
You've got enough at this point to make a substantial API. Usually we'd write a python script at this point but we're going to build a Django API first this time.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user