Dictionaries With Loops
Loops and lists are a perfect pair. Dictionaries and loops are a bit trickier. This is because each dictionary item is made up of two parts - the name of the key and the actual value of that key.Let's set up a looped dictionary.
Using a for loop, like we would with a list, will output the values, but not the keys. Not ideal.
myDictionary = {"name" : "Ian", "health": 219, "strength": 199, "equipped": "Axe"}
for i in myDictionary:
print(myDictionary[i])
myDictionary = {"name" : "Ian", "health": 219, "strength": 199, "equipped": "Axe"}
for value in myDictionary.values():
print(value)
There is a better way!
Here's a loop that will output both key and value.
The .items() function returns the key name and value. Note that I've supplied the loop with two arguments: 'name' and 'value').
This example will just output the names and values using an fString.
myDictionary = {"name" : "Ian", "health": 219, "strength": 199, "equipped": "Axe"}
for name,value in myDictionary.items():
print(f"{name}:{value}")
Let's go one step further and use some if statements inside the loop.
This example makes a comment about the strength key.
myDictionary = {"name" : "Ian", "health": 219, "strength": 199, "equipped": "Axe"}
for name,value in myDictionary.items():
print(f"{name}:{value}")
if (name == "strength"):
print("Whoa, SO STRONG!")
myDictionary = {"name" : "David the Mildy Terrifying", "health": 186, "strength": 4, "equipped":"l33t haxx0r p0werz"}
for name, value in myDictionary.items():
print(f"{name}: {value}")
if (name == "strength"):
if value > 100: # This nested if wasn't indented properly
print("Whoa, SO STRONG")
else:
print("Looks like you skipped leg day, arm day, chest day and, well, gym day entirely bro!")
Coding Challenge
Use a loop to output the names of the keys, ask the user to type in the details and store the input in the dictionary.
Finally, output the whole dictionary (keys and values).
website = {"name": None, "url": None, "desc": None, "rating": None}
for name in website.keys():
website[name] = input(f"{name}: ")
print()
for name, value in website.items():
print(f"{name}: {value}")
Coding Challenge
Ask the user to input the following details: name, type (earth, fire, air, water or spirit), special move, starting HP and starting MP. For now we're just taking in one set of values for one beast.
Output the beast's details.
Check the beast's type and change the color of the text accordingly. Fire is red, water is blue, air is white. You decide on the others.
mokedex = {"Beast Name": None, "Type": None, "Special Move": None, "HP": None, "MP": None}
print("MokéBeast")
print()
for name, value in mokedex.items():
mokedex[name] = input(f"{name}:\t").strip().title()
if mokedex["Type"]=="Earth":
print("\033[32m", end="")
elif mokedex["Type"]=="Air":
print("\033[37m", end="")
elif mokedex["Type"]=="Fire":
print("\033[31m", end="")
elif mokedex["Type"]=="Water":
print("\033[34m", end="")
else:
print("\033[33m", end="")
for name, value in mokedex.items():
print(f"{name:<15}: {value}")
No comments:
Post a Comment