Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Python 3 pokemon_by_types(db, types): This function accepts a pokemon database d

ID: 3823207 • Letter: P

Question

Python 3

pokemon_by_types(db, types): This function accepts a pokemon database db and a list of strings types. It needs to build and return a new database with only pokemon of the given types. NOTE: you must not change the original database with this function. Database for function:

def db1():
   return {'Bulbasaur':(1,'Grass','Poison',45,49,49,45,1,False),
           'Reshiram':(643,'Dragon','Fire',100,120,100,90,5,True),
           'Charizard':(6,'Fire','Flying',78,84,78,100, 1,False),
           'Charmander':(4,'Fire',None,39,52,43,65,1,False),
           'Tornadus, (Incarnate Form)':(641,'Flying',None,79,115,70,111,5,True)
           }

Example run:>>>(pokemon_by_types(db,["Poison"]) {'Bulbasaur':(1,'Grass','Poison',45,49,49,45,1,False)})

>>>(pokemon_by_types(db1(),["Fire"]) {'Reshiram':(643,'Dragon','Fire',100,120,100,90,5,True),
'Charizard':(6,'Fire','Flying',78,84,78,100, 1,False),
'Charmander':(4,'Fire',None,39,52,43,65,1,False)})

>>>(pokemon_by_types(db1(),["Poison","Dragon"]   {'Reshiram':(643,'Dragon','Fire',100,120,100,90,5,True),
'Bulbasaur':(1,'Grass','Poison',45,49,49,45,1,False)})

>>>(pokemon_by_types(db1(),["Poison","Grass"])   {'Bulbasaur':(1,'Grass','Poison',45,49,49,45,1,False)})

>>>(pokemon_by_types(db1(),["Dark","Water"]), {}

pokemon_by_hp_defense(db, lowest_hp, lowest_defense): Given a pokemon database db and two integers indicating the lowest hit points (hp) and lowest defense stats, this function creates and returns a new database consisting only of pokemon with an hp >= lowest_hp and a defense >= lowest_defense. NOTE: you must not change the original database with this function. Database for function is same as first function.

Example run: >>>pokemon_by_hp_defense(db,100,100) , {'Reshiram':(643,'Dragon','Fire',100,120,100,90,5,True)}, >>>pokemon_by_hp_defense(db1(),30,72),

{'Reshiram':(643,'Dragon','Fire',100,120,100,90,5,True),
'Charizard':(6,'Fire','Flying',78,84,78,100, 1,False)})

>>>(pokemon_by_hp_defense(db1(),50,40),

{'Reshiram':(643,'Dragon','Fire',100,120,100,90,5,True),
'Charizard':(6,'Fire','Flying',78,84,78,100, 1,False),
'Tornadus, (Incarnate Form)':(641,'Flying',None,79,115,70,111,5,True)})

>>>(pokemon_by_hp_defense(db1(),90,120), {}

Explanation / Answer

def pokemon_by_types(db, pok_type):
pokemon_dict = {}
for pokemon in db:
if db[pokemon][1] and (db[pokemon][1] in pok_type) and (not pokemon in pokemon_dict):
pokemon_dict[pokemon] = db[pokemon]
if db[pokemon][2] and (db[pokemon][2] in pok_type) and (not pokemon in pokemon_dict):
pokemon_dict[pokemon] = db[pokemon]
return pokemon_dict

def pokemon_by_hp_defense(db, lowest_hp, lowest_defense):
pokemon_dict = {}
for pokemon in db:
if db[pokemon][3] >= lowest_hp and db[pokemon][5] >= lowest_defense:
pokemon_dict[pokemon] = db[pokemon]
return pokemon_dict

def db1():
return {'Bulbasaur':(1,'Grass','Poison',45,49,49,45,1,False),
'Reshiram':(643,'Dragon','Fire',100,120,100,90,5,True),
'Charizard':(6,'Fire','Flying',78,84,78,100, 1,False),
'Charmander':(4,'Fire',None,39,52,43,65,1,False),
'Tornadus, (Incarnate Form)':(641,'Flying',None,79,115,70,111,5,True)
}
print(pokemon_by_types(db1(),["Fire"]))
print(pokemon_by_types(db1(),["Poison","Dragon"]))
print(pokemon_by_types(db1(),["Poison","Grass"]))
print(pokemon_by_types(db1(),["Dark","Water"]))

print(pokemon_by_hp_defense(db1(),100,100))
print(pokemon_by_hp_defense(db1(),50,40))
print(pokemon_by_hp_defense(db1(),90,120))

# pastebin link: https://pastebin.com/xzEHbt1B