Poké-fun
pokebase
, requests
, and PIL
external modules to download and display images of Pokémon.Which Pokémon?
- Create a new Python program and save it as
pokemon_simple.py
. - A function is a named block of code that performs a task. Functions are useful for keeping code organised, and because you can reuse them. Add the following code to create a
fetch_pokemon
function which will prompt the user to enter the name of a pokemon.def fetch_pokemon():
name = input('Which Pokemon do you want to fetch? ')
print("Fetching " + name) - Call (run) the
fetch_pokemon
function by using its name, followed by a pair of round brackets.def fetch_pokemon():
name = input('Which Pokemon do you want to fetch? ')
print("Fetching " + name)
fetch_pokemon() - Run your program, you will be prompted to enter the name of a Pokémon.
Use pokebase to get a Pokémon
Now for the fun part! You are going to usepokebase
to get some information about the Pokémon.pokebase
is a library that provides access to PokéAPI, a Pokémon API. API stands for application programming interface, which is a set of tools for building software applications — in this case, apps to do with Pokémon.You can have a look at the website pokeapi.co to find out more about this particular API, and try out its online version. If you want to find out about the Pokémon Charizard for instance, you could search for pokemon/charizard
.
pokebase
module gives us tools to write a program that does the same thing: to look up different Pokémon and get information about them.You are also going to use the standard webbrowser
module to display an image of the Pokémon you downloaded.- Import the
pokebase
andwebbrowser
modules into your program, at the top of your program:Note: You have used two different methods for importing modules.from pokebase import pokemon
import webbrowserfrom pokebase import pokemon
imports a single function,pokemon
, from thepokebase
module. Thepokemon
function can be called directly by typingpokemon()
.import webbrowser
imports the wholewebbrowser
module. Functions within thewebbrowser
modules will have to be called first using the name of the module, for examplewebbrowser.open()
The choice of which method to use depends on how your intend to use the module and structure your program. There is no right or wrong method. - Modify the
fetch_pokemon
function to use thepokemon
function to download your Pokémon.Thedef fetch_pokemon():
name = input('Which Pokemon do you want to fetch? ')
print("Fetching " + name)
poke = pokemon(name)poke
variable holds all the attributes about your downloaded Pokémon, such as itsweight
,height
, orabilities
. - Use
print
to output some information about your Pokémon:...
poke = pokemon(name)
print(name + " weighs " + str(poke.weight)) - Run your program and enter the name of a Pokémon. If you don’t know any, type in
charizard
.You can use the code
print(dir(poke))
to output a list of all the attributes in thepoke
variable. What other information can you find out about your Pokémon? - Modify the
fetch_pokemon
function to print out thesprites
attributes.Run the code and enter...
poke = pokemon(name)
print(poke.sprites)charizard
when asked for a Pokémon. The data that is printed shows the links to different images of Charizard that the API gives you access to. To check out the images, you can copy and paste the links into a browser.You can use the
webbrowser
module to automatically open one of these images in your web browser. - Add the following code to the bottom of your
fetch_pokemon
function to open thefront_default
sprite URL....
poke = pokemon(name)
webbrowser.open(poke.sprites.front_default)
Save the image using requests and PIL
To save the image on your computer you are going to use:- The
requests
module toget
the data from the URL Image
from thePIL
module to save the data as agif
- Add this code to import the modules at the top of your program.
from requests import get
from PIL import Image
from io import BytesIO - Modify your
fetch_pokemon
function to download the image data using theget
function fromrequests
.At the moment thedef fetch_pokemon():
...
poke = pokemon(name)
pic = get(poke.sprites.front_default).contentpic
is just a bunch of1
s and0
s on your computer, so it needs to be converted into something humans can look at using theio
andPIL
modules. - Add this code to create an
Image
from the image data and save it as a gif file:def fetch_pokemon():
...
pic = get(poke.sprites.front_default).content
image = Image.open(BytesIO(pic))
image.save('poke.gif')
front_default
image from the website and save it in the directory where you saved your Python file. Run the program a few times and enter different Pokémon, for example mewtwo
or pikachu
. After each run open the saved poke.gif
file — the image file gets overwritten each time.How do you think activities like this one could be used to encourage learners to use text-based programming languages? Share your answers in the comments.Scratch to Python: Moving from Block- to Text-based Programming

Our purpose is to transform access to education.
We offer a diverse selection of courses from leading universities and cultural institutions from around the world. These are delivered one step at a time, and are accessible on mobile, tablet and desktop, so you can fit learning around your life.
We believe learning should be an enjoyable, social experience, so our courses offer the opportunity to discuss what you’re learning with others as you go, helping you make fresh discoveries and form new ideas.
You can unlock new opportunities with unlimited access to hundreds of online short courses for a year by subscribing to our Unlimited package. Build your knowledge with top universities and organisations.
Learn more about how FutureLearn is transforming access to education