Você está na página 1de 226

C 0m Uter

p
CoDing
O R K I D S
F

A UNIQUE STEP-BY-STEP VISUAL GUIDE,


E,
FROM BINARY CODE TO BUILDING GAMES
MES
CAROL VORDERMAN
C 0m Uter
p
CoDing
O R K I D S
F
C 0m Uter
p
CoDing
O R K I D S
F

A UNIQUE STEP-BY-STEP VISUAL GUIDE,


FROM BINARY CODE TO BUILDING GAMES
LONDON, NEW YORK, MELBOURNE,
MUNICH, AND DELHI

DK LONDON
Editor Sam Priddy
Designer Fiona Macdonald
Additional editors Sam Atkinson,
Lizzie Davey, Daniel Mills, Ben Morgan
Additional designer Simon Murrell
Managing editor Paula Regan
Managing art editor Owen Peyton Jones
Senior producer, pre-production Ben Marcus
Senior producer Mary Slater
Jacket editor Maud Whatley
Jacket designer Laura Brim
Jacket design development manager Sophia MTT
Publisher Sarah Larter
Art director Phil Ormerod
Associate publishing director Liz Wheeler
Publishing director Jonathan Metcalf

DK INDIA
Senior art editor Devika Dwarkadas
Editors Suefa Lee, Neha Pande
Art editors Sanjay Chauhan,
Shreya Anand Virmani
Assistant art editor Vanya Mittal
DTP designer Sachin Gupta
Managing editor Rohan Sinha
Deputy managing art editor Sudakshina Basu
Pre-production manager Balwant Singh
Jacket designer Suhita Dharamjit
Senior DTP designer Harish Aggarwal

First published in Great Britain in 2014 by Dorling Kindersley Limited


80 Strand, London WC2R 0RL
A Penguin Random House Company
Copyright 2014 Dorling Kindersley Limited
2 4 6 8 10 9 7 5 3 1
001 192672 Jun/2014
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or
transmitted in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise,
without prior written permission of the copyright owner.

A CIP catalogue record for this book is available from the British Library.
ISBN: 978-1-4093-4701-9

Printed and bound in China by South China Printing Company.

See our complete catalogue at


www.dk.com
CAROL VORDERMAN MACANTAB, MBE is one of Britains best-loved TV presenters
and is renowned for her skills in mathematics. She has a degree in Engineering from the
Univerisity of Cambridge. Carol has a keen interest in coding, and feels strongly that
every child should have the chance to learn such a valuable skill. She has hosted
numerous TV shows on science and technology, such as Tomorrows World and How 2,
as well as as The Pride of Britain Awards, on the BBC, ITV, and Channel 4. Whether
co-hosting Channel 4s Countdown for 26 years, becoming the second best selling
female non-fiction author of the noughties decade in the UK, or advising British Prime
Minister David Cameron on the future of potential mathematics education in the UK,
Carol has a passion and devotion to explaining mathematics, science, and technology
in an exciting and easily understandable way.

DR JON WOODCOCK MA(OXON) has a degree in Physics from the University of Oxford
and a PhD in Computational Astrophysics from the University of London. He started
coding at the age of eight and has programmed all kinds of computers from single-chip
microcontrollers to world-class supercomputers. His many projects include giant space
simulations, research in high-tech companies, and intelligent robots made from junk.
Jon has a passion for science and technology education, giving talks on space and
running computer programming clubs in schools. He has worked on numerous science
and technology books as a contributor and consultant.

SEAN MCMANUS learned to program when he was nine. His first programming
language was Logo. Today he is an expert technology author and journalist. His other
books include Scratch Programming in Easy Steps, Web Design in Easy Steps, and Raspberry
Pi For Dummies. Visit his website at www.sean.co.uk for Scratch games and tutorials.

CRAIG STEELE is a specialist in Computing Science education. He is Project Manager


for CoderDojo Scotland, which runs free coding clubs for young people. Craig has
previously worked for the Scottish Qualification Authority, Glasgow Science Centre,
and the University of Glasgow. Craigs first computer was a ZX Spectrum.

CLAIRE QUIGLEY studied Computing Science at Glasgow University where she obtained
a BSc and a PhD. She has worked in the Computer Laboratory at Cambridge University
and on a project that aimed to develop computational thinking skills in primary school
pupils. She is a mentor at Coderdojo Scotland, a coding club for young people.

DANIEL MCCAFFERTY holds a degree in Computer Science from the University of


Strathclyde. Since graduating, he has been developing software for some of the worlds
largest investment banks. In his spare time, Daniel is a mentor at CoderDojo Scotland,
a coding club for young people.
Contents
8 F O R E W O R D b y C a ro l Vo rd e r m a n
10 HOW THIS BOOK WORKS

WHAT IS CODING? 64 Decisions and branches


66 Sensing and detecting
14 What is a computer program? 68 Complex loops
16 Thinking like a computer 70 Sending messages
18 Becoming a coder 72 Creating blocks
74 Project 3: Monkey mayhem

STARTING FROM SCRATCH 82 Time to experiment

22 What is Scratch? PLAYING WITH PYTHON


24 Installing Scratch
26 Scratch interface 86 What is Python?
28 Sprites 88 Installing Python
30 Coloured blocks and scripts 92 Introducing IDLE
32 Project 1: Escape the dragon! 94 Errors
38 Making things moves 96 Project 4: Ghost game
40 Costumes 98 Ghost game decoded
42 Hide and seek 100 Program ow
44 Events 102 Simple commands
46 Simple loops 104 Harder commands
48 Pens and turtles 106 Which window?
50 Variables 108 Variables in Python
52 Maths 110 Types of data
54 Strings and lists 112 Maths in Python
56 Co-ordinates 114 Strings in Python
58 Make some noise 116 Input and output
60 Project 2: Roll the dice 118 Making decisions
62 True or false? 120 Branching
122 Loops in Python 188 Processors and memory
124 While loops 190 Essential programs
126 Escaping loops 192 Storing data in les
128 Lists 194 The Internet
130 Functions
132 Project 5: Silly sentences PROGRAMMING IN THE
134 Tuples and dictionaries REAL WORLD
136 Lists in variables
138 Variables and functions 198 Computer languages
140 Project 6: Drawing machine 200 Coding stars
148 Bugs and debugging 202 Busy programs
150 Algorithms 204 Computer games
152 Libraries 206 Making apps
154 Making windows 208 Programming for the Internet
156 Colour and co-ordinates 210 Using JavaScript
158 Making shapes 212 Bad programs
160 Changing things 214 Mini computers
162 Reacting to events 216 Becoming a master programmer
164 Project 7: Bubble blaster
176 What next? 218 Glossary
220 Index

INSIDE COMPUTERS 224 Acknowledgements

180 Inside a computer


182 Binary and bases
184 Symbols and codes Find out more at:
186 Logic gates www.dk.com/computercoding
Foreword

Just a few years ago, computer coding seemed like a mysterious skill that
could only be practised by specialists. To many people, the idea that coding
could be fun was a strange one. But then the world changed. In the space
of a few years, the Internet, email, social networks, smartphones, and
apps hit us like a tornado, transforming the way we live.

Computers are a huge part of life that we all now take for granted. Instead
of calling someone on the phone, we send a text message or use social
media. From shopping and entertainment to news and games, we guzzle
on everything computers have to offer. But we can do more than just use
this technology, we can create it. If we can learn to code, we can make our
own digital masterpieces.

Everything computers do is controlled by lines of code that someone has


typed out on a keyboard. It might look like a foreign language, but its a
language anybody can pick up quite quickly. Many would argue that coding
has become one of the most important skills you can learn in the 21st century.
Learning to code is tremendous fun as you can get instant results, no matter
how much more you have to learn. In fact, its such fun creating games and
programs that it feels effortless once youre hooked. Its also creative
perhaps the first science that combines art, logic, storytelling, and business.

Not only that, coding is a fantastic skill for life. It strengthens logical thinking
and problem-solving skills vital in many different areas of life, from science
and engineering to medicine and law. The number of jobs that require coding
is set to increase dramatically in the future, and theres already a shortage of
good coders. Learn to code, and the digital world is yours for the taking!

CAROL VORDERMAN
10

How this book works


This book introduces all the essential 170 P L AY I N G W I T H P Y T

concepts needed to understand computer BUBBLE BLASTER


coding. Fun projects throughout put these Working out the distance
Pixel people give
ideas into practice. Everything is broken down hints and tips along In this game, and lots of others, it is
between two objects. Heres how to
into small chunks so that its easy to follow the way formula to have the computer work

and understand. 11
This function calculates the distance be
two objects. Add this bit of code direct
the code you wrote in step 9.

from math import sqrt


Each topic is def distance(id1, id2):
described in detail, See also boxes list x1, y1 = get_coords(id
with examples other subjects that are x2, y2 = get_coords(id
and exercises linked to the topic return sqrt((x2 - x1)*

42 S TA R T I N G F R O M S C R AT C H

Choose the type


Sizes and effects
Hide and seek SEE ALSO

3839 Making
things move
Scripts can be used to change the size of a
sprite and add special effects to it.
from the dr
menu. The
effect makes
becom
Welcome to the special effects studio! Using the purple
Looks blocks, find out how to make sprites vanish and
Sending 7071
messages
Type in positive numbers
to make sprites bigger
reappear, grow and shrink, and fade in and out. and negative numbers
change size by 10 to make them smaller change

Use the hide block


Hiding sprites to make sprites
disappear in games Higher numbers make set co
To make a sprite disappear, use the hide block. The sprites bigger and
lower numbers make
sprite is still on the stage, and it can still move around, them smaller. 100 is
but it cant be seen unless the show block is used to set size to 100 % normal size clear gr
make it visible again.
Changing a sprites size Resets all Addin
These two blocks can be used to the effects The grap
make a sprite bigger or smaller, used to c
Hide and show either by a set amount or by a or distort
Colourful To make a sprite vanish, use the hide hide percentage of its size. experime
illustrations block. When youre ready for it to be
seen again, use the show block.
highlight These blocks are found in the Looks
show Using effects to teleport
section of the blocks palette. Y
different Add a ghost sprite from the Fantasy category
of the sprite library, and create the script shown
programming below. It makes the ghost appear to teleport
Disappearing cat
concepts Try this script using the cat sprite. It when clicked.
disappears and reappears but it keeps
moving, even when you cant see it. EXPERT TIPS
Showing sprites The ghost effect makes the
when this sprite clicked fade slightly; by repeating th
when clicked Select a sprite in the sprite list. block 20 times the sprite fad
clear graphic effects away completely
Click the i button on it to open
Programming forever the information panel. There you This Opera
This block hides can also use the show tick box repeat 20 selects a ra
scripts and wait 1 secs the cat to show or hide a sprite. horizontal
change ghost effect by 5
code are hide
This block rotates
explained line turn 90 degrees the cat clockwise Sprite1

by line move 100 steps


x: 84 y: -69
rotation style:
direction: -90 glide 0.1 secs to x: pick random -150 to 150 y: pic

The cat still moves can drag in player: repeat 20


wait 1 secs show:
even when hidden
change ghost effect by -5
show
This block shows Show a
the cat again hidden sprite Using this block makes the
sprite fade back in

Instructions show what Labels help explain


to click, drag, or select each step
HOW THIS BOOK WORKS 11
Seven projects build up Simple step-by-step
coding skills. Project pages are instructions guide you
highlighted with a blue band through each project

THON BUBBLE BLASTER 171

Each line of
Now update the main game loop to use the
e between points 13 functions you have just created. Remember that
code is clearly
s useful to know the distance the order is important, so make sure you put labelled so
o use a well-known mathematical everything in the right place. Then run the code.
k it out. Bubbles should burst when they hit the sub. you cant
Check the shell window to see the score.
go wrong
etween
score = 0
ly after
Loads the sqrt function #MAIN GAME LOOP Sets the score to zero
from the Math library when the game starts
while True:
Creates new bubbles
Gets the position of if randint(1, BUB_CHANCE) == 1:
the first object
create_bubble()
d1) Gets the position of
the second object
Gives back the distance
move_bubbles() Adds the bubble
d2) between them score to the total
clean_up_bubs()
**2 + (y2 - y1)**2)
score += collision()
print(score)
window.update() Shows the score in the shell
window it will be displayed
H I D E Big
g bubbles. A N bubbles
D SEEK 43 sleep(0.01) properly later

oints. The next section of This pauses the action for


eisofpopped
effect by using its a very short time try
rop-down Change the removing this and see
epixelate
to the edge). numbers in the what happens
the sprite Collision
blocks to set sensing
me blurred how
If thestrong
distance between
sh the
theeffect
centre is of the sub and the centre
pop of a bubble is less than their radiuses EXPERT TIPS
added together, they have collided.
pixelate effect by 25 Python shortcut Dont forget to
save your work This icon
e keeps This loop goes through the entire list
nts scored of bubbles (it goes backwards to The code score += collision() indicates that
lor effect to 0avoid errors when deleting bubbles) Checks for collisions is a shortcut for writing
between the sub score = score + collision(). It adds the project
bub_id)-1, -1, -1): and any bubbles
Each colour is the collision score to the total continues on
bub_id[bub]) represented
id2, effects
raphic < (SHIP_R by a + bub_r[bub]): score, then updates the total score.
number. Change
the number to
Code like this is common, so a the next page
b_r[bub] + bub_speed[bub]) shortcut is useful. You can also do
ng graphic effects set the colour
b) Calculates the number of the same thing using the
hic effects inDeletes
Scratch can be
the bubble points this bubble is worth symbol. For example, score = 10
hange a sprites appearance and adds it to points
t its shape. Theyre fun to
is the same as score = score 10.
ck the
ent with.
of points

Youll never know where


Ill appear next!

Boxes give extra


information: tips,
definitions, and things
e sprite
his
to remember EXPERT TIPS
des

ators block
ndom
When to save
This block
position selects a random
vertical position
Read on and
This save icon appears
ck random -150 to 150
get coding! on the project spreads. It
reminds you when to save
This block makes the the work youve done,
ghost move slowly,
hidden from view so that nothing is lost if
the computer crashes.
Remember to always save
Dont forget to
your work frequently. save your work
What is
coding?
14 W H AT I S C O M P U T E R C O D I N G ?

What is a computer SEE ALSO


Thinking like 1617
a computer

program? Becoming 1819
a coder

A computer program is a set of instructions that a
computer follows to complete a task. Coding, or
programming, means writing the step-by-step
instructions that tell the computer what to do.

Computer programs are everywhere


We are surrounded by computer programs. Many of
the devices and gadgets we use each day are controlled
by them. These machines all follow step-by-step
instructions written by a computer programmer.

Mobile phones Computer software


Programs allow you to make a Everything a computer does, from
phone call or send text messages. browsing the Internet to writing
When you search for a contact, documents or playing music, works
a program finds the correct because of code written by a
phone number. computer programmer.

Games
Consoles are just another type of
computer, and all the games that
run on them are programs. All the
graphics, sounds, and controls
are written in computer code.

Cars
In some cars, computer
programs monitor the
speed, temperature,
Washing machines and amount of fuel in
Washing machines are programmed the tank. Computer
to follow different cycles. Computer programs can even help
code controls how hot the water is control the brakes
and how long the wash takes. to keep people safe.
W H AT I S A C O M P U T E R P R O G R A M ? 15
How computer programs work
Computers might seem very smart, but they are actually just
boxes that follow instructions very quickly and accurately. As
intelligent humans, we can get them to carry out different tasks
by writing programs, or lists of instructions.

Computers cant think


1 A computer wont do
anything by itself. Its up to
Write a program
the computer programmer
to give it instructions.
2 You can tell a computer what to
do by writing a set of very detailed
instructions called a program. Each
instruction has to be small enough that
the computer can understand it. If the
Without instructions a instructions are incorrect, the computer
computer is clueless
This is a computer wont behave the way you want it to.
program counting
down to launch
for count in range(10, 0, -1):
print(Counting down, count)
Programming languages
3 Computers can only follow
instructions in a language they
understand. Its up to the
programmer to choose which
language is best for the task.

for count in range(10, 0, -1):


All programs are finally
print(Counting down, count) converted into binary code,
a basic computer language
that uses only ones and zeroes

LINGO
Hardware and software
Hardware means the physical
parts of the computer that you can
see or touch (all the wires, the

BLAST OFF! circuits, the keyboard, the display


screen, and so on). Software
means the programs that run
on the computer and control how
it works. Software and hardware
work together to make computers
do useful things.
16 W H AT I S C O D I N G ?

Think like a computer SEE ALSO

1415 What is a
computer program?
A programmer must learn to think like a computer. All
tasks must be broken down into small chunks so they
Becoming 1819
a coder

are easy to follow, and impossible to get wrong.

Thinking like a robot LINGO


Imagine a caf where the waiter is a robot. The robot has a Algorithm
simple computer brain, and needs to be told how to get
from the caf kitchen to serve food to diners seated at An algorithm is a set of simple
instructions for performing a task.
tables. First the process has to be broken down into
A program is an algorithm that has
simple tasks the computer can understand. been translated into a language
that computers can understand.

Waiter robot program 1


1 Using this program the robot grabs the food from
the plate, crashes straight through the kitchen wall
into the dining area, and puts the food on the floor.
Disaster!
This algorithm wasnt detailed enough.
The instructions
werent clear: we
1. Pick up food forgot to tell the
robot to use the door.
2. Move from kitchen to diners table It might seem obvious
to humans but
3. Put food down computers cant think
for themselves.

Waiter robot program 2


2 This time weve told the robot waiter to use the
kitchen door. It makes it through the door, but then hits
the caf cat, trips, and smashes the plate on the floor.

1. Pick up a plate with food on it


2. Move from kitchen to diners table by:
Move to door between kitchen and dining area
Still not perfect
Move from door to the table The robot doesnt know how to deal with
obstacles like the cat. The program needs
3. Put plate down on the table in front of the diner to give the robot even more detailed
instructions so it can move around safely.
THINK LIKE A COMPUTER 17
Waiter robot program 3
3 In this version of the program, the robot successfully
delivers the food to the diner avoiding any obstacles. But
after putting the plate down, the robot remains standing
at the table while food piles up in the kitchen.

1. Pick up a plate with food on it holding it level at all times


2. Move from kitchen to diners table by:
Move to door between kitchen and dining area
checking for obstacles and steering around them
Move from door to the table
Success at last?
checking for obstacles and steering around them Finally the robot can deliver the
food safely. But we forgot to give
it instructions to go back to the
3. Put plate down on the table in front of the diner kitchen and get the next plate.

Real-world example
The waiter robot might be imaginary, but algorithms like
this are in action all around us. For example, a computer-
controlled lift faces the same sort of problems. Should it
go up or down? Which floor should it go to next?

1. Wait until doors are closed


2. Wait for button to be pressed
If button pressed is higher than current floor:
Move lift upwards
If button pressed is lower than current floor: Lift program
For the lift to work correctly
Move lift downwards and safely, every step has
to be precise, clear, and
3. Wait until current floor equals button pressed cover every possibility.
The programmers have to
4. Open doors make sure they create a
suitable algorithm.
18 W H AT I S C O D I N G ?

Becoming a coder SEE ALSO


What is 2223
Scratch?

Coders are the people who write the programs behind
everything we see and do on a computer. You can create
What is 8687
Python?

your own programs by learning a programming language.

Programming languages
There are a huge range of programming languages to choose
from. Each one can be used for different tasks. Here are some of
the most popular languages and what they are often used for:

A powerful language for building Ideal for programs that need to


C computer operating systems. MATLAB carry out lots of calculations.

Used to control spacecraft, Automatically turns lots of


Ada satellites, and aeroplanes. Ruby information into web pages.

Works on computers, mobile A language used to build


Java phones, and tablets. Javascript interactive websites.

A visual language thats ideal A text-based language that can


for learning programming. be used to build all kinds of
Scratch This is the first language Python things. Its the second language
covered in this book. covered in this book.

What is Scratch? SCRATCH


Untitled
by abcd (unshared)
File Edit Tips ?

Scripts Costumes Sounds

Scratch is a great way to start Motion


Looks
Sound
Events
Control
Sensing x: -126

coding. Programs are created Pen


Data
Operators
More Blocks
y: 96

by connecting together blocks


when clicked

forever
move 10 steps
go to mouse pointer

of code, instead of typing it out. turn

turn
15 degrees

15 degrees
move 10 steps

Scratch is quick and easy to use, point in direction 90


forever

point towards

and also teaches you the key


next costume

play sound bubbles until done


go to x: 0 y: 0

ideas you need to use other Sprites New sprite:


x: 153 y: -61
go to mouse pointer

glide 1 secs to x: 0 y: 0

programming languages.
Stage
1 backdrop Sprite 1 Sprite 2

New backdrop:

Backpack

The program appears on Code is made by connecting


this side of the screen coloured blocks together
BECOMING A CODER 19
What is Python? IDLE File Edit Shell Debug Window Help
People around the world use ghostgame
Python to build games, tools, # Ghost Game
and websites. Its a great
from random import randint
language to master as it can help
you build all kinds of different print(Ghost Game)
programs. Python looks like a feeling_brave = True
mixture of recognizable words score = 0
and characters, so it can be easily
while feeling_brave:
read and understood by humans.
ghost_door = randint(1, 3)
A program written
print(Three doors ahead...)
in Python

Getting started
Its time to start programming. All you need
is a computer with an Internet connection.
This book starts with Scratch the perfect
language to help you on your way to
becoming a coding expert. Get ready to jump
into the exciting world of computer coding.

EXPERT TIPS
Enjoy experimenting
As a programmer you should
experiment with the code and
programs you make. One of the
best ways to learn programming
is to play about and see what
happens when you change
different parts of the code. By
tinkering and fiddling, youll
discover new ways of doing
things. Youll learn much more
about computer programming
and have even more fun.
Starting
from Scratch
22 S TA R T I N G F R O M S C R AT C H

What is Scratch? SEE ALSO


Installing and 2425
launching Scratch

Scratch is a visual programming language that
makes coding simple. It can be used to make all
Scratch 2627
interface

sorts of fun and interesting programs. Coloured blocks 3031
and scripts

Understanding Scratch
Scratch is perfect for making games and animations.
It has large collections (or libraries) of cool graphics Blocks lock
together like
and sounds that you can play around with. jigsaw pieces

Start programming Put together


1 Scratch is a programming language. 2 programming blocks
Theres not much typing, and its easy Scratch uses coloured blocks of
to get started. code. Blocks are selected and
joined together to make a script,
which is a set of instructions.
Write your
first program
in Scratch!

LINGO
Why is it called Scratch?
Scratching is a way of mixing
different sounds to make new
music. The Scratch programming
language enables you to mix
Make sprites move and speak pictures, sounds, and scripts to
3 Objects such as people, vehicles, Sprites like me can be
programmed to talk
make new computer programs.
and animals can be added to a program. in speech bubbles.
These objects are called sprites. Scripts
make them move and speak.

Sprites can be
programmed
to walk, run,
and dance
W H AT I S S C R AT C H ? 23
A typical Scratch program
Here is an example of a Scratch program. All of the action
takes place in an area on the screen called the stage. The red button
stops a program
Background images and sprites can be added to the stage,
and you can write scripts to make things happen. The green flag
runs a program

Running a program
Untitled
Starting a program is
by abcd (unshared)
called running it. To
run a program in Scratch,
click the green flag above
the stage.

Background image

Adding a script makes


the shark sprite move

Several sprites can be


on the stage at once

Scripts make
REMEMBER
sprites move
when clicked
Scratch contains blocks Scratch programs
that can be used to make forever
scripts. This script makes In Scratch, when you save your
the shark bounce around next costume work it is called a project. A
the screen. The next project includes all the sprites,
costume block makes it wait 0.25 secs backgrounds, sounds, and scripts
open and close its mouth youre working with. When you
with each movement. move 10 steps load a project again later,
everything will be where it was
if on edge, bounce
The forever block when you saved it. A Scratch
keeps the sprite project is a computer program.
moving endlessly
24 S TA R T I N G F R O M S C R AT C H

Installing and REMEMBER


Scratch website
launching Scratch Find the Scratch website at:
http://scratch.mit.edu/
To start programming in Scratch, you need to
have the Scratch software. It can be installed
on a computer, or it can be used online.

Create a Scratch account


A Scratch account can be used to share the programs you
make on the Scratch website. Its also used to save work
online. Visit the Scratch website at: http://scratch.mit.edu/
and click Join Scratch to create your account.

Getting started
The way Scratch is
set up depends on
whether its used over
the Internet (online)
or from downloaded
software (offline).

1 Set-up 2 Launching Scratch

Visit http://scratch.mit.edu and click


Once youve joined the Scratch website,
Join Scratch. Fill in the form to create a
click Sign in, and enter your username
username and password. Make sure you
and password. Click Create at the top of
get permission from your parent or carer
the screen to begin a new program.
Online to join the website.

Download the software version of


Scratch at: http://scratch.mit.edu/ Double-click the icon on the desktop
scratch2download/. Run the installation and Scratch will start, ready to begin
program and a Scratch icon will appear programming.
Offline on your desktop.
I N S TA L L I N G A N D L A U N C H I N G S C R AT C H 25
EXPERT TIPS Different versions of Scratch
Mouse control This book uses Scratch 2.0, the latest version of
Scratch. Use this version if possible. An older
The click instruction means press version will differ slightly.
the left mouse button if there is
more than one. Right-click means
use the right mouse button. If a
mouse only has one button, hold
the CTRL key on the keyboard
and press the mouse button to
perform a right-click.

Scratch 1.4 Scratch 2.0


The older version of Scratch The latest version of Scratch has
has the stage on the right of some new commands and the
the screen. stage is on the left of the screen.

3 Saving work 4 Operating systems

When youre logged in, Scratch The web version of Scratch works well on
automatically saves work for you. To find Windows, Ubuntu, and Mac computers. It
your work, click your username at the top needs Adobe Flash software, though, so Ready?
right of the screen and click My Stuff. it wont work on some tablets. Lets go!

The offline version of Scratch works well on


Click the File menu at the top of the
Windows and Mac computers. It doesnt work
screen and choose Save As. Ask the
well on computers that use Ubuntu. If a
person who owns the computer where
computer uses Ubuntu, try the online
you should save your work.
version instead.
26 S TA R T I N G F R O M S C R AT C H

Experiment
Scratch interface Click the buttons and tabs to
explore and experiment with
the Scratch interface. The
This is Scratchs screen layout, or interface. projects that follow explain
The stage is on the left and programs are how to use them.
created on the right.
Click for full Change Menu Cursor
screen view language options tools

EXPERT TIPS SCRATCH File Edit Tips ?


Menu and tools
Untitled
MENU OPTIONS by abcd (unshared)
This is what the menu options
at the top of the screen do. Program
name box
Save work or start
File
a new project.

Undo any mistakes or


Edit
change the stage size. Click a sprite on the
stage or in the sprite
If you get stuck, find list to select it
Tips
help here.

CURSOR TOOLS
Click on the tool you want to use,
and then click on the sprite or
script that you want to use it on.
Copy a sprite or script.

x: 153 y: -61

Delete a sprite or script. Sprites New sprite:

Enlarge a sprite.

Stage
1 backdrop Sprite 1 Sprite 2 Sprite 3
Shrink a sprite.
New backdrop:

Get help on a block.


? Buttons to change Blue box around Buttons to add
the background the selected sprite new sprites
S C R AT C H I N T E R FA C E 27
Scratch map
The stage is where
programs run. Sprites are
Sounds tab managed in the sprite list S TA G E A R E A B LO C K S SCRIPTS
and script blocks can be PA L E T T E AREA
found in the blocks
Costumes tab palette. Build scripts in
the scripts area.
SPRITE LIST
Scripts tab
S TA G E L I S T B A C K PA C K

Scripts Costumes Sounds

Motion Events
Looks Control Select different Current
types of blocks sprite
Sound Sensing x: -126 selected
y: 96
Pen Operators
Data More Blocks
when clicked
Position
forever of the
move 10 steps
current
go to mouse-pointer
sprite on
turn 15 degrees move 10 steps the stage
Blocks snap
turn 15 degrees
together use the
mouse to move
point in direction 90 them around
forever

point towards next costume

play sound hoot until done


go to x: 0 y: 0

go to mouse-pointer

These scripts control


glide 1 secs to x: 0 y: 0
the owl sprite

Backpack

Drag blocks from here


into the scripts area to Build Store scripts, sprites, sounds Zoom in
make scripts scripts here and costumes in the backpack on scripts
28 S TA R T I N G F R O M S C R AT C H

Sprites SEE ALSO

2627 Scratch
interface
Sprites are the basic components of Scratch. Every Scratch
program is made up of sprites and the scripts that control
Costumes 4041
them. The Escape the dragon! program on pages 3237
Hide and seek 4243
uses the cat, dragon, and donut sprites.

What can sprites do?


Sprites are the images on the stage. Scripts are programmed We can make lots
to make them do things. Sprites can be instructed to react to of different sounds.

other sprites and the user of the program. Here are a few
things sprites can do:

Move around the stage React when they touch things

Change their appearance Be controlled by the user

Play sounds and music Talk in speech bubbles

Sprites in the Scratch interface


Each project can have several sprites, and each one can have its The scripts being
own scripts. Its important to add scripts to the correct sprite, shown belong to the
and to know how to switch between them. sprite shown here

SCRATCH File Edit Tips ?

Untitled Scripts Costumes Sounds


by abcd (unshared)

Motion Events
Looks Control
Sound Sensing x: -126
y: 96
Pen Operators
Data More Blocks
when clicked

forever
move 10 steps
go to mouse-pointer
turn 15 degrees move 10 steps

turn 15 degrees

Select different point in direction 90


forever
sprites by clicking point towards next costume

on them go to x: 0 y: 0
play sound pop until done

x: 153 y: -61
go to mouse-pointer
Sprites New sprite:
glide 1 secs to x: 0 y: 0

Sprites and scripts


A project can have lots Stage
1 backdrop Sprite 1 Sprite 2 Sprite 3

of sprites, and each sprite New backdrop:

Backpack
can have lots of scripts.
SPRITES 29
Creating and editing sprites
Games are more exciting when there are more sprites
to hit, dodge, or chase each other around the stage.
Its simple to create, copy, and delete sprites.

Create a sprite Copy or delete a sprite


Use the buttons above the sprite list to To copy a sprite and its scripts, right-click
add or create a sprite for your program. on it in the sprite list and choose duplicate.

New sprite: Sprites This option


copies a sprite
Use your
Choose from webcam
the library duplicate
Select a picture
from your computer delete
Create a Sprite 1 Sprite 2
new sprite save to local file
This option
deletes a sprite hide

Select the sprite


Naming a sprite 1 Select a sprite in the sprite list, and then
When you start a new program in click on the blue i button in the corner.
Scratch the cat sprite is called Sprite1.
The blue i
Its easier to write programs if you give Sprites button
your sprites more meaningful names.
It also makes it easier to understand
and manage scripts.

Sprite 1 Sprite 2 Sprite 3

Change the name Renamed sprite


2 When the information panel opens, 3 Click the blue arrow to the left of
click on the text box and use the keyboard Type the the sprite to close the information panel.
to change the name of the sprite. sprites new
name here

The sprites
Spike new name
x: 84 y: -69 direction: -90 appears in
rotation style: the sprite list
can drag in player:
show: Spike
30 S TA R T I N G F R O M S C R AT C H

Coloured blocks SEE ALSO

2627 Scratch
interface

and scripts Escape the 32-37


dragon!

Blocks are colour-coded depending on what they do.
Putting them together builds scripts that run in the
order in which they are placed.

Coloured blocks Scripts Costumes Sounds


There are ten different types of blocks in
Scratch. Switch between them using the Motion Events
buttons in the blocks palette. Click on a Looks Control
colour to see all the blocks in that section. Sound Sensing
Pen Operators
Data More Blocks
Button to show the
orange Data blocks

Functions of blocks
Different types of blocks do different things Motion, looks, sound, and pen
in programs. Some of them make sprites These blocks control what a sprite does on
screen this is called the output of a program.
move, some manage sounds, and some
Pick a sprite and try each block to see what it does.
decide when things happen.
This block
Events and sensing turn 15 degrees rotates the
Brown Events blocks make things sprite
happen. Light blue Sensing blocks
detect information about the keyboard,
mouse, and what a sprite is touching. think Hmm... for 2 secs
This block
shows a
thought
when clicked bubble
Detects when play sound meow
the green flag This block
is clicked plays a sound
recording
key space pressed? pen down
Checks whether This block draws a line
the spacebar as a sprite moves
is pressed
COLOURED BLOCKS AND SCRIPTS 31
Data and operators Control
Orange Data blocks and green The Control blocks make decisions about
Operators blocks store numbers when blocks run. They can be programmed
and words and do things with them. to repeat instructions.

Stores a number
in a variable
set age to 10 forever
This makes the
Chooses a blocks inside it run
random number on loop (forever)
pick random 1 to 10

Flow of scripts
When a program runs, Scratch carries out the
instructions on the blocks. It starts at the top
of the scripts and works its way down.

The thoughtful cat


when clicked
When this script is used with the cat sprite,
wait 2 secs the cat will wait 2 seconds, think for a
moment, pause 1 second, and then move.
think Hmm... for 2 secs

wait 1 secs Programs run


from top REMEMBER
to bottom
move 100 steps Stopping scripts
This instruction
is run last To stop all scripts in a program
that are running, click the red stop
button above the stage. Its shaped
Running scripts like a hexagon. Youll find it beside
When a script is running, it glows. Use the green the green flag button used to start
your program.
flag button on the stage to run a script or click
a script or a block to make it run. Untitled
The glowing outline
means this script by abcd (unshared)

is running
when clicked Press this
button to stop a
wait 2 secs program

think Hmm... for 2 secs

wait 2 secs Testing scripts


Test whether a script is
move 100 steps working properly by
clicking on it.
32 S TA R T I N G F R O M S C R AT C H

PROJECT 1

Escape the dragon! SEE ALSO

24-25 Installing and


launching Scratch
This project introduces some basic Scratch
coding. It shows how to make a game to help
2627 Scratch
interface
the cat sprite dodge a fire-breathing dragon.
Blocks palette Control button

Make the cat move Scripts Costumes Sounds


This stage explains how to make the cat sprite
move around and chase the mouse-pointer. Motion Events
Follow the instructions carefully, otherwise Looks Control
the game might not work. Sound Sensing
Pen Operators
Open Scratch. Click File on Click the yellow
Data More Blocks
1 the menu and select New to 2 Control button in
start a new project. The cat the blocks palette.
sprite appears. Then click the wait 10 secs
forever block, keep
Drag the block into
the mouse button repeat 10 the scripts area
Every new project in pressed down, and
Scratch includes me, drag the block into
the cat sprite. the scripts area forever

on the right. Release


the button to drop forever
the block.

Click this block

Click the blue Motion button in the blocks palette. Click the Events button in the blocks palette. Drag
3 The blue Motion commands will appear. Drag the 4 the when green flag clicked block into the scripts
point towards block into the scripts area and drop area. Join it to the top of your script.
it inside the forever block. Click the black arrow in
This block snaps to
the block and choose mouse-pointer. the top of the script
Click the drop-down when clicked The menu shows
menu and select mouse-pointer
forever mouse-pointer forever has been chosen

point towards point towards mouse-pointer

mouse-pointer
ESCAPE THE DRAGON! 33

Try running the program by clicking the


5 green flag at the top of the stage. As you move
the mouse around the stage, the cat turns to
face the mouse-pointer.

Untitled Move the mouse


and watch the cat
by abcd (unshared)
spin around
following it
Use the Run the Stop the
full screen program program

Click the Motion button again, and drag the move The picture behind the sprites is called a backdrop.
6 10 steps block into the scripts area. Drop it inside 7 To the left of the sprite list is a button to add a
the forever block. Click the green flag button so backdrop from the library. Click it, then select the
the cat chases the mouse-pointer! Space theme from the list. Click the stars image
and then click the OK button at the bottom-right.

when clicked
Stage
forever 1 backdrop
Choose backdrop
point towards mouse-pointer from the library

New backdrop:
move 10 steps

The forever block Drop this block inside


automatically stretches the forever block
to make room

SCRATCH File Edit Tips ?


Cat in space
Scripts Costumes Sounds
Untitled
by abcd (unshared)
The Scratch interface
Motion
Looks
Events
Control
now looks like this. Run
Sound Sensing x: -126
y: 96
the program and the cat
Pen Operators
Data More Blocks chases the mouse-pointer
when clicked

move 10 steps
forever
through space.
point towards mouse pointer
turn 15 degrees move 10 steps

turn 15 degrees

point in direction 90

point towards

go to x: 0 y: 0

x: 153 y: -61
go to mouse pointer
Sprites New sprite:
glide 1 secs to x: 0 y: 0

Scratch automatically saves


Stage
1 backdrop Sprite 1 work if youre online. To save work
New backdrop:
while offline click File and
Backpack
select Save As.
34 S TA R T I N G F R O M S C R AT C H

ESCAPE THE DRAGON!


Add a fire-breathing dragon
Now that the cat can chase the mouse, make a dragon to chase
the cat. Dont let the dragon catch the cat, or it will get scorched.

Above the sprite list is a button to add a sprite from Add this script to the dragon sprite. Click the
8 the library. Click it, choose the Fantasy category 9 colour-coded buttons in the blocks palette to select
from the menu on the left, and select Dragon. Click the blocks below, then drag the blocks into the
the OK button in the bottom-right of the screen. scripts area. The dragon will now chase the cat.

New sprite: Use the menu to


make the dragon
when clicked point towards the
Add a
sprite from cat (Sprite1)
forever
the library
point towards Sprite1
The dragon is
move 10 steps
highlighted in blue
to show its your Sprite 1
current sprite

Click the blue Motion button and drag the go to With the dragon sprite highlighted, add this
10 x:0 y:0 block into the script. Click the number 11 second script to the scripts area. The wait until
boxes in the block and change them to -200 and block is found in the Control section, and the
-150. Click the purple Looks button and add the touching block is in the Sensing section. The
switch costume to block to your script. dragon now breathes fire when it touches the cat.
Use the menu to
Place this block choose Sprite1
when clicked here to make the when clicked (the cat)
dragon start in
go to x: -200 y: -150 the corner wait until touching Sprite1 ?

switch costume to dragon1-a switch costume to dragon1-b


forever Use the menu stop all Drag this
to choose block inside
point towards Sprite1 dragon1-a. This Control block the wait
The dragon stops the program until block
move 4 steps will start in
this costume
Costume
dragon1-b
Change 10 to 4 to make makes the dragon
the dragon move slower breathe fire
than the cat
ESCAPE THE DRAGON! 35

In coding, a variable is used to store information. This


EXPERT TIPS
12 step uses a variable to create a timer to measure how long
a player survives before getting toasted. Click the Data Make the game harder
button and then click Make a Variable.
Try changing the speed or size
Scripts Costumes Sounds of your sprites.
Make the dragon faster:
Motion Events
move 5 steps
Looks Control
Data Sound Sensing
button Make the dragon larger or smaller:
Pen Operators
Click this icon and then click
Data More Blocks a sprite to make it larger.

Click this icon and then click


Click to create Make a Variable a sprite to make it smaller.
a variable

Type in the variable name Time and make sure The variable name and the number in it appear
13 the For all sprites button is selected underneath, 14 on the stage in a small box. Right-click it and
then click OK. This means that the cat, dragon, choose large readout. This shows just the
and any other sprites can use the variable. number in the box.

New Variable Time 0


Select
this option Variable name: Time normal readout
then click The number in your
OK Time variable large readout
For all sprites For this sprite only
Cloud variable (stored on server) slider

OK Cancel hide

Making a variable adds


15 new blocks to the Data when clicked
This resets the
section of the blocks timer to 0 when
palette. Drag the set set Time to 0 the game starts
Time to 0 and change
Time by 1 blocks from forever Choose from the
the Data section to the Control section. Adds
wait 1 secs a 1 second delay
scripts area to make this
new script. You can give change Time by 1
this script to any sprite.
Increases the Dont forget to
timer by 1 save your work
36 S TA R T I N G F R O M S C R AT C H

ESCAPE THE DRAGON!


Add a delicious donut
Scratch comes with lots of sprites in its library. Make the
game trickier by adding a donut sprite to the program
for the cat to chase.
Click the button above the sprite list to add a Add this script to the donut. The mouse down?
16 new sprite from the library. Select Donut from 17 block can be found in the Sensing section, and
the Things category on the left and click OK. the go to mouse-pointer block in the Motion
section. This script makes the donut follow the
mouse-pointer when the mouse button is clicked.
New sprite:

Add a sprite This is a


from the library when clicked Sensing
block
forever

wait until mouse down?

go to mouse-pointer
Sprite 1
The donut
is now your
selected sprite

Select the cat in the sprite list so its script Click the green flag button to run the program.
18 appears. Click the menu in the point towards 19 Press the mouse button and the donut moves
mouse-pointer block. Change it so that the cat to the mouse-pointer. The cat follows the
follows the donut instead of the mouse-pointer. donut, and the dragon chases the cat.

Click to open Save the cat


when clicked the menu from the
dragon!
forever

point towards Donut

move 5 steps mouse-pointer

Donut

Dragon

Choose the donut from


the drop-down menu Move the
donut using the
mouse-pointer
ESCAPE THE DRAGON! 37

Now add some music. Click the Sounds tab Select the drip drop sound and click the
20 above the blocks palette. Each sprite has its 21 OK button at the bottom-right. The sound
own sounds, and they are managed here. is added to the cat sprite, and appears in
Click the button on the left to add a sound the Sounds area.
from the library.
Sounds tab

Scripts Costumes Sounds 2

New sound: Delete


Use a sound from
sounds here
your computer.
drip drop
00:02.8
Record a sound

Add a sound This is how long


from the library the sound lasts

Click the Scripts tab to go back to the


22 scripts area. Add this script to the cat sprite, Congratulations! Youve
so it plays the music all the time. Run the written your first
program and have fun! computer game.

when clicked

forever

play sound drip drop until done


Dont forget to
save your work
Use the Sound button
to find this block

REMEMBER
Achievements
This project has shown some of Made sprites move: Youve made sprites
the things Scratch can do. Heres chase each other.
what youve achieved. Used a variable: Youve created a timer for
your game.
Created a program: By combining blocks of Used costumes: Youve changed the dragons
code into scripts, youve put together a game. appearance using different costumes.
Added pictures: Youve used both backdrops Added music: Youve added a sound, and
and sprites. made it play when your program runs.
38 S TA R T I N G F R O M S C R AT C H

Making things move SEE ALSO

2829 Sprites
Computer games are all about firing, dodging, catching, Co-ordinates 5657
and escaping. Characters might run, fly spaceships, or
drive fast cars. To create great games in Scratch, you first
need to learn how to make sprites move.

Motion blocks Scratch wont let sprites


The dark blue Motion blocks make sprites move. Start a new project walk off the stage, so
youll never lose us.
by clicking the File menu and choosing New. The new project
begins with the cat in the middle of the stage, ready for action.

First steps
1 Drag the move 10
move 10 steps
steps block from the Click the white window on
Motion section of the the block and type in a
blocks palette and drop it different number to change
into the scripts area to its how far the cat moves
right. Each time you click Add this block to tell
the block, the cat moves. Scratch when to start The forever block
running the script repeats anything
Keep on moving inside it endlessly
2 Drag a yellow
when clicked
forever block from the
blocks palette and drop forever EXPERT TIPS
it around the move 10
steps block. Click the move 10 steps Rotation styles
green flag on the stage
to run the program. The Find the cat in the Sprites list in
cat moves until it hits the bottom left of the screen. Click
the edge of the stage. Try changing the i button in the top left of the
10 to 30 to make frame. Here youll find a button to
Bouncing the cat sprint! change the cats rotation style so
3 Drag an if on edge, when clicked
it doesnt walk around on its head!
bounce block inside your
forever block. Now the forever The cat faces the direction
cat bounces when it hits its walking in, sometimes
the edge of the stage. The move 10 steps upside down.
cat is upside down when
it walks to the left. if on edge, bounce The cat faces left or right, and
is always the right way up.
This block makes the cat
turn around when it hits
The cat doesnt rotate at all.
the edge of the stage
MAKING THINGS MOVE 39
Which direction? The direction -90
means left
0
The cat is now marching left and right across the screen.
Its possible to change the cats direction, so it walks up
and down, or even diagonally. The Motion blocks can -90 90
be used to make a game of cat and mouse.
Click the block to make
the cat change direction Select or type in a new
number to change the 180
Heading the direction of the cat
4 right way Compass
Drag the point in direction point in direction 45 Directions are measured in
block into the scripts area degrees, from 0 at the top.
and open its drop-down (90) right You can use any number
menu. There are four between -179 and +180.
directions to choose from. (-90) left
The drop-down
Or, click on the number in menu gives you The cat will follow
(0) up the mouse-pointer
the window and type in a four options
new direction. (180) down

Click the green flag


Cat and mouse to start the program
5 Remove the move
when clicked
10 steps and if on edge,
bounce blocks from the forever
script. Now drag a point
towards block into the point towards mouse-pointer
forever block. Open
the menu and choose
mouse-pointer. REMEMBER
As the mouse-pointer moves,
the cat turns to face it Sprites
Chase the mouse
6 Can the cat catch the mouse? Drag a move 10
steps block into the forever loop. Now the cat walks
towards the mouse-pointer.

when clicked Sprites are objects in a Scratch


program that you can move
forever around (see pp.28-29). Every new
project stars the cat sprite, but you
point towards mouse-pointer can add cars, dinosaurs, dancers,
and all sorts of other sprites from
move 10 steps the library. You can even have a go
Adjust the number of steps at designing your own.
to change the cats speed
40 S TA R T I N G F R O M S C R AT C H

Costumes SEE ALSO

3839 Making
things move
To change what a sprite looks like, its expression,
or its position, you need to change its costume.
Sending 7071
messages

Costumes are pictures of a sprite in different poses.
Costumes tab

Changing costumes Scripts Costumes Sounds


Different costumes can make your sprite
look like its moving its arms and legs. When New costume: costume2
you switch between the cats two costumes,
it looks like its walking. Start a new project 1
and try this example.

costume1
93x101
One of the
2
cats costumes

Different costumes
1 Click the Costumes tab to see the cats costume2
costumes. They show the cat with its legs and 89x101
arms in two different positions.

Make the cat walk Change the cats costume


2 Add this script to make the cat walk. 3 Add the next costume block from the
When it moves, it slides across the screen without Looks section of the blocks palette, so the cat
moving its legs, because its picture always stays changes its costume with each step. This makes
the same. its legs and arms move.

when clicked when clicked


This picks the
forever forever next costume

move 10 steps next costume

if on edge, bounce wait 0.5 secs Pauses so the


costumes dont
move 10 steps change too quickly

if on edge, bounce
The colours remind
you where to find
the blocks
COSTUMES 41
The green flag starts
Dancing ballerina the ballerinas dance
Now try making a ballerina dance. Add
the ballerina sprite from the library. Select when clicked
your cat in the sprite list and drag its forever
script on to the ballerina in the sprite list.
Sprite 1
This copies the script to the ballerina. next costume

wait 0.5 secs

Drop the script on to the move 10 steps


ballerina in the sprite list
if on edge, bounce

Ballerinas script
The same script works for the ballerina and
the cat. The ballerina has four costumes, and
she uses them all as she dances on the stage.

EXPERT TIPS
Switching
You can choose to show a specific
switch costume to ballerina-a
costume for your sprite using
the switch costume to block.
Switch costumes: Use the menu in the block to choose a costume.
You can use this block to
choose a particular position
for your sprite. switch backdrop to backdrop1

Switch backdrops: Change the picture on the stage with this block.

Adding speech bubbles


when clicked The ballerina
You can add speech bubbles to make your stands up
sprites talk when they change costumes. forever
Use the say Hello! for 2 secs block and
switch costume to ballerina-a
change the text in it to make your sprite
say something else. say Up! for 1 secs

switch costume to ballerina-b


The ballerina
says Up! say Down! for 1 secs

She crouches
and says Down!
42 S TA R T I N G F R O M S C R AT C H

Hide and seek SEE ALSO

3839 Making
things move
Welcome to the special effects studio! Using the purple
Looks blocks, find out how to make sprites vanish and
Sending 7071
messages

reappear, grow and shrink, and fade in and out.
Use the hide block
Hiding sprites to make sprites
disappear in games
To make a sprite disappear, use the hide block. The
sprite is still on the stage, and it can still move around,
but it cant be seen unless the show block is used to
make it visible again.

Hide and show


To make a sprite vanish, use the hide hide
block. When youre ready for it to be
seen again, use the show block.
These blocks are found in the Looks
show
section of the blocks palette.

Disappearing cat
Try this script using the cat sprite. It
disappears and reappears but it keeps
moving, even when you cant see it. EXPERT TIPS
Showing sprites
when clicked Select a sprite in the sprite list.
Click the i button on it to open
forever the information panel. There you
This block hides can also use the show tick box
wait 1 secs the cat to show or hide a sprite.
hide
This block rotates
turn 90 degrees the cat clockwise Sprite1
x: 84 y: -69 direction: -90
move 100 steps rotation style:

The cat still moves can drag in player:


wait 1 secs show:
even when hidden
show
This block shows Show a
the cat again hidden sprite
HIDE AND SEEK 43
Choose the type of effect
Sizes and effects from the drop-down Change the
Scripts can be used to change the size of a menu. The pixelate numbers in the
effect makes the sprite blocks to set
sprite and add special effects to it. become blurred how strong
the effect is
Type in positive numbers
to make sprites bigger
and negative numbers
change size by 10 to make them smaller change pixelate effect by 25

Higher numbers make set color effect to 0


sprites bigger and
lower numbers make Each colour is
them smaller. 100 is represented by a
set size to 100 % normal size clear graphic effects number. Change
the number to
Changing a sprites size Resets all Adding graphic effects set the colour
These two blocks can be used to the effects The graphic effects in Scratch can be
make a sprite bigger or smaller, used to change a sprites appearance
either by a set amount or by a or distort its shape. Theyre fun to
percentage of its size. experiment with.

Using effects to teleport


Youll never know where
Add a ghost sprite from the Fantasy category Ill appear next!
of the sprite library, and create the script shown
below. It makes the ghost appear to teleport
when clicked.

The ghost effect makes the sprite


when this sprite clicked fade slightly; by repeating this
block 20 times the sprite fades
clear graphic effects away completely

This Operators block


repeat 20 selects a random This block
horizontal position selects a random
change ghost effect by 5
vertical position

glide 0.1 secs to x: pick random -150 to 150 y: pick random -150 to 150

repeat 20
This block makes the
change ghost effect by -5 ghost move slowly,
hidden from view
Using this block makes the
sprite fade back in
44 S TA R T I N G F R O M S C R AT C H

Events SEE ALSO


Sensing 6667
and detecting

The brown Events blocks in Scratch start scripts
when certain things happen. For example, when
Sending 7071
messages

the user presses a key, clicks a sprite, or uses
a webcam or microphone.

Clicking LINGO
A script can be added to a sprite that makes it do What is an event?
something if the sprite is clicked while the program
is running. Experiment with different blocks to see An event is something that
happens, such as a key being
what a sprite can do when clicked.
pressed or the green flag being
Drag this block
from the Events clicked. The blocks that look for
menu to start events go at the top of a script.
the script The script waits until the event
when this sprite clicked happens, and then it runs.

play sound meow until done

Click a sprite The cat sprite


already has this
This script makes the cat sprite sound effect
meow when you click it. attached to it

Key presses
Programs can be built to react when different
keys on the keyboard are pressed. For another
way of using the keyboard thats better for
creating games, see pages 6667.
Choose the
Choose the key here
key here
Change the
text here
when h key pressed when g key pressed

say Hello! for 1 secs say Goodbye! for 1 secs

Say hello Say goodbye


Add this script to a sprite and when the This script uses the G key to make a sprite
H key is pressed, the sprite says Hello! say Goodbye!
EVENTS 45
Sound events EXPERT TIPS
If your computer has a microphone, sprites can Asking permission
detect how loud the sounds in a room are on a
scale of 0 (very quiet) to 100 (very loud). Use the Scratch asks for permission
to use your webcam and
when loudness > 10 block to make a script start
microphone. When the box
when the sounds are loud enough. pops up, click Allow.

Make the cat sensitive to noise Shout at the cat


1 Start a new project, and add the room3 2 Shout into the microphone the cat will
backdrop image from the backdrop library. jump out of its seat with fright and meow. It
Drag the cat sprite on to the chair and add will also respond to music and other sounds
the script shown here. if they are loud enough.
Change the
number to 40

when loudness > 40 This makes the


cat jump up
go to x: 145 y: 130

play sound meow until done

go to x: 145 y: 0 This makes the cat


fall back down

Change the
Webcam motion detector number to 40
If you have a webcam, it can be used when video motion > 40
with Scratch too. Add this script to the play sound meow until done
cat, and when you wave at it through
the webcam, it will meow back. Detect motion
Use the when loudness > 10 block. Click the menu
to change loudness to video motion. The script will
start when youre moving around enough.

EXPERT TIPS
Backdrop changes
Choose the
A sprite can react to the backdrop backdrop here
changing. For example, you can have a
backdrop that makes the sprite disappear.
when backdrop switches to desert
Upload a new backdrop from the stage
list in the bottom left of the screen, and hide
then add the when backdrop switches Hides the sprite when
to backdrop1 block to do this. the backdrop changes
46 S TA R T I N G F R O M S C R AT C H

Simple loops SEE ALSO


Complex 6869
loops

A loop is a part of a program that repeats itself. The
loop blocks (from the Control section) tell Scratch
Loops 122123
in Python

which blocks to repeat, and how many times. They save
us from adding the same blocks over and over again.
Drop blocks inside this loop
to repeat the actions forever

Forever loop forever


Whatever you put inside the forever block move 10 steps
repeats itself forever. Theres no option to
join anything at the bottom, because a if on edge, bounce
forever loop never ends.

No option to add Looping forever


When the actions
more Scratch blocks When the last block inside the finish the program
loop ends, the loop goes back goes back to the start
to the start again. of the loop again

Repeat loop
To repeat an action a certain number of times, use a
repeat 10 block. Change the number in it to set how
many times the loop will repeat itself. Add the Dinosaur1 REMEMBER
sprite to a new project and build it this script. Loop block shape
The loop blocks are shaped like
when clicked
jaws. Drop the blocks that you
repeat 3 Change the number to 3 want to repeat into the jaws, so
the loop wraps around them. As
switch costume to dinosaur 1-d you add more blocks, the jaws
stretch to make room for them.
wait 0.5 secs The sprite stands up straight

switch costume to dinosaur 1-c

wait 0.5 secs The sprite stands


on one leg

You can add more blocks


Dancing dino after a repeat loop
When the green flag is clicked,
the dinosaur dances. He repeats
his dance moves three times.
SIMPLE LOOPS 47
Nested loops
Loops can also be nested, which means they can be put
inside each other. In this script, the dinosaur finishes his
dance by walking right and left and then thinking for a Try giving
me some
moment. When hes got his breath back, he dances again looping music!
and stops only when you click the red stop button.

Click on the green flag above


the stage to start the script

Loops in loops
This forever loop when clicked
has several repeat
loops inside it. Make forever
sure the blocks are
inside the right loops, repeat 3
otherwise the program
wont work properly. switch costume to dinosaur 1-d

wait 0.5 secs

The forever switch costume to dinosaur 1-c


block surrounds
everything wait 0.5 secs

The previous
dance move repeat 3
(see opposite)
move 20 steps

wait 0.5 secs

The dinosaur
moves three
steps to the right wait 1 secs
This block creates
repeat 3 a short pause

move -20 steps

wait 0.5 secs


The dinosaur
moves three
steps to the left

think I love to dance! for 2 secs

Type in what you want the dinosaur to


think it will appear in a thought bubble
48 S TA R T I N G F R O M S C R AT C H

Pens and turtles SEE ALSO

4445 Events
Each sprite has a pen tool that can draw a line 4647 Simple loops
behind it wherever it goes. To create a picture,
turn on the pen and then move the sprite across
the stage, like moving a pen across paper.

Pen blocks pen down pen up


The dark green blocks are used to
control the pen. Each sprite has its own Turns the Turns the
pen on pen off
pen that can be turned on by using the
pen down block and turned off using
the pen up block. The size and colour clear stamp
of the pen can also be changed.
Clears all drawings Leaves a picture
of the sprite

Playing with pens


Experiment with how you can use
the pen blocks to make drawings.

Draw a square
To draw a square, you simply put the pen The sprite will
leave a line
down on the stage and then move the sprite behind it
in a square shape. Use a loop to draw the four
sides and turn the corners.

when clicked

Draws a line pen down


Turns the
of the square
pen on
repeat 4
Turns the
Change the shape corners
move 100 steps
This code will draw a
square. To draw a triangle, turn 90 degrees
change the repeat loop
to repeat three times wait 1 secs
for the three sides, and Makes it easier
change the turn from to see whats
90 to 120 degrees. happening
PENS AND TURTLES 49
Skywriting
In this program, you control a plane. As you fly it will leave
You can only use
a smoke trail, so you can draw in the sky. Start a new project colours that appear
and add the plane sprite, then add this script. on the Scratch
interface. To select
Flying high red, click in the square
when clicked and then click on the
Use the left and right keys to turn the
red stop button above
plane. Switch on the smoke with the a set size to 20 % the stage
key and turn it off with the z key. Press
the spacebar to clear the sky. set pen color to

set pen size to 3

forever Makes the


line thicker
move 2 steps

if on edge, bounce
Keeps the
Keeps the plane
plane moving
on the stage

LINGO when right arrow key pressed


Turtle graphics turn 10 degrees
Rotates
Using sprites to draw pictures right
is called turtle graphics.
Thats because theres a type of when left arrow key pressed
robot called a turtle that can be
moved around the floor to draw turn 10 degrees
pictures. The first programming Rotates
left
language to use turtle graphics
was called LOGO.
when a key pressed

pen down
Turns the pen on

when z key pressed

pen up
Turns the
pen off

when space key pressed

clear
Clears the pen trail
50 S TA R T I N G F R O M S C R AT C H

Variables SEE ALSO


Maths 5253
In coding, a variable is the name for a place Variables 108109
in Python

where you can store information. Theyre used
to remember things such as the score, a players
name, or a characters speed.

Creating a variable Storing data


You can create a variable to use in your program Variables are like boxes
where you can store
using the Data section of the blocks palette. Once different bits of
a variable has been created, new blocks appear in information for use
the blocks palette ready for you to use. in your program.

Make a variable Name the new variable


1 First, click the Data button in the blocks 2 Give the variable a name that will help you
palette. Then select the Make a Variable button. to remember what it does. Select which sprites
will use the variable, then click OK.
Scripts Costumes Sounds
Type in a
name for your Choose whether the variable
Motion Events will be used by all sprites or
variable here
Looks Control just the one selected

Click the Sound Sensing


New Variable
Data Pen Operators
button Variable name: steps
Data More Blocks
For all sprites For this sprite only
Make a Variable Cloud variable (stored on server)

Make a List OK Cancel

Click here to
create a variable
Tick to show the The variable block can be
variable on the stage used inside other blocks

A new variable is created


3 Once a new variable has been
steps Use this block to give
the variable a value
created, new blocks appear in the blocks
palette. The menus inside these blocks let set steps to 0 Change the value of a
you select which variable they apply to, if variable using this block.
you have created more than one. A negative number will
change steps by 1 decrease its value
VA R I A B L E S 51
Using a variable
Variables can be used to change a sprites speed.
This simple script shows you how.

Set the value of a variable Changing the value of a variable


1 Create this script. Use the set steps to 0 block 2 Use the change steps by 1 block to increase the
and change the number to 5. Drag the move 10 steps value of the variable steps by 1. Put it inside the
block into the script, but drop the steps variable forever block, so the cat keeps on getting faster.
block over the 10.
This sets the value
of the steps The steps
when clicked variable to 5 when clicked variable keeps
on increasing as
set steps to 5 set steps to 0 the forever
loop goes round
Here, steps means 5, as the and round
forever value has been set above forever

move steps steps change steps by 1

if on edge, bounce move steps steps

if on edge, bounce
Set my speed using
the set steps to 0
block.

EXPERT TIPS
Read-only variables
Deleting variables Some variables are set by Scratch and cant
When you no longer want a variable, be changed. Theyre still variables though,
right-click on it in the blocks palette and because their values vary. These blocks are
then select delete variable. Youll lose known as sensing blocks.
any information that was in it.
Tracks the distance to
distance to
something, such as the
Make a Variable
Variables can mouse-pointer.
be renamed
Make a List Reports the number of
here
costume # the costume a sprite is
steps wearing.
rename variable
Tells you which direction
direction a sprite is travelling in.
delete variable
52 S TA R T I N G F R O M S C R AT C H

Maths SEE ALSO

5051 Variables
As well as storing numbers in variables (see pp.5051), Maths 112113
in Python

Scratch can be used to carry out all sorts of calculations
using the Operator blocks.

Doing sums
There are four Operator blocks
that can be used to do simple 7 + 22 64 28
calculations. These are addition, Addition Subtraction
subtraction, multiplication, The + block adds the two The block subtracts the
and division. numbers in the block together. second number from the first.

The think block is used


here to print the result

think 2 + 5 11 * 10 120 / 4

Printing results Multiplication Division


Drag a think block into the scripts area and Computers use the * Theres no division sign on
drop a + block inside it. Now add two numbers symbol for multiplication, the keyboard, so Scratch
together and watch your sprite think the answer. because x looks like a letter. uses the / symbol instead.

Results in a variable
Variables are useful if you
For more complex calculations, such as fixing want to repeat the same sum
the sale price of an item, instead of just using with different values.
numbers you can use the value of a variable in
a sum. The result can be stored in a variable too.

Create variables Set the price


1 Go to the Data section of the 2 Select the set price
set price to 50
blocks palette and create two block and fix the price of Use the drop-down
variables sale price and price. an item to 50. menu to select price

Calculate the sale price


3 Use this script to set sale price to price / 2
calculate half the price of an
item and set it as the sale price. Drag the price variable
into the window to Add the / block inside
divide the price by 2 the set sale price block
M AT H S 53
Random numbers EXPERT TIPS
The pick random block can be used to select a Gaming
random number between two values. This block
is useful for rolling dice in a game or for when Computers often use random
numbers to add surprises to
you want to mix up a sprites costumes.
games. For example, an alien can
be made to appear in a random
Pick a random number
pick random 1 to 10 place, or after a random amount
To pick a random month,
of time. It can be used to select
You can change change the numbers to
choose a number between
a random value, as if you were
the numbers
1 and 12. rolling a dice, or a random
in the block
costume for a sprite.

This block makes the


when clicked sprite wait for two Chooses a costume
seconds before switching between 1 and 3
forever to another costume at random

wait 2 sec
Switching costumes
switch costume to pick random 1 to 3
This script changes a sprites
costume at random every
two seconds.

Random costumes
Costumes can make a sprite
appear to move its body,
or might give it different
clothes, as shown here.

Hard maths 10 mod 3 Divides 10 by 3 and gives


Simple Operator blocks can do most the remainder the
Gives nearest whole number that is left over
calculations, but Scratch can also do number to 44.7
more complex maths. The mod
block divides two numbers and gives round 44.7
the remainder, which is the number More maths
Choose different functions
that is left over. The round block from the drop-down menu The Operator section
has blocks of advanced
rounds to the nearest whole number, sqrt of 9 maths functions that
and the sqrt block gives the square can be used to do
root of a number. Calculates the square root of 9 complex calculations.
54 S TA R T I N G F R O M S C R AT C H

Strings and lists SEE ALSO

5051 Variables
In programming, a sequence of letters and symbols Strings 114115
in Python

is called a string. Strings can contain any character
on the keyboard (including spaces) and be of any length.
Strings can also be grouped together in lists. Keyboard characters are lined
up as if they were hanging
from a string

A B C D E F G H I
Create a new variable
Working with words 1 Click the Data button in the blocks palette
Programs often need to remember words, and click the Make a Variable button. Create a
such as a players name. Variables can be variable called greeting.
created to remember these words. Scratch
programs can also ask the user questions,
which they answer by typing into a text Make a Variable
box that pops up. The following script asks Make a List Name your
variable greeting
for the users name, and then makes a
sprite say Hello to them. greeting

This block puts Hello into the variable


greeting. Leave a space at the end of Hello
Asking a question to make the output of the program neater
2 This script makes the
when clicked
sprite ask a question. The ask box (from the Sensing
Whatever the user types set greeting to Hello section of the blocks palette) makes
into the text box that pops a text box appear, which the user
up on the screen is stored ask Whats your name? and wait types their answer into
in a new variable called
answer. The script then say join greeting answer
combines the strings
contained in the greeting
and answer variables to The answer variable
greet to the user. (from the Sensing
The say bubble The greeting section) contains
creates a speech variable holds the whatever the user
bubble for the sprite string Hello typed into the text box
STRINGS AND LISTS 55
Making lists
Variables are perfect if you just want to remember one thing. To remember
lots of similar things, lists can be used instead. Lists can store many items of
data (numbers and strings) at the same time for example, all of the high
scores in a game. The following program shows one way of using a list.

Create a list Using your list


1 Start a new project. Go into the 2 This script asks the user to type words into a
Data section of the blocks palette and list. Each word appears in the sprites speech bubble
click the Make a List button. Give your list as it is added to the list.
the name sentence. This block makes sure the
list is empty at the start
of the program
when clicked
Make a Variable
delete all of sentence
Select Make
Make a List The ask block asks the
a List
forever user to type in a word

sentence ask Add a word and wait

Call your list add answer to sentence


sentence This adds the
users answer think sentence for 2 secs
to the list

The think block Adding sentence here means


makes a thought that the list will be shown in the
bubble appear thought bubble

Seeing the list


3 If you tick the box beside the list in
EXPERT TIPS
the blocks palette, the list is shown on the Playing with lists
stage. You can see each new word as its
added to the list. These blocks can be used to change the contents of a list.
Each item in a list has a number the first item is number 1,
and so on. These numbers can be used to remove, insert,
sentence or replace items.
Deletes the first
1 apple item in the list
delete 1 of sentence Adds cherry as the
2 pear Scratch first item in the list
keeps track
3 banana of how
insert cherry at 1 of sentence Replaces the
many words first list item
4 orange are added with cherry
to the list
replace item 1 of sentence with cherry
length: 4
56 S TA R T I N G F R O M S C R AT C H

Co-ordinates SEE ALSO

3839 Making
things move
To put a sprite in a particular spot, or to find out its
exact location, you can use co-ordinates. Co-ordinates
5253 Maths
are a pair of numbers that pinpoint a sprites position
on the stage using an x and y grid.

x and y positions x: 240 y: 180


The x and y positions of a sprite and the
Position of the mouse-pointer
mouse-pointer are shown on the Scratch
The mouse-pointers co-ordinates are shown at the
interface. It can be helpful to know a bottom right of the stage. Move the mouse-pointer
sprites co-ordinates when writing a script. over the stage and watch the co-ordinates change.

Position of a sprite Show co-ordinates


x position
You can see a sprites on the stage
current co-ordinates in Tick the boxes beside the
the top-right corner of y position x position and y position
the scripts area. blocks to show a sprites
x: -126
position on the stage.
y: 96

x and y grid Untitled


To pinpoint a spot, count the number of by abcd (unshared)

steps left or right, and up or down, from 180


the middle of the stage. Steps to the left y
or right are called x. Steps up or down are
120
called y. Use negative numbers to move
left and down. (x: 100, y: 100)
60
(x: 180, y: 50)

180 120 60 60 120 180 x


The stage is based
upon an x and y grid 60

120

(x: 90, y: 130)


(x: 190, y: 150) 180
This sprite is 190 steps left (190)
and 150 steps down (150) from
the middle of the stage
C O O R D I N AT E S 57
Moving the sprite +y Positive numbers
Co-ordinates are used to move a sprite to a particular move sprites up
and right, negative
spot on the stage. It doesnt matter how near or far numbers move
away the spot is. The glide 1 secs to x:0 y:0 block from them down and left
the Motion section of the blocks palette makes the
sprite glide there smoothly. -x +x
Change the co-ordinate
numbers to make the sprite
go somewhere else
when clicked Moves the -y Moves to the
middle of the stage
sprite left
glide 1 secs to x: 150 y: 100

glide 1 secs to x: -150 y: -100 change x by -10 set x to 0

glide 1 secs to x: -200 y: 100

glide 1 secs to x: 0 y: 0 change y by 125 set y to 180

Control the sprite with a script Change x and y separately


Can you work out the path the sprite These blocks can be used to change Moves up
to the top
will take when you run this script? x without changing y, and the other
of the stage
Try it and see! way round.

Crazy horses trip


Try this fun script to test out co-ordinates.
Select the Horse1 sprite from the sprite list
and give it the below script. This program
uses the go to x:0 y:0 block to keep moving
the horse to a random position, drawing a
line behind it as it goes.

when clicked

pen down This block leaves a line


when the horse moves
forever

go to x: pick random -240 to 240 y: pick random -180 to 180

wait 0.2 secs


This block from the Operators menu Selects a random
selects a random horizontal position vertical position
58 S TA R T I N G F R O M S C R AT C H

Make some noise! SEE ALSO


Sensing 6667
and detecting

Scratch programs dont have to be silent. Use the pink
Sound blocks to try out sound effects and create music.
Monkey 7481
mayhem

You can also use sound files you already have or record
brand new sounds for your program.

Click the Sounds tab


Adding sounds to sprites to show the sound
To play a sound, it must be added to a option buttons

sprite. Each sprite has its own set of sounds.


To control them, click the Sounds tab
Scripts Costumes Sounds
above the blocks palette.
Click here to select a New sound:
sound effect from
Scratchs library

Upload a recording
Record a sound using from the computer
the computers
microphone

Playing a sound Turn up the volume


There are two blocks that play sounds: play Each sprite has its own volume control,
sound and play sound until done. Until which is set using numbers. 0 is silent
done makes the program wait until the and 100 is the loudest.
sound has finished before it moves on.
100 is the maximum volume
Use the menu to choose
which sound to play
set volume to 100 %

This block makes a sprite louder


play sound meow
or quieter use a negative
number to make it quieter

change volume by -10


play sound meow until done

Ticking this box makes


The next block in the script will the sprites volume
not run until after the meow show on the stage volume
sound has finished playing
MAKE SOME NOISE! 59
Making your own music
Scratch has blocks that can be used to invent musical
sounds. You have a whole orchestra of instruments to
conduct, as well as a full drum kit. The length of each
note is measured in beats.
This decides how low or high
the pitch of a note is

play note 60 for 0.5 beats set instrument to 1

Big numbers make a note Click here to choose


longer. It can also be shorter an instrument from a
than a beat, as shown here drop-down menu

play drum 1 for 0.25 beats rest for 0.25 beats

Use this menu to choose between This block adds a silent break in the
different types of drum music. Higher numbers will give you
a longer break

EXPERT TIPS
Playing music Tempo
Connecting notes together makes a tune. Create a new
variable called note (see pages 5051), and then add The speed of music is called its
the script below to any sprite to create a piece of music. tempo. The tempo decides how
long a beat is within a piece of
music. There are three blocks for
Set the value of the managing the tempo.
when clicked variable note first
set tempo to 60 bpm
set note to 1 Choose an instrument
The tempo is measured in beats per
set instrument to 1 Add a forever minute, or bpm.
loop around these
forever two blocks
change tempo by 60
change note by 1
Increase the tempo to make your
play note note for 0.5 beats music faster, or use a negative number
to make it slower.
Drag the note variable
from the Data section
of the blocks palette tempo
Rising scale
This script makes a series of notes that play when the green Ticking this box makes the sprites
flag is clicked. The pitch of each note gets higher one step tempo show on the stage.
at a time, and each note plays for half a beat.
60 S TA R T I N G F R O M S C R AT C H

PROJECT 2

Roll the dice SEE ALSO

4041 Costumes
Simple programs can be both useful and fun. 4647 Simple loops
This program creates a dice that can be rolled. 5051 Variables
Play it to see who can get the highest number, 5253 Maths
or use it instead of a real dice when you play
a board game.

How to create a rolling dice


The dice in this program uses six costumes. Each costume
shows a face of the dice with a different number on it
from one to six.

Select the paintbrush button Click the rectangle button on the left of the
1 under the stage to draw a 2 painting area. To make your dice colourful, select a
new sprite. solid colour from the palette (see box below). Then
in the painting area hold down the shift key, press
New sprite: the left mouse button, and then drag the mouse-
pointer to make a square in the middle.

Draws a
The rectangle button
new sprite
makes a square when
the shift key is pressed
EXPERT TIPS
Changing colours
Under the painting area are Click for outline Click for block Currently
the colour controls. Click the of block of solid colour selected colour
solid rectangle to draw a block
of solid colour. Click the empty
rectangle to draw an outline
of a square or rectangle. Use
the slider to change the
thickness of the squares lines.
To choose a colour, simply
click it.
Click on Choose a Use this to select
Change the line this box for colour from the a colour already
width using the slider more colours colour palette on the drawing
ROLL THE DICE 61

Right-click on your costume to the left of the painting area, and


EXPERT TIPS
3 choose duplicate. Repeat this step until you have six costumes.

1 Use the menu


Rotation tool
to duplicate the
dice costume
To make the dice appear to roll
duplicate when the script is run, you can
rotate each costume to a different
delete angle. Click on the Convert to
costume1 vector button in the bottom
123x123 save to local file
right-hand corner. When you click
back on to the painting area, a
Select a costume. Click the circle button rotation tool will appear.
4 on the painting area and chose a solid Click and drag
white colour from the palette. Add this control to
spots to each of the six costumes until rotate the dice
you have made all six sides of a dice.
The circle button makes a
perfect circle when the
shift key is pressed costume5
has 5 spots

Add the script below to the dice sprite. Press


5 the spacebar to roll the dice. Try it a few times
to check you can see all of the costumes.
Clicking the spacebar
rolls the dice
when space key pressed

switch costume to pick random 1 to 6

Sometimes youll roll the same number twice, and it looks like This block selects
a random costume
6 the program isnt working because the image doesnt change. This
script makes the dice change costumes five times before it stops.
Each time you press the spacebar, it looks like its rolling.

when space key pressed Each costume is a


different dice number
repeat 5

switch costume to pick random 1 to 6

wait 0.2 secs

Short pause so you can Dont forget to save


see the dice rolling your work
62 S TA R T I N G F R O M S C R AT C H

True or false? SEE ALSO


Decisions and 6465
branches

Computers decide what to do by asking questions
and determining whether the answers are true or false.
Making 118119
decisions

Questions that only have two possible answers are
called Boolean expressions.

The = block
Comparing numbers =
This block will give one of two answers
You can compare numbers using the true if the two numbers in the boxes
= block from the Operators section are equal, and false if they arent.
of the blocks palette.
The numbers are These numbers
equal, so true true are not equal, so false
appears in the false appears in
speech bubble the speech bubble

say 3 = 3 say 3 = 2

True answer False answer


Using an = block inside a speech block will make If the numbers in the block are different, the sprites
true or false appear in a sprites speech bubble. speech bubble will contain the word false.

This sign means equals, so the


Comparing variables block is asking if age is equal to
You can use variables inside 7. The answer here is false, as
age is 10
comparison blocks. Its not worth age = 7
comparing fixed numbers
This sign means more than, so
because the result will always be the block is asking if age is
the same, whereas the value of greater than 11. The answer is
false, as 10 is not bigger than 11
variables can change.
age > 11

set age to 10
This sign means less than, so the
block is asking if age is less than
Create a variable 18. The answer will be true, as 10
Click the Data button in the blocks age < 18 is smaller than 18
palette and create a new variable called
age. Set its value to 10 (click on the Comparing numbers
block to make sure the value has Find the green comparison blocks in the Operators menu.
changed). Drag the age variable into As well as checking whether two numbers are equal, you can
the comparison blocks. check whether one is higher or lower than another.
T R U E O R FA L S E ? 63
EXPERT TIPS
Comparing words
The = block is not just used for numbers The variable name
contains Lizzie, so the
it can also be used to check whether two answer is true
strings are the same. It ignores capital
letters when comparing strings. name = Lizzie

set name to Lizzie Drag and drop the The answer is false
variable into the because the variable
comparison block doesnt contain Dan
Create a variable
To experiment with comparing strings,
create a new variable called name and name = Dan
set its value to Lizzie.

Not!
The not block
The not block can simplify things by reversing not
The not block changes the
the answer of a Boolean expression. For example, answer around, from true to
its easier to check if someones age is not 10 false and from false to true.
than to check every other possible age.

age = 7 not age = 7

Without the not block With the not block


Here, 10 isnt equal to 7, so the Adding the not block to the same question changes the
answer is false. answer. As 7 does not equal 10, the answer is now true.

Combining questions or
To ask more complicated questions, you can combine
comparison blocks and ask more than one question and
at the same time.
Comparison blocks
The or and and blocks are used
to combine Boolean expressions
age < 18 or age > 65 in different ways.

Here, the answer is true The answer here is only


when either the left or true when both the left In practice
the right side is true and right sides are true
The top block checks whether
someone is younger than 18 or older
age > 10 and age < 15 than 65. The bottom block checks if
they are aged 11, 12, 13, or 14.
64 S TA R T I N G F R O M S C R AT C H

Decisions and branches SEE ALSO

6263 True
or false?
By testing whether something is true or false you can
use this information to tell the computer what to do
Sensing and 6667
detecting

next. It will perform a different action depending on
whether the answer is true or false.
Drag a Boolean if then
expression into
Making decisions this window

The if blocks use Boolean if then else


expressions to decide what to do If false, blocks in the
next. To use them, put other else jaws will run
blocks inside their jaws. The
blocks inside the if blocks will
only run if the answer to the if-then block if-then-else block
Boolean expression is true. If a Boolean expression is If the Boolean expression is
true, the blocks between the true, the first set of blocks runs.
if-then blocks jaws will run. If not, the second set runs.

Using the if-then block


The if-then block lets you choose whether or not to run
part of a script depending on the answer to a Boolean
expression. Attach this script to the cat sprite to try it out.

Drag the = block from the Is answer yes?


when clicked Operators section into the
if-then block. Then put the
ask Do you want me to meow? and wait answer variable (from the True False
Sensing section) inside it
if answer = yes then
This block is inside the jaws
play sound meow until done of the if-then block, so the
cat will only meow if the
answer is true (yes)
Play Skip
think hmm for 2 secs This is the end of the meow meow
if-then block
think Time to eat some fish! for 2 secs How it works
The program checks
Meowing cat These think blocks are
outside the if-then
whether the Boolean
This program checks the Boolean expression and will only loop, so they will run expression is true. If it is,
run the part between the if-then blocks jaws if it is true. whatever the answer it runs the blocks inside
This means that the cat only meows when you tell it to. to the question is the if-then blocks jaws.
DECISIONS AND BRANCHES 65
Branching instructions
Often you want a program to do one thing if a condition is true,
and something else if it is not. The if-then-else block gives a
program two possible routes, called branches. Only one branch
will run, depending on the answer to the Boolean expression. Is answer yes?
Branching program
True False
This program has two branches: one
will run if the answer is yes, and the
when clicked other will run if it is not.

ask Do you like me? and wait

if answer = yes then


say say
This branch will run I like Thats not
say I like you too! for 2 secs if the answer to the
question is yes
you too! very friendly!
else How it works
The program checks whether
say Thats not very friendly! for 2 secs
you typed in yes. If so, it
shows the first message. If not,
it shows the second.

This branch will run if the


EXPERT TIPS answer to the question is
anything except yes
Boolean shapes
The Boolean expression blocks in Scratch
have pointed ends. You can put them into
some non-pointed shaped holes too.

mouse down?

Sensing blocks
These blocks can test whether a sprite is touching
another sprite, or whether a button is pressed.

repeat until

Control blocks Branches


Several Control blocks have Boolean-shaped Like branches of a tree,
holes in them for Boolean expressions. branches of a program split
and go in different directions.
66 S TA R T I N G F R O M S C R AT C H

Sensing and detecting SEE ALSO

4041 Costumes
The Sensing blocks enable a script to see what is 5657 Co-ordinates
happening on your computer. They can detect keyboard
controls, and let sprites react when they touch each other. This block checks if a key is
being pressed. You can choose
which key to check for
Keyboard controls
Using Sensing blocks with if-then blocks allows you key space pressed?
to move a sprite around the screen using the keyboard. This block checks if the mouse
The key pressed? block has a menu of most of the button is being pressed
keys on the keyboard, so a sprite can be programmed
to react to any key. You can also link actions to the mouse down?
click of a mouse button. Sensing blocks
Putting everything inside a Adding these blocks into an if-then block
forever block means the
allows the program to detect if a mouse
script repeatedly checks for
key presses button or key is being pressed.
when clicked

forever The script checks to see if the up


arrow is pressed. If it is, the sprite
moves upwards on the screen
if key up arrow pressed? then

change y by 10

if key down arrow pressed? then

change y by -10

if key left arrow pressed? then

change x by -10
Controlling sprites
Keyboard controls give you
precise control over your
if key right arrow pressed? then sprites, which is especially
useful in games.
change x by 10
Movement script
This script lets you move sprites
up, down, left, or right using the
arrow keys on the keyboard.
SENSING AND DETECTING 67
Use this block to identify when a sprite
Sprite collisions touches another sprite
It can be useful to know when
one sprite touches another in touching frog ?
games, for example. Use Sensing This block senses when a
blocks to make things happen sprite touches an area of
a particular colour
when sprites touch each other, or
when a sprite crosses an area that
touching color ?
is a certain colour.

Using Sensing blocks


Use the Sensing blocks to turn your controllable cat
into a game. Start by adding the movement script
created on the opposite page to the cat sprite, then add
the room1 backdrop and the elephant sprite. Using
the Sounds tab, add the trumpet2 sound effect to
the elephant, then build it the script below.

Find the elephant


This script uses Sensing blocks to control the
relationship between the cat and the elephant. As the
cat gets nearer, the elephant grows. When the cat
touches it, the elephant switches costume, makes a
sound, and hides somewhere else.

The forever loop keeps This checks how far the


when clicked sensing and adjusting the cat is from the elephant
elephants size and position
forever

set size to 200 distance to Sprite1 %

if touching Sprite1 ? then The further away the


cat is, the smaller the
elephant will be
switch costume to elephant-b
If the sprites touch, the
play sound trumpet2 until done blocks inside the
if-then block run
switch costume to elephant-a

go to x: pick random -240 to 240 y: pick random -180 to 180

This block selects a


random place for the
elephant to hide
68 S TA R T I N G F R O M S C R AT C H

Complex loops SEE ALSO

4647 Simple
loops
Simple loops are used to repeat parts of a program
forever, or a certain number of times. Other, cleverer
6263 True
or false?
loops can be used to write programs that decide
exactly when to repeat instructions.

Looping until something happens repeat until


Add the Dog1 sprite to a project, and then give the
below script to the cat sprite. When you run the script, the
repeat until block makes sure the cat keeps moving until
it touches the dog. It will then stop and say Ouch!
Repeat until block
This block stops the cat The blocks inside the repeat
from standing on its head until block keep repeating until
the condition is true (the cat
when clicked touches the dog).
Select Dog1 from
set rotation style left-right the drop-down menu

repeat until touching Dog1 ?

move 10 steps Ouch!


These instructions keep on repeating
if on edge, bounce until the cat touches the dog

say Ouch!
This will only happen when
the cat touches the dog
Testing the program
Move the dog out of the cats way and run
the program. Then drag and drop the dog
into the cats path to see what happens.

Stop! This stops all scripts This only stops the script
in a program this block is in
Another useful Control
block is the stop all block, stop all This stops the sprites other
scripts, but continues to run
which can stop scripts from the script this block is in
all
running. Its useful if you
want to stop sprites moving this script Stopping scripts
at the end of a game. Use the drop-down menu to
other scripts in sprite
choose which scripts to stop.
COMPLEX LOOPS 69
Waiting blocks
Waiting wait 1 secs
The wait secs block waits
Its easier to play a game or see whats a set amount of time. The
going on in a program if you can make a wait until wait until block responds
script pause for a moment. Different to whats happening in
the program.
blocks can make a script wait a number
of seconds or until something is true.
Sprite waits 5 seconds when clicked Sprite waits until
and then says something the mouse button
is pressed
forever
when clicked
wait until mouse down?
wait 5 secs
go to mouse-pointer
say Im tired of waiting
As soon as the
wait secs block condition is true, the
With the wait secs block you can wait until block sprite moves to the
enter the number of seconds you This block waits until the Boolean mouse-pointer
want a sprite to wait. expression in it is true.

Magnetic mouse The script repeats until the


mouse button is released
Different loops can be used when clicked The not block detects
together to make programs. when the mouse button
forever is not being pressed
This program starts once the
mouse button is pressed. wait until mouse down?
The sprite follows the
mouse-pointer until the repeat until not mouse down?
mouse button is released. It
then jumps up and down five go to mouse-pointer
times. The whole thing then
repeats itself because its all
inside a forever loop. repeat 5

change y by 20

wait 0.25 secs This makes the


sprite jump up
change y by -20

wait 0.5 secs This makes the


sprite drop down
Nested loops
Pay careful attention to how The repeat 5 block
the loops are nested inside makes the sprite jump
the forever block. up and down five times
70 S TA R T I N G F R O M S C R AT C H

Sending messages SEE ALSO

3839 Making
things move
Sometimes its useful for sprites to communicate
with each other. Sprites can use messages to tell
4041 Costumes
other sprites what to do. Scratch also lets you
4445 Events
create conversations between sprites. This Events block lets a sprite send a
message to all the other sprites

broadcast message1
Broadcasting
This block starts a script when
The broadcast blocks in the Events menu a sprite receives a message
enable sprites to send and receive messages.
Messages dont contain any information other when I receive message1
than a name, but can be used to fine-tune a Broadcast blocks
sprites actions. Sprites only react to messages One type of broadcast block lets a sprite send a message.
that they are programmed to respond to The other tells the sprite to receive a message. Choose an
they ignore any other messages. existing message or create a new one.

This message starts the script


that makes the starfish swim
away from the shark

when I receive shark_here


when clicked
switch costume to starfish-b
forever
glide 1 secs to x: 133 y: 91
show

broadcast shark_here Choose new message... The starfish glides out of


from the menu to create the sharks way, showing
glide 5 secs to x: 150 y: -150 this name its scared costume

hide This message tells the


starfish that the shark is
broadcast shark_gone gone, so its safe to return

glide 5 secs to x: -150 y: 150


when I receive shark_gone

Shark danger switch costume to starfish-a


Choose two sprites a shark and a starfish. Give the shark glide 1 secs to x: 0 y: 0
the script above, and the starfish the two scripts on the
right. When the shark arrives it sends a message, which The starfish glides back to the middle of
makes the starfish swim away. the screen, showing its happy costume
SENDING MESSAGES 71
Conversations
To create a conversation between sprites use
broadcast message and wait blocks with say
blocks, which make your sprites talk using broadcast message1 and wait
speech bubbles. Start a new project and add
Waiting blocks
two monkey sprites to it. Give the script on the This block sends a message, then waits for all the
left to one monkey, and the two scripts on the scripts that react to the message to finish before
right to the other. the program continues.

The first monkey Hello!


starts the
conversation
Hi!

Say blocks let your


sprites talk using
speech bubbles
The hello
message triggers
The second
when clicked the second
monkey responds
monkeys script
to the first one
say Hello! for 2 secs

broadcast hello and wait when I receive hello

say How are you? for 2 secs say Hi! for 2 secs

broadcast howareyou

When the second when I receive howareyou


script ends, the first
script continues say Great thanks! for 2 secs
How are you?

The howareyou
message starts the
third script
Great thanks!

Chatty monkeys
This program works because it uses the broadcast message
and wait block. If the broadcast message block was used,
the monkeys would talk over each other.
72 S TA R T I N G F R O M S C R AT C H

Creating blocks SEE ALSO

5051 Variables
To avoid repeating the same set of blocks over and over Time to 8283
experiment

again, its possible to take a shortcut by creating new blocks.
Each new block can contain several different instructions.

Making your own block


You can make your own blocks in Scratch that run a script when
theyre used. Try this example to see how they work. Programmers
call these reusable pieces of code subprograms or functions.
Create a new block New block appears
1 Click on the More Blocks button, 2 Your new block jump appears
and then select Make a Block. Type the in the blocks palette, and a define
word jump and click OK. block appears in the scripts area.

Scripts Costumes Sounds


Make a Block

Motion Events define jump


jump
Looks Control
Sound Sensing
Pen Operators
Data More Blocks The new block Define the jump
block in the
Click here scripts area
to make a
Make a Block
new block

Define the block Use the block in a script


3 The define block tells Scratch which 4 The new block can now be used in
blocks to run when using the new block. any script. Its as if those jumping blocks
Add this script to define the block. were in the script individually.

Starts your block


definition when clicked
define jump

forever The new block runs


change y by 50 the jumping script that
Jumps up
jump has already been defined
wait 1 secs
wait 1 secs
change y by -50
Waits 1 second before
Drops down repeating the loop
C R E AT I N G B L O C K S 73
Blocks with inputs New Block
Windows in a new block can be used to
give it numbers and words to work with. slide steps and shout greeting
These holes can be used to change
how far the block moves a sprite. Options
Add number input:
Click here to see
all of the options Add string input:

Add boolean input:

Make a new block Add label text: text


1 Make a new block called slide and then
Run without screen refresh
click on Options. Now select Add number
input and type steps. Select Add label text
and change it to and shout. Click Add string OK Cancel
input and call it greeting. Then click OK.
The steps The greeting
variable variable

Define the block


2 In the define block, define slide steps and shout greeting
the holes are replaced with
variables called steps and change x by steps Drag variables from
greeting. Drag these the define block
variables from the define into the script
say greeting for 1 secs
block into the script wherever
you need them. Add this
script to your sprite. change x by 0 steps

This block makes the


number of steps negative
Use the block in a script
3 Now add the below script to a sprite.
By putting different numbers of steps and Starts the script Use a sensible name
greetings into the block, you can make when the spacebar for a new block so the
your sprite behave differently. is pressed program will be easier
to read and change.

The sprite slides


when space key pressed 20 steps and
shouts hello
slide 20 and shout hello

wait 1 secs Now the sprite slides


80 steps and shouts
slide 80 and shout hows it going? hows it going?
74 S TA R T I N G F R O M S C R AT C H

PROJECT 3

Monkey mayhem SEE ALSO

4041 Costumes
This exciting, fast-paced game brings together all of the 3839 Making
things move
Scratch skills youve learned so far. Follow these steps to
create your very own Monkey mayhem and see if you
6667 Sensing and
detecting
can hit the bat with the bananas!
EXPERT TIPS
Getting started Avoiding errors
Start a new Scratch project. The cat sprite isnt needed
This is the biggest Scratch
for this project. To remove it, right-click on it in the program youve tried so far, so you
sprite list and then click delete in the menu. This will might find that the game doesnt
leave you a blank project to work on. always work as you expect it to.
Here are some tips to help things
run smoothly:
Add a new backdrop from the
Make sure you add scripts to the
1 backdrop library. This button is Stage
correct sprite.
found to the left of the sprite list. 1 backdrop
Follow the instructions carefully.
Remember to make a variable before
Click here to add a New backdrop: using it.
new backdrop from Check that all the numbers in the
the backdrop library blocks are correct.

Double-click to select the brick wall1


Monkey mayhem
2 backdrop. The brick wall works well for
by abcd (unshared)
this game, but if you prefer, you could
use a different backdrop instead.

Double-click on a
backdrop in the backdrop
library to make it appear
on the stage
M O N K E Y M AY H E M 75

Go to the sprite library to


3 add a new sprite to the Sprites New sprite:
game. Select Monkey1
from the Animals section. Click here to
The user will control this choose a new sprite
sprite in the game. from the library

Monkey1

Give the monkey the script below. Remember all of the different
4 blocks can be found in the blocks palette, organized by colour. In
this script, Sensing blocks are used to move the monkey around
the stage using the keyboard arrow keys. Run the script when
youve finished to check it works.

This Motion block keeps


the monkey upright
when clicked The arrow keys on the
keyboard will make the
monkey run left and right
set rotation style left-right

go to x: 0 y: -90 Moves the monkey to


his start position at the This Sensing block detects when
bottom of the stage the left arrow key is pressed
forever

if key left arrow pressed? then

point in direction -90 90 makes the monkey


point to the left
move 10 steps
This block makes the monkey look like its
next costume walking by switching between its costumes

if key right arrow pressed? then

point in direction 90 90 makes the monkey


point to the right
move 10 steps
Moves the
next costume monkey 10 steps

Dont forget to save


your work
76 S TA R T I N G F R O M S C R AT C H

MONKEY MAYHEM
Adding more sprites
The monkey can now be moved across the stage using
the left and right arrow keys. To make the game more
interesting, add some more sprites. Give the monkey
some bananas to throw, and a bat to throw them at!

This makes the


Add the Bananas sprite from the sprite
when clicked bananas stay upright 5 library, then give it this script. When the
game starts, the monkey will be holding
set rotation style left-right the bananas. When the spacebar is
pressed, they will shoot vertically up
point in direction 0 Sets the bananas the stage. The bananas then reappear
direction to up at one side of the stage, where they can
show This block makes the bananas be picked up again.
visible on the stage theyll
forever be hidden later

repeat until key space pressed?

go to Monkey1 The bananas will stick


to the monkey until the
spacebar is pressed

repeat 35 This loop moves the


bananas up the stage
move 10 steps

if pick random 1 to 2 = 1 then

go to x: 210 y: -140
This if-then-else block
makes the bananas reappear
else
on either the right or left
side of the stage, randomly
go to x: -210 y: -140

show

wait until touching Monkey1 ?

This makes the script wait until the


monkey picks up the bananas
M O N K E Y M AY H E M 77

Name the
The next step is to add a flying bat and make it drop
New Variable new variable
6 to the ground if its hit by the bananas. Add Bat2 Speed
from the sprite library, then create a new variable Variable name: Speed
called Speed (for the bat sprite only). To create a This variable
new variable, first click the Data button in the For all sprites For this sprite only will only be
blocks palette, and then select the Make a Variable used with the
Cloud variable (stored on server)
button. Untick the box by the Speed variable in the bat sprite
Data section so it doesnt appear on the screen.
OK Cancel
Add the below script to the bat. In the main forever
7 loop, the bat moves to a random position on the left
of the stage, chooses a random speed, then moves
backwards and forwards across the stage until the
bananas hit it. When the bat is hit, it drops to the ground.

This keeps the bat


when clicked sprite upright

set rotation style left-right The bat starts off on the


left of the stage, at a
forever Start of the bats main loop random height

go to x: -300 y: pick random 1 to 100

point in direction 90 Sets the bats direction to right

Picks a random speed


set Speed to pick random 1 to 20

repeat until touching Bananas ?


This makes the bat keep
move Speed steps moving until its hit

Drag the Speed variable from the


if on edge, bounce Data section into this block

broadcast hitbybananas Create this broadcast block to tell


other sprites that the bat has been hit.
point in direction 180 This will be useful later in the project
Sets the direction of
repeat 40 the bat to down

move 10 steps Makes the bat


fall down and off
the stage

Dont forget to save


your work
78 S TA R T I N G F R O M S C R AT C H

MONKEY MAYHEM
Create a new variable called Time. Make sure its
The finishing touches 8 available for all sprites in the game by selecting the
To make the game even more exciting, you For all sprites option. Check that the box next to
can add a timer, use a variable to keep score the variable in the blocks palette is ticked, so that
of how many bats the player hits, and add a players can see the time displayed on the stage.
game over screen that appears once the
player is out of time. Time

Click on the small picture of the


9 stage in the stage list, then select
the Backdrops tab above the
blocks palette. Right-click the
T Monkey mayhem
by abcd (unshared)

existing backdrop and duplicate


it. Add the words GAME OVER
to the new backdrop.
Use the text tool
to write on the
duplicate backdrop
GAME OVER
Your game over screen will
look something like this

Click the Scripts tab and when clicked


10 add this script to the stage
to set up the timer. When switch backdrop to brick wall1
the timer begins, it starts a This sets the time
count-down loop. When set Time to 30 limit to 30 seconds
the loop finishes, the
GAME OVER screen is repeat until Time = 0
shown and the game ends.
wait 1 secs Counts down until the
timer reaches zero
change Time by -1

switch backdrop to brick wall2 Switches to the GAME


Ends the game OVER backdrop
stop all
M O N K E Y M AY H E M 79

Click the bananas sprite in Tick the box to


11 the sprite list. Create a new show the score on
variable called Score and the stage
make it available for all sprites.
Move the score to the top right Score
of the stage by dragging it.

Add this short script to the bananas sprite. Add this script to the bananas sprite too. When the
12 It sets the score to 0 at the beginning 13 bananas hit the bat, it plays a sound, increases the
of the game. score by 10, and hides the bananas.

Makes the
when clicked bananas when I receive hitbybananas
disappear
Add the pop sound
set Score to 0 hide
from the sound library
to the banana sprite
play sound pop (see pp.5859)
This resets the score
change Score by 10

Each time the bat


is hit the player
Next add some music to the 2
scores 10 points
14 game. Click on the stage and
select the Sounds tab above the
blocks palette. Load the eggs REMEMBER
music from the sound library.
Achievements
eggs
00:15.2
Congratulations youve built a
Add the eggs music
from the Sounds tab complete Scratch game. Here
are some of the things you have
achieved so far:
Add the script below to the stage. It plays the
15 eggs music on a loop, but will stop when the Made a sprite throw objects at
stop all block ends the game. another sprite.
Made a sprite fall off the stage
once hit.
The background
when clicked music is repeated Added a time limit to your game.
in an endless loop Added background music that plays
forever as long as the game continues.
play sound eggs until done Added a game over screen that
appears at the end of the game.
Dont forget to save
your work
80 S TA R T I N G F R O M S C R AT C H

MONKEY MAYHEM
Time to play Make up a new To make the game last
Now the game is ready to play. Click the title for the game longer, try increasing
and type it in the time limit
green flag to start and see how many
times you can hit the bat with the
bananas before the time runs out. Untitled
by abcd (unshared)

Left cursor key Right cursor key


Time 30

Spacebar
Space
Controls
Steer the monkey left and right with To make the
the keyboard cursor keys. Tap the game harder,
spacebar to fire bananas at the bat. make the bat
move faster

EXPERT TIPS
Adding more sprites
To add more bats to aim at, right-click the bat in
the sprite list and select duplicate. A new bat
will appear with all the same scripts as the first
one. Try adding some other flying sprites:

1. Add a sprite from the sprite library. The flying


hippo (Hippo1) is great for this game.
2. Click on the bat in the
sprite list.
3. Click the bats script
and hold the mouse
button down.
4. Drag the bats script on
to the new sprite in the
sprite list.
5. The script will copy
across to the new sprite.
M O N K E Y M AY H E M 81

Try out different Play the game three


backdrops and see times and see how high
how the game looks you can score

Click the red stop button


to end the game early

Score 0

You can edit the program to


give the player more points
for each successful hit

To make the game harder,


try changing the code to
make the bananas move
more slowly

Try changing the


monkey into a
different sprite

Going bananas
There are countless ways to
change Monkey Mayhem. By
adjusting the speeds, scores,
sounds, and sprites, you can
create your own unique
version of the game.
82 S TA R T I N G F R O M S C R AT C H

Time to experiment SEE ALSO


What is 8687
Python?

Now youve learned the basics of Scratch, you can
experiment with some of its more advanced features. The
Simple 102103
commands

more you practise, the better your coding will become.

Join a coding club


Things to try Is there a coding club in
Not sure what to do next with your school or local area?
Scratch? Here are a few ideas. Theyre great places to
If you dont feel ready to write meet other Scratch users
and share ideas.
a whole program on your own
yet, you can start with one
that has already been written
and change parts of it.

Scratch allows you to


look at the coding of all
projects on its website

Look at code Remix existing projects


Looking at other programs is a great Can you improve the projects on
way to learn. Go through projects the Scratch website? Scratch lets
shared on the Scratch website. What you add new features and then
can you learn from them? share your version.

Drag and drop


Backpack to copy a script
The backpack enables you to store useful or sprite into the
when clicked
backpack
scripts, sprites, sounds, and costumes and
forever
move them from project to project. Its
found at the bottom of the Scratch screen. Backpack say hello!

move 10 steps

Drag and drop


You can drag sprites and scripts into
A sprite in the
your backpack, then add them to
backpack Sprite 1
other projects.
TIME TO EXPERIMENT 83
Help! Tips
It can be hard to write a program if you
dont know about some of the blocks you
could use. Scratch has a help menu to turn degrees
make sure you understand every block.
Turn left

Block help
1 To find out more about a particular
block, click the block help button on the
when left arrow key pressed
cursor tools bar at the top of the screen.
The help
window explains turn 30 degrees
?
every block
This is the block
help button
Ask a question 30
2 The cursor will turn into a
The cursor
becomes a
question mark. Use this to click on question mark
the block you want to know about.

turn 15 degrees
?
Type in the number of degrees you want the
sprite to rotate.
Help window
3 The help window opens to
(If you type in a negative number, the sprite will
go in the opposite direction.)
tell you how the block works, with
tips on how it can be used.

Learn another language


Youre now on your way to mastering your first
programming language. Learning other languages will
enable you to write different types of programs. Why not
try Python next? What youve already learned about
Scratch will help you to pick up Python quickly.

Similar to Scratch
Python uses loops, variables,
and branches too. Use your
Scratch knowledge to start
learning Python!
Playing
with Python
86 P L AY I N G W I T H P Y T H O N

What is Python? SEE ALSO


Installing 8891
Python

Python is a text-based programming language.
It takes a bit longer to learn than Scratch, but can
Simple 102103
commands

be used to do much more. Harder 104105
commands

A useful language
Python is a versatile language that can be used to
make many different types of programs, from word
processing to web browsers. Here are a few great
reasons to learn Python.

Easy to learn and use Contains ready-to-use code


1 Python programs are written in a 2 Python contains libraries of
simple language. The code is quite easy to preprogrammed code that you can
read and write, compared to many other use in your programs. It makes it easier
programming languages. to write complex programs quickly.

Python contains
lots of programs
you can use and
build on

Useful for big organizations


3 Python is powerful. It can be used EXPERT TIPS
to write real-world programs. It is used by
Google, NASA, and Pixar, among others. Getting started
Before learning how to program in Python, its
useful to get familiar with how it works. The next
few pages will teach you how to:

Install Python: Python is free, but youll have to


install it yourself (see pp.8891).
Use the interface: Make a simple program and save
it on the computer.
Experiment: Try some simple programs to see how
they work.
W H AT I S P Y T H O N ? 87
Scratch and Python
Lots of elements that are used in Scratch are also
used in Python they just look different. Here are
a few similarities between the two languages.

print(Hello World!)
when clicked
Type the message
say Hello World! you want here

This block displays


the message in a
speech bubble

Hello World!
The message appears
on screen like this

Hello World!
Print in Scratch Print in Python
In Scratch, the say block is used to show In Python, a command called print displays
something on the screen. text on the screen.

Turns the pen on

pen down Repeats the blocks


from turtle import *
inside it 24 times to
repeat 24 draw a circle pendown() This starts a loop

move 10 steps
for n in range(24):
Moves the sprite
forward forward(10)
turn 15 degrees Turns the
right(15)
turtle clockwise
Turns the sprite
penup() 15 degrees

pen up Turns the


pen off

Turtle graphics in Scratch Turtle graphics in Python


The script above uses the pen down block Theres also a turtle in Python. The code above
to move the cat sprite and draw a circle. can be used to draw a circle.
88 P L AY I N G W I T H P Y T H O N

Installing Python
Before you can use the Python programming language,
you need to download and install it on your computer.
Python 3 is free, easy to install, and works on Windows
PCs, Macs, and Linux operating systems such as Ubuntu.

What is IDLE? EXPERT TIPS


When you install Python 3, youll also get a free program Saving code
called IDLE (Integrated DeveLopment Environment).
Designed for beginners, IDLE includes a basic text editor When saving work in Python, you
will need to use the File > Save
that allows you to write and edit Python code. As... menu command so you can
name your files. First create a
folder to keep all your files in. Give
WINDOWS the folder a clear name, like
PythonCode, and agree with the
Windows person who owns the computer
Before you download Python, check where to keep it.
what kind of operating system your
computer has. If you have Windows,
find out whether its the 32-bit or
64-bit version. Click the Start
button, right-click Computer, and
left-click Properties. Then choose
System if the option appears.

MAC UBUNTU
Mac Ubuntu
If you use an Apple Mac, find out which Ubuntu is a free operating system that
operating system it has before you install works just like Windows and Macs. To
Python. Click the apple icon in the top find out how to install Python on
left and choose About This Mac. Ubuntu, turn over to page 91.
I N S TA L L I N G PY T H O N 89
Python 3 on Windows
Before you install Python 3 on a Windows PC, make sure you get
permission from the computers owner. You may also need to
ask the owner to provide an admin password during installation.

Go to the Python website Download Python


1 Type the address below into your Internet 2 Click on the latest version of Python for
browser to open the Python website. Click on Windows, beginning with the number 3, which
Download to open the download page. will be near the top of the list.

http://www.python.org Python 3.3.3 Windows x86 MSI Installer

Python 3.3.3 Windows x86-64 MSI Installer


This is the URL (web Choose this if
address) for Python you have a 32-bit Dont worry about Choose this if
version of Windows the exact number, you have a 64-bit
as long as it has a version of Windows
3 at the front
Install Run IDLE
3 The installer file will download automatically. 4 Now check that the program installed
When it finishes, double-click it to install Python. correctly. Open the Windows Start menu, click on
Choose install for all users and click next at each All Programs, Python, and then choose IDLE.
prompt, without changing the default settings.

Python 3.3

Make sure you IDLE (Python GUI)


select Python 3
Module Docs
The Windows installer Python (command line)
icon appears while
Python is installing Python Manuals

A Python window opens Uninstall Python


5 A window like the one below should open
up. You can now start coding just type into the
window after the angle brackets (>>>).

IDLE File Edit Shell Debug Window Help


Untitled

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 18 2013, 21:19:30) [MSC v.1600


64 bit (AMD64)] on win32
Type copyright, credits or license() for more information.
>>> Begin typing code here
90 P L AY I N G W I T H P Y T H O N

Python 3 on a Mac
Before you install Python 3 on a Mac, make sure you get
permission from the computers owner. You may also need to ask
the owner to provide an admin password during installation.

Go to the Python link Download Python


1 Type the address below into your web 2 Check which operating system your Mac has
browser to open the Python website. Click on (see page 88) and click on the matching version of
Download in the navigation panel to go to Python 3. Youll be prompted to save a .dmg file. This version is
the download page. Save it on your Mac desktop. for newer Macs

http://www.python.org Python 3.3.3 Mac OS X 64-bit... (for Mac OS X 10.6 and later)

Dont worry about the Python 3.3.3 Mac OS X 32-bit... (for Mac OS X 10.5 and later)
exact number, as long as
it has a 3 at the front This version runs
on most Macs
Install Run IDLE
3 Double-click the .dmg file. A window 4 During installation, click next at each prompt to
will open with several files in it, including accept the default settings. After installation ends, open
the Python installer file Python.mpkg. the Applications folder on your Mac and open the Python
Double-click it to start the installation. folder (make sure you select Python 3, not Python 2).
Double-click IDLE to check the installation worked.

IDLE icon

Python installer file

Python.mpkg

A Python window opens


5 A window like the one below should
open. You can now start coding just type
into the window after the angle brackets.

IDLE File Edit Shell Debug Window Help


Untitled

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35)


[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type copyright, credits or license() for more information.
>>>
I N S TA L L I N G PY T H O N 91
Python 3 on Ubuntu
If you use the Linux operating system Ubuntu, you can
download Python 3 without having to use a browser just
follow the steps below. If you have a different version of
Linux, ask the computers owner to install Python 3 for you.

Go to Ubuntu Software Center Enter Python into the search bar


1 Find the Ubuntu Software 2 You will see a search box in the
Centre icon in the Dock or the Dash top right. Type Python in the box and
and double-click it. press enter.

Python

Look for version 3


Select IDLE and click Install
3 Look for IDLE (using Python).
IDLE (using Python-3.3) (17)
Integrated Development Environment for Python (using Python-3.3)
Highlight the version beginning with
the number 3 and click Install.
More info Install

Select Dash Run IDLE


4 After installation finishes, check 5 Enter IDLE into the search
the program works. First, select the bar and double-click on the
Dash icon in the top right. blue-and-yellow IDLE (using
Python 3) icon.
Dash icon IDLE icon

A Python window opens


6 A window like the one below should
open. You can now start coding just type
into the window after the angle brackets.

IDLE File Edit Shell Debug Window Help


Untitled

Python 3.2.3 (default, Sep 25 2013, 18:25:56)


[GCC 4.6.3] on linux2
Type copyright, credits or license() for more information.
>>>
92 P L AY I N G W I T H P Y T H O N

Introducing IDLE SEE ALSO

8891 Installing
Python
IDLE helps you write and run programs in Python.
See how it works by creating this simple program
Which 106107
window?

that writes a message on the screen.

Working in IDLE EXPERT TIPS


Follow these steps to make a Python Different windows
program using IDLE. It will teach you
how to enter, save, and run programs. Python uses two different windows the shell
window and the code window (see pages
106107). Weve given them different colours
to tell them apart.
Start IDLE
1 Start up IDLE using the instructions for your Shell window
computers operating system (see pp.8891). The
shell window opens. This window shows the
program output (any information the program Code window
produces) and any errors.

IDLE File Edit Shell Debug Window Help


Untitled

Python 3.3.3 (v3.3.3:c3896275c0f6, Nov 16 2013, 23:39:35)


[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type copyright, credits or license() for more information.
>>>
Messages from What appears here will
Python appear here depend on which operating
system youre using

Open a new window


2 Click the File menu
IDLE File Edit Shell Debug Window Help

at the top of the shell Untitle New Window


window and select New
Open This is the
Window. This opens the
shell window
code window.
Open Module Click here to open
the code window
Recent Files

Class Browser

Path Browser
INTRODUCING IDLE 93
Enter the code
3 In the new code window, type in print(Hello World!)
this text. Its an instruction to write the
words Hello World! Use single
quote marks

Save the code window


4 Click the File menu and select
IDLE File Edit Shell Debug Window Help

Save As. Enter the file name HelloWorld Untitle New Window
and click Save.
prin Open

Open Module

Recent Files

Class Browser
If you get an error message,
check your code carefully
Path Browser
to make sure you havent
made any mistakes.
Close

Save Click here to


save the file
Save As

Save Copy As

Run the program


5 In the code window, click the Run
IDLE File Edit Format Run Window Help

menu and select Run Module. This will HelloWorld Python Shell
run the program in the shell window.
print(Hello World!) Check Module

Click here to Run Module


run the program

Output in the shell window


6 Look at the shell window. The Hello
REMEMBER
World! message should appear when the How IDLE works
program runs. Youve now created your
first bit of code in Python! Always follow these three steps in IDLE: write the code, save it,
and then run it. Remember, code that hasnt been saved wont
>>> run. A warning will come up if you try.
Hello World!
>>> Enter code Save Run
The message will appear
without quote marks
94 P L AY I N G W I T H P Y T H O N

Errors SEE ALSO


Bugs and 148149
debugging

Sometimes programs dont work the first time, but
they can always be fixed. When code for a program
What next? 176177
isnt entered correctly, Python will display an error
message telling you what has gone wrong.

Errors in the code window


When trying to run a program in the code window,
you might see a pop-up window appear with an error
message (such as SyntaxError) in it. These errors stop
the program from running and need to be fixed.

Syntax error Error highlighted


1 If a pop-up window appears with 2 Click OK in the pop-up window and
a SyntaxError message, it often means youll go back to your program. There will
theres a spelling mistake or typing be a red highlight on or near the error.
error in the code. Check that line for mistakes carefully.

SyntaxError print(Hello World!)

There is a missing The error is


invalid syntax quote mark here highlighted

EXPERT TIPS

OK There is a Classic errors


typing error
in the code Some mistakes are particularly easy to make.
Keep an eye out for these common problems:
SyntaxError
Upper vs lower case: The case has to match exactly.
If you write Print instead of print, Python wont
understand the instruction.
unexpected indent Single and double quotes: Dont mix up single and
double quotes. All opening quotes need a matching
closing quote.
OK Minus and underscore: Dont confuse the minus sign
(-) with the underscore sign (_).
Different brackets: Different-shaped brackets, such
There is incorrect as (), {} and [], are used for different things. Use the
spacing in the code,
correct ones, and check theres a complete pair.
which is preventing the
program from running
ERRORS 95
Errors in the shell window
Sometimes, an error message will appear in red Red text means theres
something wrong!
text in the shell window. This will also stop the
program from working.
Name error
1 If the error message NameError appears, it means Python
cant understand one of the words that has been used. If the error is The line in the code (in the
in code entered in the code window, right-click on the error message code window) where the
in the shell window and select Go to file/line. error was found

>>>
Traceback (most recent call last):
File C:\PythonCode\errors.py, line 1, in <module>
pront(Hello World!) Cut
NameError: name pront is not defined Copy

The word Python Click here to highlight the line


Paste
doesnt understand where the error appears in the
code window Go to file/line

Fix the error


2 The line with the error is highlighted pront(Hello World!)
in the code window. The word pront has
been typed instead of print. You can then Change this
edit the code to fix the error. to read print

Spotting errors ERROR BUSTING


Use the tips on these two pages to find Check your code for the following points
the line in the code where the errors Have you copied exactly what you were asked to enter?
appear, then double-check that line. Go
through the check list on the right to help Have you spelled everything correctly?
you find out what has gone wrong.
Are there two quote marks () around the expression you
want to print?
Do you have extra spaces at the beginning of the line?
Spacing is very important in Python.
When things Have you checked the lines above and below the
go wrong highlighted line? Sometimes thats where the problem is.
There are some Have you asked someone else to check the code against the
methods you can book? They might spot something you have missed.
use to find errors
more easily. Heres Are you using Python 3 not Python 2? Programs for Python
3 dont always work in Python 2.
a handy check list.
96 P L AY I N G W I T H P Y T H O N

PROJECT 4
Ghost game SEE ALSO
Ghost game 9899
decoded

This simple game highlights some of the things
to watch out for when writing programs in Python.
Program 100101
flow

Once the code has been typed in, run the program to
play the game. Can you escape the haunted house?

Start IDLE, and use the


1 File menu to open a new # Ghost Game
window. Save the game as from random import randint
ghostgame. Arrange the
windows so you can see print(Ghost Game) Use single quotes
them both, then type this feeling_brave = True Only use capital letters
into the code window. where they are shown
score = 0
Make sure to add
These must be while feeling_brave: a colon here
underscores, not ghost_door = randint(1, 3)
minus signs
print(Three doors ahead...)
This section needs to be print(A ghost behind one.)
indented by four spaces.
If this doesnt happen print(Which door do you open?)
automatically, check
there is a colon after door = input(1, 2, or 3?)
feeling_brave door_num = int(door)
Use two equals
if door_num == ghost_door: signs here
This indent will start
at eight spaces and print(GHOST!)
needs to be reduced
to just four spaces feeling_brave = False
else:
print(No ghost!)
print(You enter the next room.)
Delete all
indents here score = score + 1
print(Run away!)
print(Game over! You scored, score)

There should be no quotes


around score here
GHOST GAME 97

Once the code has been carefully typed in, use the The game begins in the shell window. The ghost is
2 Run menu to select Run Module. You must save 3 hiding behind one of three doors. Which one will
the program first. you pick? Type 1, 2, or 3 then press Enter.

Run Ghost Game


Python Shell Three doors ahead...
Check Module A ghost behind one.
Run Module Which door do you open?
1, 2, or 3?
Choose Run Module
from the Run menu in
the code window Type in your guess

The aim of the game is to pick a door with no ghost If youre unlucky youll pick a door with a ghost
4 behind it. If this happens, youll move to the next 5 behind it, and the game ends. Run the program
room and keep playing the game. again to see if you can beat your last score.

Ghost Game Ghost Game


Three doors ahead... Three doors ahead...
A ghost behind one. A ghost behind one.
Which door do you open? Which door do you open?
1, 2, or 3?3 1, 2, or 3?2
The number you type
No ghost! in appears here GHOST! This is what appears if the
ghost is behind your door
Run away!
This is what youll
see if there is no Game over! You scored 0
ghost behind the
door you choose

The score shows


how many rooms
you survived

1 2 3
98 P L AY I N G W I T H P Y T H O N

Ghost game decoded SEE ALSO

9697 Ghost game


The ghost game displays some of the key features Program 100101
flow

of Python. You can break down the code to see how
the program is structured and what the different
parts of it do.
# Ghost Game

Code structure from random import randint


print(Ghost Game)
feeling_brave = True
1 Game set-up
Python uses spaces at the start of lines score = 0
while feeling_brave:

to work out which instructions belong ghost_door = randint(1, 3)


print(Three doors ahead...)
The main loop
together. These spaces are called indents. 2
print(A ghost behind one.)
print(Which door do you open?)

For example, the code after while door = input(1, 2 or 3?)


door_num = int(door)
Code key
if door_num == ghost_door:
feeling_brave is indented by four spaces print(GHOST!)
This diagram shows the
feeling_brave = False

to show its all part of the main loop. else:


3
print(No ghost!)
structure of the ghost
print(You enter the next room.) game. The numbered
score = score + 1
Branching part print(Run away!) parts are explained in
4
print(Game over! You scored, score)
more detail below.
This is a comment. Its not
shown when the game is run Game ending

Game set-up
1 These instructions only # Ghost Game This sets up the randint
command, which generates
run once at the beginning from random import randint random numbers
of the game. They set up
the title, variables, and the print(Ghost Game)
The print command
randint command. feeling_brave = True displays text when
the game is run
score = 0
This resets the
score to 0

EXPERT TIPS
Type carefully
When using Python, enter the
code very carefully. If you miss
out a colon, quote mark, or
bracket, the program wont work
properly. You need to match the
use of capital letters and spaces
exactly too.
GHOST GAME DECODED 99
The main loop
2 This loop tells the story while feeling_brave: This selects a
random number
and receives the players guess. ghost_door = randint(1, 3) between 1 and 3
It keeps on going as long as there
isnt a ghost behind the door print(Three doors ahead...)
thats picked. When a ghost print(A ghost behind one.) The print
appears, the feeling_brave command displays
variable changes to False and print(Which door do you open?) the text onscreen
the loop stops repeating. door = input(1, 2 or 3?)
This line asks for
door_num = int(door) the players answer
Branching part
3 The program takes a
if door_num == ghost_door:
This branch runs
different path depending on print(GHOST!) if theres a ghost
whether or not there was a behind the door
feeling_brave = False the player picks
ghost behind the door that was
picked. If there was a ghost, the else: If theres no ghost, the
feeling_brave variable is set to print(No ghost!) player sees this message
False. If there wasnt a ghost, the
players score increases by one. print(You enter the next room.)
score = score + 1

The score increases by one


each time the player enters a
This shows a message room without meeting a ghost
telling the player to run
away from the ghost

Game ending
4 This runs just once, when print(Run away!)
you meet the ghost and the print(Game over! You scored, score)
loop ends. Python knows this
isnt part of the loop because
The score is a variable it will
its not indented.
change depending on how many
rooms the player gets through

REMEMBER
Achievements
Congratulations youve created Run a program: Youve learned how
your first Python game! Youll learn to run a Python program.
more about these commands later Structured a program: Youve used
in the book, but youve already indents to structure a program.
achieved a lot: Used variables: Youve used variables
to store the score.
Entered a program: Youve typed a
Displayed text: Youve displayed
program into Python and saved it.
messages on the screen.
100 P L AY I N G W I T H P Y T H O N

Program flow SEE ALSO

3031 Coloured blocks


and scripts
Before learning more about Python, its important to
understand how programs work. The programming basics
Simple 102103
commands

learned in Scratch can also be applied to Python. Harder 104105
commands

From input to output


A program takes input (information in), processes it
(or changes it), and then gives back the results (output).
Its a bit like a chef taking ingredients, turning them
into cakes, and then giving you the cakes to eat.

Input Processing Output


Input command Variables Print command
Keyboard Maths Screen
Mouse Loops Graphics
Program flow in Python
Branches In Python, the keyboard and
mouse are used to input
information, which is processed
Functions using elements such as loops,
branches, and variables. The
output is then displayed on
the screen.
PROGRAM FLOW 101
Looking at the Ghost game through EXPERT TIPS
Scratch goggles One script at a time
Program flow works the same in most programming Theres an important difference
languages. Here are some examples of input, processing, between Scratch and Python.
and output in Pythons Ghost game and what they In Scratch, lots of scripts can
might look like in Scratch. run at the same time. In Python,
however, the program is made
up of only one script.
Python and Scratch
are more similar
than they appear.

Input
1 In Python, the input() function takes
an input from the keyboard. Its similar to the The question in
ask and wait block in Scratch. the Scratch block

door = input(1, 2 or 3?) ask 1, 2 or 3? and wait

ask and wait Scratch block


The question
appears on screen

Processing
2 Variables are used to keep track of the score and This Scratch block
sets the value of the
the function randint picks a random door. Different variable score to 0
blocks are used to do these things in Scratch.

score = 0 set score to 0

set score to 0 Scratch block


Sets the variable
score to 0

ghost_door = randint(1, 3) pick random 1 to 3

pick random Scratch block


Selects a random This Scratch block
whole number selects a random
between 1 and 3 number
Output
3 The print() function is used to Shows a speech bubble
output things in Python, while the say Displays Ghost game containing the words
block does the same thing in Scratch. on the screen Ghost game

print(Ghost game) say Ghost game

say Scratch block


102 P L AY I N G W I T H P Y T H O N

Simple commands SEE ALSO

8687 What is
Python?
At first glance, Python can look quite scary,
especially when compared to Scratch. However,
Harder 104105
commands

the two languages arent actually as different as
they seem. Here is a guide to the similarities
between basic commands in Python and Scratch.
Command Python 3 Scratch 2.0

Run program Run menu or press F5 (in code window)

Stop program Press CTRL-C (in shell window)

Write text say Hello!


to screen
print(Hello!)

Set a variable
magic_number = 42 set magic_number to 42
to a number

Set a variable
word = dragon set word to dragon
to a text string

Read text from ask age? and wait


age = input(age?)
keyboard into
variable print(I am + age) say join I am answer

cats = cats + 1
Add a number
or change cats by 1
to a variable
cats += 1

Add a + 2 a + 2

Subtract a - 2 a 2

Multiply a * 2 a * 2

Divide a / 2 a / 2
SIMPLE COMMANDS 103
Command Python 3 Scratch 2.0

forever
while True:
Forever loop jump
jump()

repeat 10
for i in range (10):
Loop 10 times jump
jump()

Is equal to? a == 2 a = 2

Is less than? a < 2 a < 2

Is more than? a > 2 a > 2

NOT not not

OR or or

AND and and

if a = 2 then
if a == 2:
If then say Hello!
print(Hello!)

if a = 2 then
if a == 2:
say Hello!
print(Hello!)
If then else else
else:
print(Goodbye!) say Goodbye!
104 P L AY I N G W I T H P Y T H O N

Harder commands SEE ALSO

8687 What is
Python?
Python can also be used to do some of the more
complicated things that are possible in Scratch: for
102103 Simple
commands
example, creating complex loops, playing with strings
and lists, and drawing pictures with turtle graphics.

Command Python 3 Scratch 2.0

repeat until roll = 6


Loops with while roll != 6:
conditions jump
jump()

from time import sleep


Wait wait 2 seconds
sleep(2)

Random from random import randint


set roll to pick random 1 to 6
numbers roll = randint(1, 6)

Define a def jump(): define jump


function or
subprogram print(Jump!)
think Jump!

Call a function
or subprogram
jump() jump

Define a define greet who


function or def greet(who):
subprogram print(Hello + who)
with input say join Hello who

Call a function
greet(chicken) greet chicken
or subprogram
HARDER COMMANDS 105
Command Python 3 Scratch 2.0

from turtle import * clear


clear() pen down
Turtle pendown()
move 100 steps
graphics forward(100)
turn 90 degrees
right(90)
penup() pen up

Join strings print(greeting + name) say join greeting name

Get one letter


of a string
name[0] letter 1 of name

Length of
a string
len(name) length of name

Create an
empty list
menu = list() Make a List

Add an item
menu.append(thing) add thing to menu
to end of list

How many
len(menu) length of menu
items on list?

Value of 5th say item 5 of menu


item on list
menu[4]

Delete 2nd
del menu[1] delete 2 of menu
item on list

if menu contains olives then


if olives in menu:
Is item on list? say Oh no!
print(Oh no!)
106 P L AY I N G W I T H P Y T H O N

Which window? SEE ALSO

9293 Introducing
IDLE
There are two different windows to choose from
in IDLE. The code window can be used to write
9697 Ghost
game
and save programs, while the shell window runs
Python instructions straight away.

The code window Running programs


So far in this book, the code window has been used to This process is used for
write programs. You enter the program, save it, run it, running Python programs.
Programs always have to be
and the output appears in the shell window. saved before running them.

Enter code Save Run module Output

Enter a program in the code window Output in the shell window


1 Enter this code in the code window, save 2 When the program runs, its output
it, and then click on Run module in the Run (the results of the program) is shown in the
menu to run the program. shell window.

a = 10 Give a the value 10 >>>


b = 4 Give b the value 4
14
print(a + b) 6
The print command
print(a - b) shows the answers to The answers to the sums
these sums appear in the shell window

The shell window


Python can also understand commands that are
typed in the shell window. They run as soon as they
are typed in, and the result is shown straight away.
The first two commands have
>>> a = 10 no output because they are just
assigning values to a and b
>>> b = 4
>>> a + b Code and output together
14 Output appears The shell window shows the code
immediately and the output together. Its easier Test your ideas
>>> a - b to tell which answer belongs to The shell window gives you an immediate
6 which sum when the commands response, which makes it ideal for testing
are typed in the shell window. instructions and exploring what they can do.
WHICH WINDOW? 107
Python playground EXPERT TIPS
The shell window can be used to try out all sorts of Colours in the code
Python commands, including drawing. The turtle is
used to draw on screen in the same way that the pen IDLE colour-codes the text.
The colours give you some clues
is used in Scratch.
about what Python thinks each
Loads all the commands
piece of text is.
that control the turtle

Enter the code Built-in functions


>>> from turtle import * Type these Commands in Python, such as
>>> forward(100) instructions in the print, are shown in purple.
shell window. They
>>> right(120) run after each one Strings in quotes
>>> forward(100) is typed. As the Green indicates strings. If the
turtle moves, it brackets are green too, theres
Moves the turtle forward draws a line. a missing quote mark.

Most symbols and names


Most code is shown in black.
Turtle graphic
Can you work out how to Output
draw other shapes, such as Pythons output in the shell
a square or a pentagon? window is shown in blue.
To start over, type clear()
into the shell window. Keywords
Keywords, such as if and else,
are orange. Python wont let you
Which window should you use? use keywords as variable names.
Should you use the code window or the
Errors
shell window? It depends on the type of
Python uses red to alert you
program youre writing, and whether it has to any error messages in the
to be repeated. shell window.

Code window
The code window is ideal for
longer pieces of code
Code vs Shell Shell window
The shell window is perfect for
quick experiments, such as
because they can be saved checking how a command
and edited. Its easier than works. Its also a handy
retyping all the instructions calculator. It doesnt save the
if you want to do the same instructions though, so if youre
thing again or try something trying something you might
similar. It needs to be saved want to repeat, consider using
and run each time, though. the code window instead.
108 P L AY I N G W I T H P Y T H O N

Variables in Python SEE ALSO


Types of data 110111
Variables are used to remember pieces of information Maths in 112113
Python

in a program. They are like boxes where data can be
stored and labelled.
Strings in 114115
Python

Input and 116117
output

Creating a variable
When a number or string is put into a variable
Functions 130131
its called assigning a value to the variable.
You use an = sign to do this. Try this code in
the shell window. REMEMBER
Variable Value assigned Variables in Scratch
name to the variable
The command to assign a variable in Python does
>>> bones = 3 the same job as this Scratch block. However, in
Python you dont have to click a button to create
Assign a number a variable. Python creates the variable as soon as
To assign a number, type in the variable name, you assign a value to it.
an equals sign, and then the number.
set bones to 3
Variable String assigned
name to the variable
Scratch block for giving
a value to a variable
>>> dogs_name = Bruno

Assign a string
To assign a string, type in the variable name, an
equals sign, and then the string in quote marks.

Printing a variable
The print command is used to show something
on the screen. It has nothing to do with the printer.
You can use it to show the value of a variable.

>>> print(bones) >>> print(dogs_name)


No quote
3 Variable name Bruno marks here

Number output String output


The variable bones contains the The variable dogs_name contains a string, so the
number 3, so thats what the shell string is printed. No quote marks are shown when
window prints. you print a string.
VA R I A B L E S I N PYT H O N 109
Changing the contents >>> gifts = 2
of a variable >>> print(gifts) Changes the value
To change the value of a variable, 2 of the variable
simply assign a new value to it.
>>> gifts = 3
Here, the variable gifts has the
value 2. It changes to 3 when its >>> print(gifts)
assigned a new value. 3

Using variables EXPERT TIPS


The value of one variable can be assigned to another Naming variables
one using the = sign. For example, if the variable
rabbits contains the number of rabbits, we can use There are some rules you have to
it to assign the same value to the variable hats, so that follow when naming your variables:
each rabbit has a hat. All letters and numbers can be used.
You cant start with a number.
Assign the variables
1 This code assigns the number 5 to
Symbols such as -, /, #, or @ cant
be used.
the variable rabbits. It then assigns the
same value to the variable hats. Spaces cant be used.
An underscore ( _ ) can be used
Value assigned instead of a space.
Variable to the variable
name Uppercase and lowercase letters are
different. Python treats Dogs and
>>> rabbits = 5 dogs as two different variables.
Dont use words Python uses as a
>>> hats = rabbits command, such as print.
hats now has the
same value as rabbits

Print the values Change the value of rabbits


2 To print two variables, put them both in
3 If you change the value of rabbits, it doesnt
brackets after the print command, and put a affect the value of hats. The hats variable only
comma between them. Both hats and changes when you assign it a new value.
rabbits contain the value 5.
Give rabbits
>>> rabbits = 10 a new value
>>> print(rabbits, hats)
>>> print(rabbits, hats)
5 5 Leave a space Value for hats
after the comma 10 5 remains the same
110 P L AY I N G W I T H P Y T H O N

Types of data SEE ALSO


Maths in 112113
Python

There are several different types of data in Python.
Most of the time, Python will work out what type
Strings in 114115
Python

is being used, but sometimes youll need to Making 118119
decisions
change data from one type to another.
Lists 128129
Numbers
Python has two data types for numbers. Integers are whole numbers,
(numbers without a decimal point). Floats are numbers with a
decimal point. An integer can be used to count things such as sheep,
while a float can be used to measure things such as weight.

>>> sheep = 1 >>> sheep = 1.5


An integer 1.5
>>> print(sheep) is a whole >>> print(sheep) is a float
number
1 1.5
Integers Floats
An integer is a number without A float is a number with a decimal
a decimal point, such as the 1 point, such as 1.5. They arent normally
in the variable sheep. used to count whole objects.

Strings
Just like in Scratch, a piece of text in Python is called
a string. Strings can include letters, numbers, spaces, Always remember that
and symbols such as full stops and commas. They are strings need quote
marks at the start
usually put inside single quote marks. and the end.

The string
in quotes

Using a string >>> a = Coding is fun!


To assign a string to
a variable, put the >>> print(a) The value of
text inside single the variable a
Coding is fun! printed out
quote marks.
T Y P E S O F D ATA 111
Booleans EXPERT TIPS
In Python, a Boolean always has a value Spotting data types
that is either True or False. In both cases,
the word begins with a capital letter. In Python, there are many data types. To find out
what data type something is, you can use the
type command.
No quote
marks type
command
True >>> a = True
When the value >>> type(24)
True is put into >>> print(a)
<class int> 24 is an
a variable, it will be True integer (int)
a Boolean variable. >>> type(24.3)
Boolean value <class float>
printed 24.3 is a float
>>> type(24) (float)
False
When the value <class str>
>>> a = False
False is put into
>>> print(a) 24 is a string (str)
a variable, it will because it is in
be a Boolean Boolean value
False printed
quote marks
variable too.

Converting data types


Variables can contain any type of data. Problems
occur if you try to mix types together. Data types
sometimes have to be converted, otherwise an error
message will appear.
String in quote marks
Variable name shown on screen
Mixed type
The input command >>> apple = input(Enter number of apples )
always gives a string, Enter number of apples 2
even if a number is Tries to add the number 1
entered. In this example, >>> print(apple + 1) to the variable apple
since apple actually TypeError
contains a string, an error
message is displayed. The program gives an error message as Python
doesnt know how to add a number to a string

Converting data types


To convert the string into >>> print(int(apple) + 1)
a number, the int() 3
command is used to turn
it into an integer. The program now works The variable turns from a string into an
and shows the result integer, so a number can be added to it
112 P L AY I N G W I T H P Y T H O N

Maths in Python SEE ALSO

5253 Maths
Python can be used to solve all sorts of 108109 Variables
in Python
mathematical problems, including addition,
subtraction, multiplication, and division.
Variables can also be used in sums.

Simple calculations
In Python, simple calculations can be made by typing them
You cant divide by zero,
into the shell window. The print() function is not needed so youll always get an error
for this Python gives the answer straight away. Try these if you try to do so.
examples in the shell window:

Use the shell window


to get instant results
>>> 12 + 4 >>> 12 - 4
16 8
The answer
Addition appears when Subtraction
you press Enter
Use the + symbol to add Use the - symbol to subtract the
numbers together. second number from the first one.

Computers use the * symbol,


not x, for multiplication

Division in Python gives an


>>> 12 * 4 >>> 12 / 4 answer as a float (a number
with a decimal point)
48 3.0

Multiplication Division
Use the * symbol to multiply two Use the / symbol to divide the
numbers together. first number by the second one.

First it works out that First it works out


Using brackets 6 + 5 = 11, then 11 that 5 * 3 = 15, then
Brackets can be used to instruct is multiplied by 3 15 is added to 6

Python which part of a sum to


do first. Python will always work >>> (6 + 5) * 3 >>> 6 + (5 * 3)
out the value of the sum in the 33 21 Different answer
bracket, before solving the rest
Addition first Multiplication first
of the problem. In this sum, brackets are Brackets here are used to do the
used to instruct Python to multiplication first, in order to end
do the addition first. up with the correct answer.
M AT H S I N P Y T H O N 113
Do a simple addition
Putting answers in variables 1 This program adds together the
If variables are assigned number values, you variables ants and spiders, and puts
can use them within sums. When a sum is the answer into the variable bugs.
assigned to a variable, the answer goes into
the variable, but not the sum. >>> ants = 22
>>> spiders = 35
>>> bugs = ants + spiders
>>> print(bugs)
Adds the values of the
57 two variables together

Prints the value in bugs

Change the value of a variable Skipping the assignment


2 Change the value of the ants or spiders 3 If the sum is not assigned to the variable
variable. Add the variables together again and put bugs, even if the value of ants and spiders
the answer in the variable bugs. changes, the value of bugs wont.

Change the value


>>> ants = 22 in spiders
>>> ants = 11 Prints the
>>> spiders = 18 >>> spiders = 17 value in bugs

>>> bugs = ants + spiders >>> print(bugs)


>>> print(bugs) Add the variables 40
together again
40 The answer changes The answer hasnt changed
(its still 18 + 22)

Random numbers REMEMBER


To pick a random number, you first need to load the Random block
randint function into Python. To do this, use the import
command. The randint() function is already programmed The randint() function works like
the pick random block in Scratch.
with code to pick a random integer (whole number). In Scratch, the lowest and highest
possible numbers are typed into
the windows in the block. In
Adds the randint()
function
Python, the numbers are put in
brackets, separated by a comma.
>>> from random import randint
pick random 1 to 6
>>> randint(1, 6) Picks a random number
between 1 and 6
3 3 has been picked at random Whole numbers
Both the Python randint() function
Roll the dice and the Scratch block pick a random
The randint() function picks a random number between whole number the result is never
the two numbers in the brackets. In this program, in decimals.
randint(1, 6) picks a value between 1 and 6.
114 P L AY I N G W I T H P Y T H O N

Strings in Python SEE ALSO

5455 Strings
and lists
Python is excellent for using words and sentences
within programs. Different strings (sequences of
110111 Types
of data
characters) can be joined together, or individual
parts of them can be selected and pulled out.

Creating a string
A string might include letters, numbers, symbols,
or spaces. These are all called characters. Strings
can be placed in variables. The quote marks
indicate the variable
contains a string
Strings in variables
Variables can store strings. >>> a = Run!
Type these two strings into
the variables a and b. >>> b = Aliens are coming.

Adding strings
Adding two numbers together creates a new number.
EXPERT TIPS
In the same way, when two strings are added together,
one string simply joins on to the other one. Length of a string
The len() function is used to find
The variables a and b
out the length of a string. Python
>>> c = a + b counts all of the characters,
combine to become
>>> print(c) variable c including spaces, to give the total
number of characters in a string.
Run! Aliens are coming.
Calculates the
Adding strings together length of the string
The + symbol joins one string to another. in variable a (Run! )
and the answer becomes the variable c. A new string is added
to variable c >>> len(a)

>>> c = b + Watch out! + a 4

>>> print(c) >>> len(b)

Aliens are coming. Watch out! Run! 18

The string in variable b


Adding another string in between The new string (Aliens are coming.) is
A new string can also be added between appears in the middle 18 characters long
two strings. Try the example above. of the message
STRINGS IN PYTHON 115
Numbering the characters
Each character in a string is allocated a number
according to its position. This position number
can be used to look at individual letters or
symbols, or to pull them out of a string.

Count begins from zero Counting the characters


1 When counting the positions, Python 2 The position number is called an
starts at 0. The second character is in position index. It can be used to pull out a
1, the third in position 2, and so on. particular letter from a string.

>>> a = FLAMINGO The sixth letter, >>> a[3]


N, is in position 5 Square brackets go
M around the index

F L A M I N G O The character in position 3


from the variable a

0 1 2 3 4 5 6 7 The last character,


O, is in position 7

The first character,


F, is in position 0

Slicing From the start or the end


3 Two indexes can be used to pull out 4 If you leave off the start or end
a part of the string or slice it. The letter in index, Python will automatically use the
the last position isnt included. first or the last character of the string.

>>> a[1:7] Colon defines the >>> a[:3]


LAMING range of characters FLA
>>> a[3:]
A slice from index 1 to Starts at Ends at index 7
index 6 of variable a index 0 MINGO

Apostrophes >>> print(It\s a cloudy day.)


Strings can go in single quotes or double Its a cloudy day.
quotes. However, the string should start
and end with the same type of quote Escaping the apostrophe
mark. This book uses single quotes. But So Python doesnt read an
apostrophe as the end of the
what happens if you want to use an The apostrophe
is included in string, type a \ before it.
apostrophe in your string? the string This is called escaping it.
116 P L AY I N G W I T H P Y T H O N

Input and output SEE ALSO

100101 Program
flow
Programs interact with users through input and output.
Information can be input into a program using a keyboard.
110111 Types
of data
Output is shown as information printed on the screen. Loops 122123
in Python

Input The input() function allows


The input() function is used to accept input from the users to interact with a program
using their keyboard
keyboard into a program. It waits until the user finishes
typing and presses the return or Enter key.

Adding a space
Using input Output in the shell window
1 A program can prompt the
after the colon
makes the output 2 When the program is run, the message
look tidier
user what to type. The message is Enter your name: and its response appear in
put inside the brackets of input(). the shell window.

name = input (Enter your name: ) Enter your name: Jina


print(Hello, name) Hello Jina
What the program outputs depends Program outputs User types in
on what name the user types message their name

Output
The print() function is used to display characters
in the shell window. It can be used to show
a combination of text and variables.
Output is displayed
on the screen

Create some variables Using the print() function


1 Set up three variables for this simple 2 You can put several items inside the brackets
experiment. Two are strings and one is an of the print() function. You can combine variables of
integer (whole number). different types, and even combine strings and variables.

>>> a = Dave >>> print(a, b, c)


Quote marks
>>> b = is show these Dave is 12
are strings
>>> c = 12 >>> print(Goodbye, a)
Goodbye Dave

No quote marks as Comma separates


this is an integer the different items
INPUT AND OUTPUT 117
Two ways to separate strings
So far, the output has been printed on one The separator

line with a space between the items. Here


are two other ways of separating strings. >>> print(a, b, c, sep=\n)
Dave
Each variable starts
>>> print(a, b, c, sep=-) is on a new line

Dave-is-12 12
Hyphenate the outputs The character Outputs on new lines
A hyphen can be put between the variables between the The space or character between the outputs
outputs
when theyre printed. Other characters, is called a separator (sep). Using \n prints
such as + or *, can be used too. each output on a new line.

Three ways to end output EXPERT TIPS


There are several different ways you Options at the end
can signal the end of the output of
a print function. The end and sep labels tell Python that the
next item in the program isnt just another
string. Remember to use them, otherwise the
>>> print(a, .) Full stop added program will not work correctly.
Dave . as a string

Full stop added


>>> print(a, end=.) as an end
end sep
character
Dave.
Add a full stop to the output
A full stop can be added as another string to be
printed, but it will print with a space before it.
To avoid this, use end=. instead.

Space >>> print(a, end=\n\n\n\n)


Loop to print as end Dave
three times character
Each \n starts
a new line
Blank space
>>> for n in range(3): before the
print(Hurray! end= ) prompt

Hurray! Hurray! Hurray! >>>


Output on one line Blank lines at the end
Usually, each new print command starts Output is Using \n starts each output from a new
on a new line. To get the output all on one all printed line. Several of them can be used together
line use a space as the end character. on one line to add blank lines at the end of a program.
118 P L AY I N G W I T H P Y T H O N

Making decisions SEE ALSO

6263 True or
false?
Programs make decisions about what to do
by comparing variables, numbers, and strings
108109 Variables
in Python
using Boolean expressions. These give an
answer of either True or False.

Logical operators
Logical operators are used to compare variables against
numbers or strings, or even against other variables.
The resulting answer is either True or False.

Equals
== operator

Not equal
!= to operator >>> toys = 10 This checks whether
toys is equal to 1
Less than
>>> toys == 1

< operator False This checks whether


toys is more than 1
>>> toys > 1
Greater than
True This checks whether
> operator
>>> toys < 1
toys is less than 1

Less than or This checks if toys


equal to operator
False
<= >>> toys != 1
is not equal to 1

This checks if toys is less


Greater than or True than or equal to 10
>= equal to operator
>>> toys <= 10
The not logical operator
True reverses the answer (in this
Types of comparison operators example, from False to True)
There are six comparison operators. Python >>> not toys == 1
The or logical operator
uses two equals signs to compare if two True checks if toys is 9 or 10
things are the same. (A single equals sign
is used to assign a value to a variable.) >>> toys == 9 or toys == 10
True
Use the shell to check >>> toys == 9 and toys == 10
Logical operators also work in the False The and logical operator is
shell window. Use this example to used to check if toys is both 9
and 10. This can never be true,
try out several logical operators,
so the answer is False
including not, or, and and.
MAKING DECISIONS 119
Check for the birthday
Is it Ellas birthday? 1 Create variables for a day and a month.
Ellas birthday is the 28th of July. This Use the and logical operator to check
program takes a day and a month whether it is the 28th of July.
and uses logical operators to check The and operator
whether its Ellas birthday. >>> day = 28 checks to see if both
>>> month = 7 conditions are true

>>> day == 28 and month == 7


Remember to use
True two equals signs
Its Ellas birthday!

Not the birthday detector Birthday or New Years Day?


2 You can reverse the answer using the not 3 Use the or logical operator to check whether
logical operator. You will get the answer True on its Ellas birthday or New Years Day. Use brackets to
every day, except for Ellas birthday. combine the correct days and months.

>>> day = 28 >>> day = 28 Checks for the


This character 28th of July
>>> month = 7 is used to make
>>> month = 7
>>> not (day == 28 and \ code go over >>> (day == 28 and month == 7) \
two lines
month == 7) or (day == 1 and month == 1)
Its Ellas birthday, so the The answer will be True if its
False answer is False True Ellas birthday or New Years Day

Strings EXPERT TIPS


Two strings can be compared using the Operator for strings
== operator or the != operator. Strings
have to match exactly to get a True output. The in operator can be used to see
whether one string is inside another
string. Use it to check if a string
>>> dog = Woof woof The strings match
contains a particular letter or a
exactly, so the
>>> dog == Woof woof answer is True group of letters.
True The strings dont match
because there isnt a This checks whether
>>> dog == woof woof a is in abc
capital W
False
The strings dont
>>> dog == Woof woof match because theres >>> a in abc
extra space before True
False the quote mark
>>> d in abc
Exactly the same
d is not in abc, so
Strings must match for them to be equal. That False the answer is False
means they must use capital letters, spaces,
and symbols in exactly the same way.
120 P L AY I N G W I T H P Y T H O N

Branching SEE ALSO

6465 Decisions
and branches
Boolean expressions can be used to determine which
route a program should follow, depending on whether
118119 Making
decisions
the answer to the expression is True or False. This is
known as branching.

Do or do not
The if command means that if a condition is True, then the program runs
a block of commands. If the condition isnt True, the block is skipped. The
block after the if command is always indented by four spaces.
Prompts users
what to type in
if condition
1 This code asks the user ans = input(Is it your birthday? (y/n))
if its their birthday. It checks if ans == y: This part of the
whether the answer is y. If so, program only runs
a birthday message is printed. print(Happy Birthday!) if the user types y

Indented by four spaces


Type in y
Output if condition is True
2 Run the program and enter y. Is it your birthday? (y/n)y
The message is printed. It doesnt Happy Birthday! The message appears
appear if anything else is entered.

Do this or that
The if command can be combined with an
else command. This combination means that
if something is True, one thing happens, and if
not, something else happens.

if-else condition
1 If y is entered, the program ans = input(Is it New Year? (y/n))
prints a special message for New if ans == y: Remember the colon This message only
Year. It shows a different message appears if the
if anything else is entered. print(Happy New Year!) user enters y
print(Time for Fireworks.)
else: Only runs if user
does not enter y
Remember to put print(Not yet!)
a colon here too
BRANCHING 121
Output if condition is True else condition output
2 Run the program and type in y. The program 3 Type in n, or any other character,
shows your New Year message. It doesnt show the and the New Year message isnt shown.
other message. Instead, the Not yet! message appears. Type in n

Is it New Year? (y/n)y Is it New Year? (y/n)n


Happy New Year! Not yet!
Type in y
Time for Fireworks. A different
message appears

Do one of these things


The elif command is short for else-if. It means that
if something is True, do one thing, otherwise check if
something else is True and do something else if it is.
The following calculator program uses the elif command.

if-elif-else condition Output for the condition thats True


1 This program checks what is typed 2 Test the program. Enter two numbers and
in. If its add, sub, mul, or div, the type in sub. The answer will be the first number
result of the sum is shown. minus the second number.
Remember to
Asks the user to add quote marks
input a number and brackets a = 7 Enter two numbers Type in sub
to subtract
b = 5
5 from 7
a = int(input(a = )) add/sub/mul/div:sub
b = int(input(b = )) Answer = 2
op = input(add/sub/mul/div:)
Type add to Answer is calculated
if op == add: by subtracting variable
add the variables
c = a + b together a from variable b

elif op == sub:
c = a - b else condition output
elif op == mul: Type div to
3 The else condition runs if something other than
divide the add, sub, mul, or div is typed in, and an error message
c = a * b variables is displayed.
elif op == div:
c = a / b Shows an error message a = 7
in c if something else Type something
else: is typed in b = 5 different here

c = Error Shows the add/sub/mul/div:try


Error message
answer or
print(Answer = ,c) error message Answer = Error displays
122 P L AY I N G W I T H P Y T H O N

Loops in Python SEE ALSO

4849 Pens
and turtles
Programs that contain repeating lines of code can be
time-consuming to type in and difficult to understand.
While loops 124125
A clearer way of writing them is by using a loop command.
Escaping 126127
loops

The simplest loops are ones that repeat a certain number
of times, such as for loops.

Repeating things
A for loop repeats the code without having
to type it in again. It can be used to repeat
something a certain number of times.
For example, if you want to print the names
of a class of 30 students.

Program the turtle


1 A for loop can also be used to shorten the from turtle import *
code. This program allows the user to control a turtle forward(100) Loads all the
that draws a line as it moves around the screen. The commands
user can draw shapes on the screen, such as a triangle, right(120) that control
by directing the turtles movements. the turtle
forward(100)
right(120) This command moves
the turtle forward
forward(100)
This makes the
turtle turn 120 right(120)
degrees to the right

The turtle draws a triangle Use a for loop


2 The program tells the turtle how to draw a 3 The program above gives the turtle the same two
triangle by giving it the length of the three sides and commands, forward(100) and right(120), three times
the angles between them. The turtle will appear in once for each side of the triangle. An alternative to this
a separate window when you run the program. is to use these two commands inside a for loop. Try
drawing a triangle simply using the code shown below.

for i in range(3):
forward(100) The for loop tells the
The turtle program to repeat the
in Python right(120) instructions three times

The program The block of instructions


makes the turtle in a loop is indented by
draw a triangle four spaces
LOOPS IN PYTHON 123
The loop variable The loop repeats ten times
Loop variables
A loop variable counts the number of times for i in range(10):
a loop has repeated itself. It starts at the first
print(i, end= )
value in the range (0) and stops one before
the last value. Python stops >>> 0 1 2 3 4 5 6 7 8 9
counting one before
the last value
Simple loop variable
Here, the loops range doesnt state what the starting
value should be. So Python starts counting from 0, the
This tells the same way as it does with strings.
program to
count in twos This tells the program
to count backwards

for i in range(2, 11, 2): for i in range(10, 0, -1):


print(i, end= ) print(i, end= )

The output
>>> 2 4 6 8 10 appears in twos >>> 10 9 8 7 6 5 4 3 2 1

Counting in twos Counting backwards


This loop has a third value in its range, which tells the This time the program counts backwards from 10, like in
loop to count in twos. It stops at 10, which is one loop a rocket launch. The loop variable starts at 10 and takes
before the loop variable gets to 11. steps of -1 until it reaches 1.

Nested Loops >>> The value of a


The value
Loops inside a loop are called nested loops. of b 1 x 1 = 1
First time round
In nested loops, the outer loop only repeats
2 x 1 = 2 the outer loop (the
after the inner loop has gone round its inner loop repeats
required number of times. 3 x 1 = 3 three times)

To make the loops repeat n number of times, Outer 1 x 2 = 2 Second time round
the last number in the range must be n + 1 loop the outer loop
2 x 2 = 4
n = 3 3 x 2 = 6
for a in range(1, n + 1): 1 x 3 = 3 Third time round
for b in range(1, n + 1): 2 x 3 = 6 the outer loop

print(b, x, a, =, b * a) 3 x 3 = 9
Loops inside a loop Inner What happens
In this example, each time the outer loop The nested loops print the first three lines
loop goes round once, the inner loop This sum will be of the 1, 2, and 3 times tables. The value of
goes round three times. So in total, the printed nine times a only changes when the outer loop
outer loop is executed three times and repeats. The value of b counts from 1
the inner loop is executed nine times. to 3 for each value of a.
124 P L AY I N G W I T H P Y T H O N

While loops SEE ALSO

118119 Making
decisions
For loops are useful when you know how many times a
task needs to be repeated. But sometimes youll need a
122123 Loops
in Python
loop to keep repeating until something changes. A while Escaping 126127
loops
loop keeps on going round as many times as it needs to.

While loops No
How it works Monster friendly?
A while loop keeps repeating as long as a certain A while loop
condition is true. This condition is called the loop checks if the Yes
condition and is either true or false. condition is true.
If it is, it goes
Create a while loop round the loop Stay very still
1 Set the starting value of the answer variable in again. If its not,
the loop condition. The loop condition has to be true it skips the loop.
to start with or the program will never run the loop.
The code Run away!
The answer variable is set to y
inside the answer = y
loop must The while loop only runs
be indented while answer == y:
if the condition is true
four spaces
print(Stay very still)
answer = input(Is the monster friendly? (y/n))
If the condition is false, unindented code after
print(Run away!) the loop runs and a different message appears

What the program looks like


2 The value entered is stored in the variable answer.
REMEMBER
The loop condition is answer == y. If you type y, repeat until block
the loop keeps going. If you type n, the loop stops.
Pythons while loop is similar to
the repeat until block in Scratch.
>>> Both keep on repeating until
Stay very still something different happens in
the program.
Is the monster friendly? (y/n)y
Answer is y, so the
Stay very still loop keeps running
repeat until
Is the monster friendly? (y/n)y
Stay very still
Is the monster friendly? (y/n)n
Answer is n, so the loop ends Repeats blocks inside it
Run away! and a new message appears until condition is true
WHILE LOOPS 125
Forever loops
Some loops run forever. If you set the condition in a while
loop to be True, it can never be false and the loop will Going loopy
never end. This can either be useful or very annoying. A loop with the
condition True is
Create a forever loop called an infinite
1 The loop condition here is set to True. Nothing
The typed word
loop. If something is
infinite it has no end.
that happens inside the loop will make True equal is stored in the
anything but True, so the loop runs forever. variable answer

The loop is always True


while True: so will never end
answer = input(Type a word and press enter: )
print(Please do not type \ + answer + \ again.)

What the program looks like


2 On the opposite page the monster programs loop condition
checked to see what the users answer was. If the answer isnt y,
the loop will stop. The loop shown above doesnt check the
answer, so the user cant make it stop.
No matter what is typed,
>>> this loop just keeps on going
Type a word and press enter: tree
Please do not type tree again REMEMBER

Type a word and press enter: hippo forever block


Please do not type hippo again Remember the forever block in
Type a word and press enter: water Scratch? It repeats the code inside
it until the red stop button is
Please do not type water: again clicked. A while True loop does
Type a word and press enter exactly the same thing. It can be
used to make a program keep
doing something, such as asking
questions or printing a number, as
EXPERT TIPS long as the program is running.
Stop the loop
If you get stuck in an infinite loop, you can forever
stop it from IDLE. Click in the Python shell
window, then hold down the CTRL key and
press the C key. This asks IDLE to stop the
Ctrl-C
program. You might have to press CTRL-C
a few times. This is similar to clicking the red The forever block keeps
stop button in Scratch. the sprite moving endlessly
126 P L AY I N G W I T H P Y T H O N

Escaping loops SEE ALSO

122123 Loops
in Python
Programs can get stuck in a loop, but there are ways
to escape. The word break leaves a loop (even a
124125 While
loops
forever loop), and the word continue skips back
to the start of the next loop.

Inserting breaks table = 7 The variable i will


count from 1 to 12
Putting a break into a loop makes for i in range(1, 13):
the program jump out of the
print(What\s, i, x, table, ?)
loop at once even if the loop
condition is true. Any commands guess = input()
i is the loop variable
inside the loop that come after ans = i * table
the break are ignored. if int(guess) == ans: The backslash (\) tells
Python the next quote
print(Correct!) mark is an apostrophe,
Write a simple program
1 This program tests the user on
else: not the end of the string

the 7 times table. The program continues print(No, it\s, ans)


looping until all 12 questions are print(Finished)
answered. Write this program in the
code window, as it will be edited later.

Insert a break
2 A break can be added so the table = 7
user can escape the loop. The program for i in range(1,13):
executes a break if the user types stop.
print(What\s, i, x, table, ?)
guess = input()
If guess equals stop, the if guess == stop:
program skips the rest of the
loop and prints Finished
break
ans = i * table
The ans variable
if int(guess) == ans: holds the correct
print(Correct!) answer to the
question
else:
print(No, it\s, ans)
print(Finished)
ESCAPING LOOPS 127
How it works
>>> 3 If the user decides not to carry on
Whats 1 x 7 ? after the third question and types stop,
the break command is executed and the
1 The first time around the program leaves the loop.
loop i is equal to 1
No, its 7
Whats 2 x 7 ?
14 The value of i changes to
2 next time around the loop
Correct!
Whats 3 x 7 ?
stop This executes the break
command and the
Finished program exits the loop

Skipping
The continue keyword can be used to skip a question without
leaving the loop. It tells the program to ignore the rest of the code
inside the loop and skip straight to the start of the next loop.
Insert a continue
table = 7 4 Add an if statement inside the loop
for i in range(1,13): to see if the user answered skip. If so,
the program will print Skipping and
print(What\s, i, x, table, ?) execute a continue to skip to the next
guess = input() go around the loop.
Asks the question
if guess == stop: Whats 1 x 7? first
time around the loop What happens
break 5 If the user doesnt want to answer
if guess == skip: a question, they can type skip and
continue to the next question.
print(Skipping)
Skips straight
continue to the next loop >>>
ans = i * table Whats 1 x 7 ?
if int(guess) == ans: skip Type skip to go to
the next question
print(Correct!) Skipping
else: Whats 2 x 7 ? The loop goes around
print(No, it\s, ans) again as normal when
14 the answer is correct
print(Finished) Correct!
Whats 3 x 7 ?
128 P L AY I N G W I T H P Y T H O N

Lists SEE ALSO

5455 Strings
and lists
If you need to keep lots of data in one place, then you
can put it in a list. Lists can contain numbers, strings,
Silly 132133
sentences

other lists, or a combination of all these things.

What is a list?
Looking at lists
A list is a structure in Python where items are kept in
Each item in a list sits inside single
order. Each entry is given a number that you can use to quote marks, and is separated from
refer back to it. You can change, delete, or add to the the next item by a comma. The whole
items in a list at any point. list sits inside a pair of square brackets.
The list is stored in the variable mylist

>>> mylist = [apple, milk, cheese, icecream, \ This character is


used to make code
The items in a list are
lemonade, tea] separated by commas
go over two lines

The items in the list


sit inside a pair of Just like with strings, Python starts counting
square brackets the items in a list from zero. So, here, the
position (or index) of apple is 0
[0]
How it works
You can think of a list as a row Typing mylist[1] = cake
of shelves in a kitchen. Each would replace milk on shelf 1
shelf holds one item from the
list. To make changes to an
[1] with cake instead

item, you must refer to the


shelf it is on. The value of mylist[2]

[2] is cheese

You could add an orange in front of the ice


cream by typing mylist.insert(3, orange).

To get to an item
on the list, you
[3] The ice cream would then move to position
4, and so on

must go to the Writing del mylist[4] would delete


right shelf lemonade from the list, and move
[4] tea into position 4 instead

You could add a new item, pie, at


the end of the list by writing mylist.

The position of an
item in a list is
[5] append(pie). This will then be
added after tea, in position 6

called its index


LISTS 129
Using lists LINGO
Once a list has been created, you can write programs to Mutable objects
manipulate the data inside it in a loop, for example.
You can also combine lists to make new lists. Lists in Python are mutable.
This means that they can change.
You can add or delete items, or
The list is stored in the variable names switch around their order. Other
functions in Python, such as tuples
>>> names = [Simon, Kate, Vanya] (see pp.134135), cant be altered
once you create them. These are
>>> for item in names: called immutable.
print(Hello, item)
The body of the loop must
be indented by four spaces
Hello Simon
Lists in loops
Hello Kate You can use a loop to work through every
When run, this program displays Hello,
Hello Vanya followed by each name on the list item in a list. This program says Hello to
a series of names, one after the other.

Remember, lists are contained


x = [1, 2, 3, 4] within square brackets
Adding lists
y = [5, 6, 7, 8] Two lists can be
This adds the The new list contains
z = x + y everything from list x added together.
lists together
followed by everything The new list will
print(z) from list y contain the items
z = [1, 2, 3, 4, 5, 6, 7, 8] from both of the
old lists.

Lists in lists
The items in a list can be lists themselves. The As the list is inside square
suitcase list below contains two lists of clothes brackets, it becomes an
individual item within the
it is like a suitcase shared by two people, suitcase[1]
suitcase list suitcase[0]
where they each pack three items.

>>> suitcase=[[hat, tie, sock],[bag, shoe, shirt]]


This will print the whole
>>> print(suitcase) suitcase list
[[hat, tie, sock],[bag, shoe, shirt]]
>>> print(suitcase[1]) This will print everything in the
second list, suitcase[1]
[bag, shoe, shirt]
>>> print(suitcase[1][2]) This prints the item at index 2 in
suitcase[1] remember, Python
shirt starts counting the items from zero
130 P L AY I N G W I T H P Y T H O N

Functions SEE ALSO


Silly 132133
sentences

A function is a piece of code that performs a specific task.
It bundles up the code, gives it a name, and can be used
Variables and 138139
functions

any time by calling it. A function can be used to avoid
entering the same lines of code more than once.

Useful functions
Python contains lots of useful functions for performing certain tasks.
When a function is called, Python retrieves the code for that function
and then runs it. When the function is finished, the program returns to
the line of code that called it and runs the next command.

print() input() randint()


print() function input() function randint() function
This function lets the program This function is the opposite of the This function gives a random
send output to the user by print() function. It lets the user number (like throwing a dice).
printing instructions or results give instructions or data to the It can be used to add an element
on the screen. program by typing them in. of chance to programs.

Making and calling functions


The functions that come with Python arent the only ones that
can be used. To make a new function, collect the code you want
to use in a special wrapper and give it a name. This name
allows the function to be called whenever it is needed.

Define a function Call the function


1 The definition of a function will always 2 Typing the function name followed
have the keyword def and the functions by brackets into the shell window calls the
name at the beginning of the code. function and shows the output.

A colon marks the end


def greeting(): of the functions name >>> greeting()
print(Hello!) and the start of the Hello!
code it contains

This is the code The greeting Brackets show


within the function function is called that this is a
and the output function call and
is displayed not a variable
FUNCTIONS 131
Passing data to functions
A function has to be told which values to work with.
For example, in print(a, b, c), the function print() is being
passed the values a, b, and c. In height(1, 45), the values
1 and 45 are being passed to the function height.

Add parameters to the function Values are defined


1 Values passed to a function are called 2 The code inside the function
parameters. Parameters are put inside the brackets uses the values that are passed to it.
next to the functions name in its definition.
Calls the function to give
m and cm are the parameters the answer when m = 1
and cm = 45

def height(m, cm): >>> height(1, 45)


total = (100 * m) + cm 145 cm tall
print(total, cm tall)
Shows that 1 m 45 cm
To work out the total in is equal to 145 cm
Prints the value of total cm, the value of m needs
followed by cm tall to be multiplied by 100
(because 1 m = 100 cm)

Getting data back from functions


Functions are most useful when they send some data back
to the program a return value. To make a function return a
value, add return followed by the value to be sent back.

Define a function that returns a number Number as output


1 Pythons input() function always returns a string, 2 If the program used the function
even if a number is entered. The new function below The number input, a + b would put the strings 10
gives back a number instead. is stored as a and 7 together to give 107.
string in the
variable typed
def num_input(prompt): Enter a 10
typed = input(prompt) Enter b 7
num = int(typed) a + b = 17
return num
Returns the value This converts the string
stored in the variable into a number and stores
Adding a + b outputs
it in the variable num
a = num_input(Enter a) 17 because the
function num_input
b = num_input(Enter b) gives back numbers,
not strings
print(a + b =, a + b)
132 P L AY I N G W I T H P Y T H O N

PROJECT 5

Silly sentences SEE ALSO

124125 While
loops
Loops, functions, and lists can be used individually
for lots of different tasks. They can also be used 128129 Lists
together to create interesting programs that can 130131 Functions
do even more complex tasks.

Make silly sentences Try using different words to


the ones shown here to create
This program will make sentences by using three separate your own silly sentences.
lists of words. It will pick one word from each list and put
them together randomly in a silly sentence.

Enter the three lists shown


1 below into a new code window. This Single quotes show
that each item in the
defines the lists that will be used
list is a string
to make the sentences.

name = [Neha, Lee, Sam] Square brackets


mean that this
verb = [buys, rides, kicks] is a list
noun = [lion, bicycle, plane]

Each sentence is made up of words


2 picked at random from the lists you have This loads the function for
created. Define a function to do this, as it generating a random
will be used several times in the program. number (randint)

from random import randint


Finds out how many words
def pick(words): are in the list (the function
num_words = len(words) works for lists of any length)
Picks a random number
num_picked = randint(0, num_words - 1) that refers to one of the
items in the list
word_picked = words[num_picked]
return word_picked
Stores the random word that has been
picked in the variable word_picked
S I L LY S E N T E N C E S 133

Print a random silly sentence by running


3 the pick function once for each of the Add an a so that the
sentence makes sense
three lists. Use the print command to
show the sentence on the screen. (see below)

print(pick(name), pick(verb), a, pick(noun), end=.\n)

This adds a full


Save and run the program to get stop at the end,
4 a silly sentence made from the lists while the \n
starts a new line
of names, verbs, and nouns.

Neha kicks a bicycle.

The sentence is randomly selected


each time the program is run

Silly sentences forever! EXPERT TIPS


A forever loop can be added to the silly sentences Readable code
program to keep it running forever, or until the user
presses Ctrl-C to escape the loop. Its very important to write
a program that can be easily
understood. It makes the program
easier to change in the future
because you dont have to start by
The program keeps printing silly sentences solving the puzzle of how it works!
1 if the print command is wrapped in a while
True loop.

while True: Wraps the print command in a loop

print(pick(name), pick(verb), a, pick(noun), end=.)


Prints a new sentence every time
input() the Enter key is pressed

The program will keep on


creating random sentences
The input() function
2 waits for the user to press Sam rides a lion.
the Enter key before
printing another sentence. Neha kicks a plane.
Without this it would print Lee buys a bicycle.
them too fast to read.
134 P L AY I N G W I T H P Y T H O N

Tuples and dictionaries SEE ALSO

110111 Types
of data
Python uses lists for keeping data in order. It also has
other data types for storing information called tuples
128129 Lists
and dictionaries. Data types such as these, which hold
lots of items, are called containers.

Tuples
Tuples are a bit like lists, but the items inside them
cant be changed. Once a tuple is set up it always
Tuples are
stays the same. surrounded
by brackets
What is a tuple?
>>> dragonA = (Sam, 15, 1.70) A tuple contains items separated by
>>> dragonB = (Fiona, 16, 1.68) commas and surrounded by brackets.
Tuples are useful for collecting several
The items in a tuple are bits of data together, such as a dragons
separated by commas name, age, and height.

Grabbing an item from a tuple


To get an item from a tuple, use >>> dragonB[2]
its position in the tuple (its index). 1.68
Tuples count from zero, just like
lists and strings. This selects the item
from position 2

Splitting a tuple into variables


>>> name, age, height = dragonA Assign three variables to the tuple
>>> print(name, age, height) dragonA name, age, and height.
Python splits the tuple into three items,
Sam 15 1.7 putting one in each variable.

The items that make up the tuple


dragonA are displayed separately Create a list of tuples Lists go in
called dragons square brackets

Putting tuples in a list


Tuples can be put into a list because >>> dragons = [dragonA, dragonB]
containers can go inside each >>> print(dragons)
other. Use this code to create
a list of tuples. [(Sam, 15, 1.7), (Fiona, 16, 1.68)]

Each tuple is surrounded by Python displays all the items


round brackets inside the that are in the list, not just
lists square brackets the names of the tuples
TUPLES AND DICTIONARIES 135
Dictionaries
Dictionaries are like lists but they have labels. These labels, called keys,
identify items instead of index numbers. Every item in a dictionary has
a key and a value. Items in a dictionary dont have to stay in a particular
order, and the contents of a dictionary can be changed.

Dictionaries Items in a dictionary


use curly are separated Use a colon between
Create a dictionary brackets by commas a key and a value
This program creates a
dictionary called age. >>> age = {Mary: 10, Sanjay: 8}
The key for each item
is the name of a person.
The value is their age. A key works in the A value stored in
same way as an the dictionary (always
index number comes after a colon)

Print the dictionary


>>> print(age) Name of the dictionary
The order of the items
{Sanjay: 8, Mary: 10} can change, because the
positions of items in a
The key for this The value of dictionary are not fixed.
item is Sanjay Mary is 10
Dictionary
name New key
Add a new item
A new value can be >>> age[Owen] = 11 Adds a new item to
the dictionary
added to the dictionary >>> print(age)
by labelling it with the
new key. {Owen: 11, Sanjay: 8, Mary: 10}

The new value is now The existing values


in the dictionary are still there

Change a value
>>> age[Owen] = 12 Assign a new value to the
Assign a new value to
item labelled Owen
>>> print(age) an existing key to change
its value.
{Owen: 12, Sanjay: 8, Mary: 10}

The value for Owen


This deletes the item
has changed
labelled Owen

Delete an item
>>> del age[Owen] The item labelled
Deleting an item in a dictionary Owen no longer
doesnt affect other items because >>> print(age) appears in the
they are identified by their key, not dictionary
by their position in the dictionary. {Sanjay: 8, Mary: 10}
136 P L AY I N G W I T H P Y T H O N

Lists in variables SEE ALSO

108109 Variables
in Python
Theres something about how Python stores lists
in variables that might seem a bit odd at first. But
128129 Lists
take a look at whats going on behind the scenes
and it all makes sense.

Remember how variables

2
only store values?
Variables are like boxes that hold values.
The value in one variable can be copied
a b
and stored in another. Its like photocopying How variables work
the value contained in box a and storing Each variable is like a box containing a
a copy in box b. piece of paper with a value written on it.

Assign a value to a variable


1 Assign the value 2 to variable >>> a = 2 This copies the contents
of a into b
a, then assign the value in a to >>> b = a
variable b. The value 2 is copied
and stored in b. >>> print(a =, a, b =, b)
a = 2 b = 2

Now a and b both This prints out the variable


contain the value 2 names with their values

Change a value
2 If you change the value stored >>> a = 100 Change the value in a to 100
in one variable it wont affect the value >>> print(a =, a, b =, b)
stored in another variable. In the same
way changing whats written on a piece a = 100 b = 2
of paper in box a wont affect whats on
the paper in box b. Now a contains 100,
but b still contains 2

Change a different value


3 Change the value in b to 22. >>> b = 22
Variable a still contains 100. Even though >>> print(a =, a, b =, b)
the value of b was copied from a
at the start, they are now independent a = 100 b = 22
changing b doesnt change a.
b now contains 22,
but a is still 100
L I S TS I N VA R I A B L E S 137
What happens if a list is put in a variable?
Copying the value in a variable creates two independent
copies of the value. This works if the value is a number, but
what about other types of value? If a variable contains a list
it works a bit differently.
Use square brackets
to create a list
Copy a list
1 Store the list [1, 2, 3] in >>> listA = [1, 2, 3] This prints out the variable
names alongside their values
a variable called listA. Then >>> listB = listA to see whats inside them
store the value of listA in
another variable called listB. >>> print(listA =, listA, listB =, listB)
Now both variables contain listA = [1, 2, 3] listB = [1, 2, 3]
[1, 2, 3].
listA and listB both This changes the second item in the
hold the same value list because lists count from zero

Change list A
2 Change the value in >>> listA[1] = 1000
listA[1] to 1000. listB[1] >>> print(listA =, listA, listB =, listB)
now contains 1000 as well.
Changing the original list has listA = [1, 1000, 3] listB = [1, 1000, 3]
changed the copy of the list too.
The second item of both
This is the third listA and listB has
item in the list been changed
Change list B
3 Change the value of >>> listB[2] = 75
listB[2] to 75. listA[2] is now >>> print(listA =, listA, listB =, listB)
75 as well. Changing the copy
of the list has changed the listA = [1, 1000, 75] listB = [1, 1000, 75]
original list as well.
The third item of both listA and
listB has been changed

[1, 2, 3] EXPERT TIPS


Copying lists
To make a separate copy of a list, use the
copy function. listC will contain a
link to a completely new list whose values
listA listB are copies of those in listA. Changing
listC wont change listA, and changing
listA wont change listC.
Whats going on?
A variable containing a list doesnt hold the list itself, >>> listC = listA.copy()
just a link to it. Copying the value in listA copies the link.
So both listA and listB contain a link to the same list.
138 P L AY I N G W I T H P Y T H O N

Variables and functions SEE ALSO

130131 Functions
Making 158159
Variables created inside a function (local variables) shapes
and variables created in the main program
(global variables) work in different ways. Local variables are like film stars
in a car with mirrored windows
they are inside the car (function)
Local variables but no one can see them

Local variables only exist inside a single function, so


the main program and other functions cant use them.
If you try to use a local variable outside of the function,
an error message appears.
Variable inside the function Variable outside the function
1 Create a local variable called a 2 If you try to print a directly The main program doesnt
inside func1. Print out the value of a by from the main program, it gives an know what a is, so it
calling func1 from the main program. error. a only exists inside func1. prints an error message

>>> def func1(): >>> print(a)


a = 10 Traceback (most recent call last):
print(a) File <pyshell#6>, line 1, in <module>
>>> func1() Calling func1 print(a)
prints the value
10 given to a NameError: name a is not defined

Global variables
A variable created in the main program is
called a global variable. Other functions Global variables
are like people
can read it, but they cant change its value. walking along the
street everyone
Variable outside the function Same global variable
1 Create a global variable called b in the 2 We can also print b directly from the
can see them

main program. The new function (func2) can main program. b can be seen everywhere
read the value of b and print it. because it wasnt created inside a function.
func2 can see
>>> b = 1000 the value of b >>> print(b)
>>> def func2(): because b is a 1000
global variable
print(b)
Global variable b can
>>> func2() be used anywhere in
Printing func2 gives you the main program
1000 the value stored in b
VA R I A B L E S A N D F U N C T I O N S 139
Variables as input to functions
When a variable is used as input to a function its value is copied into a
new local variable. So changing the value of this new local variable inside
the function doesnt change the value of the original variable.
Changing values inside a variable Print variable
1 func3 uses input y, which is a local 2 Printing the value of z after calling func3 shows
variable. It prints the value of y, then changes it hasnt changed. Calling func3 copies the value in z
that value to bread and prints the new value. (butter) into local variable y, but z is left unchanged.

>>> def func3(y): y contains the >>> print(z) Prints the value in global
value passed to variable z after func3 has
print(y) butter finished running
it when func3
y = bread is called

print(y) Here y contains Local variable y of func3 holds a


bread copy of the value in z. Although y
>>> z = butter has been changed to bread, the
This creates a global value in global variable z isnt
>>> func3(z) variable called z affected and is still butter
butter The input y now contains
the value of z passed to it
bread when func3 is called

Masking a global variable


A global variable cant be changed by a function. A function trying to
change a global variable actually creates a local variable with the same
name. It covers up, or masks, the global variable with a local version.
EXPERT TIPS
Changing a
1 global variable >>> c = 12345 Initial value
in global
Calling functions
Global variable c is given >>> def func4(): variable c
There are two different ways of
the value 12345. func4
gives c the value 555 c = 555 calling functions.
and prints it out. It looks print(c)
like our global variable
>>> func4()
function(a)
c has been changed. Prints the
value of c In Python, items of data are called
555 inside func4 objects. Some functions are called by
passing them the data object (a).
Print variable
2 If we print c from >>> print(c)
a.function()
outside the function, we 12345
see that c hasnt changed Other functions are called by adding
at all. func4 only prints The value in global their name at the end of the data
the value of its new local variable c hasnt object (a) after a full stop.
variable also called c. been changed
140 P L AY I N G W I T H P Y T H O N

PROJECT 6
Drawing machine SEE ALSO

122123 Loops
in Python
Its time to try a more complex project. This program, the
drawing machine, turns a string of simple instructions
Libraries 152153
into turtle commands to draw different shapes. The skills
used in planning this program are essential for any coder.

Choose a test shape from turtle import *


To write a program that can draw any shape, reset() Loads all the commands
its useful to choose a shape to start with. Use that control the turtle
this house shape as an example to test the left(90)
program at each stage. By the end of the forward(100) Resets the turtles position
and puts the pen down
project it will be possible to draw this house right(45) ready to draw
with far less code by using a single string forward(70)
containing several short drawing commands
(for example, F100). right(90) Moves the turtle
forward by 70
forward(70)
right(45)
Makes the turtle turn
forward(100) 90 degrees to the right
right(90)
Turtle draws a house forward(100)
The arrow shows the final
direction and position of the Program to draw a house
turtle. Starting at the bottom The turtle This code tells the turtle to draw a house.
left, it has moved clockwise It requires lots of lines of code for what is
around the house. actually quite a simple program.

Three parts Function 1 Function 2 Main program


of the program Turtle controller String artist User interface
The drawing machine will This function takes a In this program, the The String artist needs
be a large program. To help simple command from user enters a string to get its input from
with the planning, it can be the user and turns it into of instructions. This somewhere. The User
a turtle command. The function splits the string interface allows the user
broken down into three user command will into smaller units, which to type in a string of
parts, each one related to come as a single letter are then fed to the commands for the String
a different task. and a number. Turtle controller. artist to work on.
D R AW I N G M AC H I N E 141

Draw a flowchart EXPERT TIPS


Coders often plan programs on paper, to help them write Squares and diamonds
better code with fewer errors. One way to plan is to draw
a flowchart a diagram of the steps and decisions that Flowcharts are made up of squares
and diamonds. The squares
the program needs to follow.
contain actions that the program
performs. The diamonds are points
This flowchart shows the plan for the where it makes a decision.
1 Turtle controller function. It takes a
letter (input do) and number (input
val) and turns them into a turtle
command. For example, F and 100
will be turned into the command
forward(100). If the function doesnt
recognize the letter, it reports an Action Decision
error to the user.
inputs do and val
Each command has two variables:
do (a string) tells the turtle what If do = F, the turtle
to do, and val (an integer, or moves forward
whole number) tells the turtle
how much or how far to do it
Y
do == F? forward(val)

The function has to


decide if the do value
is a letter it recognizes N If do = R,
the turtle
Y turns right
If do isnt F, the function runs do == R? right(val)
through other letters it recognizes

EXPERT TIPS
do isnt R. N
Is it U?
Letter commands Y
do == U? penup()
The Turtle controller will use
Because do
these letters to stand for is U, the
different turtle commands: N If do isnt a letter command
the function penup()
N = New drawing (reset) recognizes, it stops the
report unknown command
reports an error turtle from
U/D = Pen up/down
drawing
F = Forward
B = Backward
R = Right turn Once the After any command is
command is finished executed successfully,
L = Left turn return from function you return to the the program goes to
main program the end of the function
142 P L AY I N G W I T H P Y T H O N

DRAWING MACHINE
The Turtle controller
The first part of the program is a function that moves the turtle,
one command at a time. It is planned out in the flowchart on the
previous page. This code enables the turtle to convert the do
Loads all the commands
and val values into movement commands. that control the turtle

This code creates the Turtle Defines do and val as


2 controller function. It turns do from turtle import * inputs for the function
inputs into directions for the def turtle_controller(do, val):
turtle, and val inputs into
angles and distances. do = do.upper()
if do == F: This command converts all
the letters in do to upper
forward(val) case (capital letters)

elif do == B:
This tells the function to turn
backward(val) a do value of F into the
turtle command forward
elif do == R:
right(val) As in the flowchart, the function
checks the do letter against all
elif do == L: the letters it understands
left(val)
This command tells
This command instructs
the turtle to start elif do == U: the turtle to stop drawing
drawing on the page
penup() on the page

elif do == D: This command resets the


pendown() turtles position to the
centre of the screen
elif do == N:
reset() This message appears if the
do value is a letter that the
else: function cannot recognise
The starting
position of print(Unrecognized command)
the turtle
These do and val
This calls the function inputs tell the turtle to
using its name move 100 steps forward

Here are some examples of how


3 to use the Turtle controller. Each >>> turtle_controller(F, 100)
This makes the
time it is used, it takes a do, val >>> turtle_controller(R, 90) turtle turn right
command and turns it into code 90 degrees
the turtle can understand. >>> turtle_controller(F, 50)
D R AW I N G M AC H I N E 143

Write some pseudocode EXPERT TIPS


Another way to plan a program is to write it in Clear coding
pseudocode. Pseudo means fake, so pseudocode isnt
real code that you can run. Its rough code where you can Its not only computers that need
to be able to read your code, it
write your ideas in the style of the real thing.
should be clear to people too. So
its important to make your code
Its time to plan the String artist. This function takes a as easy to understand as possible.
4 string of several do and val inputs and breaks it into
pairs made up of a letter and a number. It then passes Use functions to break your code into
the pairs to the Turtle controller one at a time. smaller chunks. Each function should
String of do a single task in the program.
drawing Give your variables and functions
Broken-down F100-R90-F50-R45 commands
names that say what they do: age_in_
string years makes more sense than aiy.
Use plenty of comments (using
the # symbol) to explain whats
happening. This makes it easier to
read back over the code.
F 100 R 90 F 50 R 45 Dont use symbols that can be
confused with others: an upper-case
O looks like zero, and a lower-case L
This is the String artist written in pseudocode.
can look like an upper-case i or a 1.
5 It lets you organize the ideas and structure of the
code without having to think about the details yet.
The function will take in a string
function string_artist(input the program as a string): of commands input by the user
(for example, F100-R90)

split program string into list of commands Splits string into


a list of separate
for each command in list: commands

A blank command
check its not blank wont work, so the
function skips it
if it is go on to next item in list
Recognizes the first
command type is the first letter letter as a do
command
if followed by more characters Recognizes the
following characters
turn them into a number as a val number

call turtle_controller(command type, number) Passes the simple command


to Turtle controller
144 P L AY I N G W I T H P Y T H O N

DRAWING MACHINE
Creating the String artist
The pseudocode on the previous page plans a function called the
String artist, which will turn a string of values into single commands
that are sent to the Turtle controller. The next stage is to turn the
pseudocode into real Python code, using a function called split().

The split() function splits a string into a list of This string lists the
6 smaller strings. Each break point is marked by a commands to create the
special character ( - in this program). sample house shape

>>> program = N-L90-F100-R45-F70-R90-F70-R45-F100-R90-F100


>>> cmd_list = program.split(-)
The split() function breaks the string
>>> cmd_list down into a list of separate commands

[N, L90, F100, R45, F70, R90, F70, R45, F100, R90, F100]

Now write out the pseudocode for the String artist Tells the program to split the string
7 using real Python code. Use the split() function to wherever it sees a - character
slice up the input string into turtle commands.
This makes the program loop
through the list of strings each item
def string_artist(program): is one command for the turtle

cmd_list = program.split(-)
If the length of the command is 0 (so
for command in cmd_list: the command is blank), the function
skips it and moves to the next one
cmd_len = len(command)
if cmd_len == 0: Takes the first character of the command
Gets the
(remember, strings start at 0) and sets it as
length of the
command
continue the command type (F, U, etc.)
string cmd_type = command[0]
This takes all the remaining
num = 0 Checks if the command characters from the command
is followed by more by cutting off the first one
if cmd_len > 1: characters (the number)
Converts the
characters from num_string = command[1:] Prints the command on the
strings into screen so you can see what
numbers num = int(num_string) the code is doing
print(command, :, cmd_type, num)
turtle_controller(cmd_type, num) Passes the command
to the turtle
D R AW I N G M AC H I N E 145

When the string representing the instructions for


8 the house shape is passed into the String artist,
it shows this output in the shell window.

>>> string_artist(N-L90-F100-R45-F70-R90-F70-R45-F100-R90-F100)
N : N 0 Resets the screen and puts
the turtle back at the centre The turtle commands
L90 : L 90 are all separated by a -

F100 : F 100 For command F100, the command


type is F and num is 100
R45 : R 45
F70 : F 70
This makes the turtle turn 45
R90 : R 90 degrees before drawing the roof

F70 : F 70
This command makes the
R45 : R 45 turtle draw the right-hand
F100 : F 100 side of the roof

R90 : R 90
The turtle turns 90 degrees
F100 : F 100 right, ready to draw the
bottom of the house

Each command in the R90 REMEMBER


9 string that is passed to the
string_artist function is Commands
extracted, identified, and
F70 F70 Heres a reminder of the turtle
executed. A picture of a
house is drawn in the turtle commands in this program. Some
graphics window. of these are only one letter long,
while others include a number
R45 R45 telling the turtle how far to travel
or turn. Each time you activate
string_artist, it adds to the
drawing, until N clears the screen.
F100 F100
N = New drawing
U/D = Pen Up/Down
L90
F100 = Forward 100
B50 = Backwards 50
F100 R90 = Right turn 90 deg
The program R90
makes the turtle L45 = Left turn 45 deg
draw a house
146 P L AY I N G W I T H P Y T H O N

DRAWING MACHINE
Finish off the code with a user interface
The drawing machine needs an interface to make it easier to
use. This will let the user enter a string from the keyboard
to tell the machine what to draw.

This code creates a pop-up window where the The triple quote () tells Python that
10 user can input instructions. A while True loop everything until the next triple quote
is part of the same string, including
lets them keep entering new strings.
the line breaks

instructions = Enter a program for the turtle:


eg F100-R45-U-F100-L45-D-F100-R90-B50
N = New drawing
U/D = Pen Up/Down
Tells the user what letters
F100 = Forward 100 to use for different turtle
commands
B50 = Backwards 50
R90 = Right turn 90 deg End of the string

L45 = Left turn 45 deg


screen = getscreen() Gets the data needed to This line tells the program
create the pop-up window what to show in the
while True: pop-up window

t_program = screen.textinput(Drawing Machine, instructions)


print(t_program)
if t_program == None or t_program.upper() == END:
Stops the program
break Passes the string to the
if the user types
END or presses
string_artist(t_program) String artist function
the Cancel button

This window pops Drawing Machine


11 up over the turtle
Enter a program for the turtle:
window ready for eg F100-R45-U-F100-L45-D-F100-R90-B50
the user to type a N = New drawing
drawing machine U/D = Pen Up/Down
program string. F100 = Forward 100
B50 = Backwards 50
R90 = Right turn 90 deg
Turtle control
L45 = Left turn 45 deg
Using this program, the turtle is
Type the program string easier to control, and you dont
here and then click OK OK Cancel have to restart the program to
to run the program draw another picture.
D R AW I N G M AC H I N E 147

The drawing machine can be used to create more than


12 just outlines. By lifting up the turtles pen while moving to
a new position, its possible to fill in details inside a shape.
Run the program and try entering the string below.

N-L90-F100-R45-F70-R90-F70-R45-F100-R90-F100-
B10-U-R90-F10-D-F30-R90-F30-R90-F30-R90-F30

Lifts up the turtles Puts the pen down to


pen so it moves draw a window
without leaving a line The house now
has a window

Time for something different


Now you know how to add details, you can really have fun
with the drawing machine. Try drawing this owl face using
the string of instructions below.

N-F100-L90-F200-L90-F50-R60-F30-L120-F30-R60-F40-
R60-F30-L120-F30-R60-F50-L90-F200-L90-F100-L90-U-
F150-L90-F20-D-F30-L90-F30-L90-F30-L90-F30-R90-U-
F40-D-F30-R90-F30-R90-F30-R90-F30-L180-U-F60-R90-
D-F40-L120-F40-L120-F40

The string lifts the pen The arrow shows where the
three times to draw the turtle stopped. This means that
eyes and nose separately the owls nose was drawn last

REMEMBER
Achievements
You created the drawing machine program Created the function turtle_controller that works
by achieving several smaller targets: out what turtle command to execute from the letter
and number its been given.
Used a flowchart to plan a function by working out Created the function string_artist that produced
the decision points and the resulting actions. a turtle drawing from a string of instructions.
Wrote pseudocode to plan out a function before Made an interface that allows the user to tell
writing out the real code. the program what to draw from the keyboard.
148 P L AY I N G W I T H P Y T H O N

Bugs and debugging SEE ALSO

9495 Errors
Programmers arent perfect, and most programs 122123 Loops
in Python
contain errors at first. These errors are known as
bugs and tracking them down is called debugging.
What next? 176177

Types of bugs
Three main types of bugs can turn up in programs syntax,
runtime, and logic errors. Some are quite easy to spot, while others
are more difficult, but there are ways of finding and fixing them all.
This will cause
The Python keyword an error as no Age cannot be less than 5
is for not fir number can be and greater than 8 at the
divided by 0 same time, so no free tickets

fir i in range(5): a = 0 if age < 5 and age > 8:


print(i) print(10 / a) print(Free ticket!)

Easy to spot Harder to spot Hardest to spot


A syntax error is a mistake in the Runtime errors appear only Logic errors are mistakes in a programs
programs words or symbols, such when the program is running. thinking. Using < instead of >, for
as misspelled keywords, missing Adding numbers to strings or example, or adding when you should be
brackets, or incorrect indents. dividing by 0 can cause them. subtracting result in these errors.

Find and fix a bug


Syntax errors are easy to spot as IDLE highlights them in red when you
run the program. Finding runtime and logic errors takes a bit more work.

Problem
1 program top_num = 5 The highest number in the series
This program aims to total = 0 of numbers being added
add all the numbers
from 1 up to the value for n in range(top_num): This command prints a sentence
stored in the variable to let the user know the result
total = total + n
top_num. It then
prints the total. print(Sum of numbers 1 to, top_num, is, total)

Output
2 The answer for the program should Sum of numbers 1 to 5 is 10
be (1 + 2 + 3 + 4 + 5), but it shows the
answer as 10. You need to find out why. The answer should be 15, not 10
BUGS AND DEBUGGING 149
Add a print
3 and input() top_num = 5
The program doesnt show total = 0
what its doing at each This command prints the
step. Adding a print for n in range(top_num): current value of the loop
command here will let total = total + n variable and the total so far
you see whats happening.
The input() command print(DEBUG: n=, n, total=, total)
waits for the return or input()
Enter key to be pressed
before looping. print(Sum of numbers 1 to, top_num, is, total)

New output
4 The loop is only adding the numbers DEBUG: n= 0 total= 0
from 0 up to 4, and not 1 to 5. This is DEBUG: n= 1 total= 1
because a for loop always starts counting This is actually the
from 0 (unless told otherwise), and always DEBUG: n= 2 total= 3 sum of the numbers
from 0 to 4, not 1 to 5
stops 1 before the end of the range. DEBUG: n= 3 total= 6
DEBUG: n= 4 total= 10
Sum of numbers 1 to 5 is 10

Fix the
5 faulty line top_num = 5 The new range will count
from 1 and stop at top_num
The range should total = 0 (1 less than top_num + 1)
go from 1 up to
top_num + 1, so that for n in range(1, top_num + 1):
the loop adds up the total = total + n
numbers from 1 to
top_num (5). print(DEBUG: n=, n, total=, total)
input()
print(Sum of numbers 1 to, top_num, is, total)

Correct output
6 The print command shows that DEBUG: n= 1 total= 1
the program is adding the numbers from DEBUG: n= 2 total= 3 When n= 3, the
1 to 5 and getting the correct answer. total is (1 + 2 + 3)
The bug has now been fixed! DEBUG: n= 3 total= 6
DEBUG: n= 4 total= 10
The correct answer
DEBUG: n= 5 total= 15 is now printed
Sum of numbers 1 to 5 is 15
150 P L AY I N G W I T H P Y T H O N

Algorithms SEE ALSO

1617 Think like


a computer
An algorithm is a set of instructions for performing a task.
Some algorithms are more efficient than others and take
Libraries 152153
less time or effort. Different types of algorithms can be
used for simple tasks such as sorting a list of numbers.

Insertion sort
Imagine youve been given your classs exam papers to put
in order from the lowest to the highest mark. Insertion
sort creates a sorted section at the top of the pile and then
inserts each unsorted paper into the correct position. Sorting in order
Insertion sort takes each
How it works When counting the paper in turn and inserts it into
Insertion sort goes through each positions, Python starts at 0 the correct (sorted) place.
of these stages sorting the numbers
far quicker than a human could. 0 1 2 3 4 5
6 is sorted into position 1 2 6 5 1 4 3
6 is more than 2, so is sorted
after 2 in the sorted section

5 is sorted into position 1 2 6 5 1 4 3


The value of 5 is between 2 and 6, so
moves to position 1. 6 shifts to position 2

1 is sorted into position 0 2 5 6 1 4 3


1 is less than 2, so moves to
position 0. 2, 5, and 6 shuffle down

4 is sorted into position 2 1 2 5 6 4 3


4 is between 2 and 5, so
moves to position 2.
5 and 6 shuffle down

3 is sorted into position 2 1 2 4 5 6 3

Sorted! 1 2 3 4 5 6
4, 5, and 6 shuffle along to
make room for 3 in position 2
ALGORITHMS 151
Selection sort
Selection sort works differently to insertion sort. It swaps
pairs of items rather than constantly shifting all of the items.
Each swap moves one number to its final (sorted) position.
Swap the smallest value
with the first value
Swapping positions
Switching one thing with another
is usually quick and doesnt affect
Swaps 1 and 2 2 6 5 1 4 3 anything else in the list.

Swap the smallest value in the unsorted part (2)


with the first value in the unsorted part (6)

Swaps 2 and 6 1 6 5 2 4 3

3 is the smallest value in the


Swaps 3 and 5 1 2 5 6 4 3 unsorted part. Swap it with 5, the
first value in the unsorted part

Swaps 4 and 6 1 2 3 6 4 5 5 isnt in the right position


yet, but 4 is smaller so its
swapped first

Swaps 5 and 6 1 2 3 4 6 5
The largest number is in last position
after the swap, so no further
swapping is required
Sorted! 1 2 3 4 5 6
EXPERT TIPS
Sorting in Python
There are lots of different sorting a is a list of
algorithms, each with different unsorted numbers
strengths and weaknesses. Pythons
sort() function uses an algorithm >>> a = [4, 9, 3, 8, 2, 6, 1, 5, 7]
called Timsort, named after its >>> a.sort()
designer, Tim Peters. Its based on This calls the
sort() function The numbers
two sorting algorithms: Insertion >>> a in list a are
sort and Merge sort. Type in this [1, 2, 3, 4, 5, 6, 7, 8, 9] now sorted
code to see how it works.
152 P L AY I N G W I T H P Y T H O N

Libraries SEE ALSO


Making 154155
windows

Writing new code takes time, so its useful to be able
to reuse bits of other programs. These snippets of
Colour and 156157
co-ordinates

code can be shared in packages called libraries.

Batteries
Standard Library modules included
Python comes with a Standard Library that has Pythons motto
lots of useful bits of code ready to use. Stand-alone is batteries are
included. This
sections of a library called modules can be added means it comes
to Python to make it even more powerful. with lots of ready-
to-use code.
Random
This module can pick
a random number,
or shuffle a list into Turtle
a random order. This module is used to
draw lines and shapes
on the screen.

Time
The Time module gives the current
time and date, and can calculate
dates for instance, what day will
it be in three days time?

Tkinter
Tkinter is used to make buttons,
windows, and other graphics that
help users interact with programs. Math
Use the Math
module to work
with complex
mathematical
calculations.
Socket
The code in this module helps
computers connect to each other
over networks and the Internet.
LIBRARIES 153
Importing modules EXPERT TIPS
Before using a module, you have to tell the computer Pygame
to import it so it can be used by your program. This
allows the bits of code it contains to be available to you. Pygame is a
Python library
Importing modules is done using the import command.
designed for
Python can import modules in a few different ways. writing video
games. Pygame
gives you access to sound modules
import random and special graphics that can be
import random This way of importing used in games. Youll be able to
requires you to type the use Pygame once you have a good
module name at the start of understanding of the basics of
random.randint(1, 6) the code. It makes it easier to Python covered in this book.
random.choice(my_list) read because you know
which module it came from.
The module name comes Imports all the functions
before each function from the Random module

from random import *


Importing a module like this works well for from random import *
small programs. But it can get confusing
with bigger programs, as it isnt clear
which module the function belongs to. randint(1, 6) This code doesnt show
which module the
choice(my_list) function came from

Imports only the


randint function

from random import randint


from random import randint You can import a single function from
the module. This can be more efficient
than importing the whole module if
randint(1, 6) its the only function you want to use.
Only the randint
function is available

Help and documentation Help Help!


At the top of any IDLE
Not sure how to use a module or what functions About IDLE window, click Help and
are available? The Python Library Reference has choose Python Docs.
IDLE Help This brings up a window
all the details. Simply click on the library you
with lots of useful
want to learn more about. Its a good idea to get Python Docs
information.
to know the libraries, modules, and functions
that are available, so you dont waste time
writing code that already exists.
154 P L AY I N G W I T H P Y T H O N

Making windows SEE ALSO


Colour and 156157
co-ordinates

Many programs have windows and buttons that can
be used to control them. These make up the graphical
Making 158159
shapes

user interface, or GUI (pronounced gooey). Changing 160161
things

Make a simple window


The first step in creating a GUI is to make the window that
will hold everything else inside it. Tkinter (from Pythons
Standard Library) can be used to create a simple one.

Enter the code A Tkinter window appears


1 This code imports Tkinter from the 2 Run the code and a window appears.
library and creates a new window. Tkinter This imports Tkinter It looks a bit dull for now, but this is only the
must be imported before it can be used. from the library first part of your GUI.

from tkinter import * Tk

window = Tk()

This creates a Tkinter


window

Add buttons to the window


Make the GUI more interactive by adding buttons. Create two buttons
A different message will be displayed when the 1 Write this code to create a
user clicks each button. simple window with two buttons.

from tkinter import * This message appears when


button A is pressed
def bAaction():
This message appears
print(Thank you!) when button B is pressed

def bBaction(): This tells the program


This label will appear which function to run
print(Ouch! That hurt!) on button A when the button is clicked
window = Tk()
buttonA = Button(window, text=Press me!, command=bAaction)
buttonB = Button(window, text=Don\t press!, command=bBaction)
buttonA.pack() This label will appear
This code tells the computer to
buttonB.pack() put the buttons in the window on button B
MAKING WINDOWS 155
Click the buttons Click the button to Output appears in
2 to print messages
Tk show a message the shell window
When the program is run, a window
with two buttons appears. Click the Press me! Thank you!
buttons and different messages will
appear in the shell. Youve now made
an interactive GUI that responds to
Dont press! Ouch! That hurt!
the users commands.

Roll the dice


Tkinter can be used to build a GUI for a simple
application. The code below creates a program
that simulates rolling a six-sided dice.
Create a dice simulator
1 This program creates a button that,
when pressed, tells the function roll() to
display a random number between 1 and 6.

from tkinter import * This imports the


function randint from
from random import randint the random library This code clears the text inside the
def roll(): text box and replaces it with a
random number between 1 and 6
text.delete(0.0, END)
text.insert(END, str(randint(1,6))) This tells the
Creates a text box to display program which
window = Tk() the random number function to run when
the button is clicked
text = Text(window, width=1, height=1)
buttonA = Button(window, text=Press to roll!, command=roll)
text.pack() This label appears
This puts the text box and
buttonA.pack() the button in the window on the button

EXPERT TIPS
Press the button to
2 roll the dice
Tk
Clear and simple
Run the program, then click the
button to roll the dice and see the When youre designing a GUI, try
result. This program can be simply 6 not to confuse the user by filling
changed so that it simulates a the screen with too many buttons.
12-sided dice, or a coin being tossed. Label each button with a sensible
Press to roll!
name to make the application
A new number appears here easy to understand.
each time the button is clicked
156 P L AY I N G W I T H P Y T H O N

Colour and co-ordinates SEE ALSO

154155 Making
windows
Pictures and graphics on a computer screen are
made up of tiny coloured dots called pixels. To
Making 158159
shapes

create graphics in a program, the computer needs Changing 160161
things
to be told exactly what colour each pixel should be.

Selecting colours EXPERT TIPS


Its important to describe colours in a way that Mixing colours
computers can understand. Tkinter includes a
useful tool to help you do this. Each pixel can give out red, green,
and blue light. By mixing these
colours together, you can make
Launch the colour selection tool any colour imaginable.
1 Type the following code into the shell
window to launch the Tkinter tool This imports all of the Red and Red and blue
for selecting colours. Tkinter functions green make make purple
yellow R
>>> from tkinter import *
>>> t = Tk()
>>> colorchooser.askcolor() G B
Use the American Mixing all three
spelling of colour makes white
Select the colour you
want by clicking on it

Choose a colour
2 The color chooser window will
appear. Pick the colour you want and
then click the OK button.

This window makes it


easy to pick the exact
colour you want

Colour values
3 When a colour is selected, a list ((60.234, 190.742, 52.203), #3cbe34)
of numbers will appear in the shell
window. These numbers are the values Red value Green value Blue value Code for the colour
of red, green, and blue that have been in hexadecimal
mixed to make the chosen colour. (see pp.182183)
C O L O U R A N D C O O R D I N AT E S 157
Drawing on a canvas EXPERT TIPS
To create graphics using Python, Co-ordinates
you need to make a blank area to
draw on. This is known as a canvas. In Tkinter, x co-ordinates get larger moving to
the right, and y co-ordinates get larger moving
You can use x and y co-ordinates to
downwards. (0,0) is in the top-left corner.
tell Python exactly where to draw
on the canvas. +x
(0,0)
(300,50)
+y (50,100)
Create a graphics program
1 Use this code to create a window and (250,200)
put a canvas inside it. It will then draw
random circles on the canvas.
This imports the randint and choice
from random import * functions from the Random module
from tkinter import * This imports all of the
Tkinter functions
size = 500
The variable size sets the
window = Tk() dimensions of the canvas

canvas = Canvas(window, width=size, height=size) This creates a


canvas inside
canvas.pack() A forever loop makes the a window
program draw circles endlessly
while True: This chooses a random colour from the list
col = choice([pink, orange, purple, yellow])
x0 = randint(0, size)
This creates a circle of a
y0 = randint(0, size) random size in a random
place on the canvas
d = randint(0, size/5)
canvas.create_oval(x0, y0, x0 + d, y0 + d, fill=col)
window.update() This part of the line draws the circle

This part fills it with the


Coloured canvas colour that has been
2 Run the code and the
Tk
chosen ( col)
program will start drawing
circles on the canvas.

The size of each


circle is random

Circles are drawn in


random places
158 P L AY I N G W I T H P Y T H O N

Making shapes SEE ALSO


Changing 160161
things

As well as adding windows, buttons, and colours to
a graphical user interface (GUI), Tkinter can also be
Reacting 162163
to events

used to draw shapes.

Creating basic shapes


Rectangles and ovals are useful shapes for drawing all
sorts of things. Once a canvas has been created, the
following functions can be used to draw shapes on it.

Sets the size


>>> from tkinter import * of the canvas
Creates a canvas
>>> window = Tk() to draw on Sets the position and
size of the rectangle
>>> drawing = Canvas(window, height=500, width=500) using co-ordinates
>>> drawing.pack() Draws a rectangle (see below)

>>> rect1 = drawing.create_rectangle(100, 100, 300, 200)


>>> square1 = drawing.create_rectangle(30, 30, 80, 80)
>>> oval1 = drawing.create_oval(100, 100, 300, 200) A square can be made by
drawing a rectangle with
>>> circle1 = drawing.create_oval(30, 30, 80, 80) all sides the same length

Sets the position


Draws a circle and size of the circle

Co-ordinates grid
Drawing with co-ordinates The top-left corner of the rectangle
Co-ordinates are used to tell the computer exactly is at co-ordinates (50, 50). The
where to create shapes. The first number (x) tells the bottom-right corner is at (250, 350).
computer how far along the screen to go. The second
0 100 200 300 400 500
number (y) tells the computer how far down to go.
0

(x1=50, y1=50)
100

This is the name of Co-ordinates for the


the canvas top left of the rectangle
200

>>> drawing.create_rectangle(50, 50, 250, 350)


300

Setting the co-ordinates (x2=250, y2=350)


Co-ordinates for
The first two numbers give the the bottom right
400

co-ordinates for the top-left corner of of the rectangle


the rectangle. The second two numbers
500

locate the bottom-right corner.


MAKING SHAPES 159
Adding colour to shapes
Its also possible to create coloured shapes. Code
Creates a solid
can be used to set different colours for the outline blue circle with
and the inside (fill) of each shape. a red outline

>>> drawing.create_oval(30, 30, 80, 80, outline=red, fill=blue)

Draw an alien
You can draw almost anything by combining different
shapes. Here are some instructions for creating an alien
using ovals, lines, and triangles.

Create the alien


1 For each part of the alien, you must define the type of
shape, size, position on the canvas, and colour. Each shape
has a unique ID number that can be stored in a variable.

from tkinter import *


Sets Alien as the
window = Tk() title of the window
Creates the canvas
window.title(Alien)
Draws a green oval
c = Canvas(window, height=300, width=400) for the body
c.pack()
body = c.create_oval(100, 150, 300, 250, fill=green) Draws a black dot
inside the eye
eye = c.create_oval(170, 70, 230, 130, fill=white)
eyeball = c.create_oval(190, 90, 210, 110, fill=black)
mouth = c.create_oval(150, 220, 250, 240, fill=red) Draws a red oval
neck = c.create_line(200, 150, 200, 130) for the mouth

hat = c.create_polygon(180, 75, 220, 75, 200, 20, fill=blue)

Draws a blue
triangle for the
aliens hat

Meet the alien


2 Run the code to draw
the alien. It has a green body, The finished alien
a red mouth, and one eye
on a stalk. Its also wearing
a lovely blue hat.
160 P L AY I N G W I T H P Y T H O N

Changing things SEE ALSO

158159 Making
shapes
Once a graphic has been drawn on the canvas, it doesnt
need to stay the same. Code can be used to change the
Reacting to 162163
events

way it looks, or move it around the screen.

Moving shapes REMEMBER


To make a shape move on the canvas, you need to Meaningful names
tell the computer what to move (the name or ID
you gave the shape) and where to move it. Its a good idea to use sensible
names to identify the shapes
The eyeball on the canvas. These pages
turns left, then use names like eyeball and
back again
mouth so the code is easy
to read and understand.

Shapes name,
or ID
Moving eyeballs
>>> c.move(eyeball, -10, 0) Type this code into the shell
>>> c.move(eyeball, 10, 0) window to make the eyeball turn
to the left, then turn back again.
This function Sets co-ordinates
moves shapes for the movement

Changing colours
You can make the mouth look as though
it is opening and closing by simply
changing the colour of the oval.
Mouth open
Mouth
The function closed
Write the code Open and close
1 Type this code to create two
itemconfig() changes
the properties The opened
2 Type this code into the shell window
functions that will make the mouth of shapes youve mouth will to make the mouth open and close.
seem to open and close. already drawn be black

def mouth_open(): >>> mouth_open()


c.itemconfig(mouth, fill=black) >>> mouth_close()
def mouth_close(): The shapes ID The closed Enter these commands to
mouth will make the alien open and
c.itemconfig(mouth, fill=red) be red close its mouth
CHANGING THINGS 161
Hide and show Blinking alien
Shapes can be hidden using the itemconfig() To make the alien blink,
function. If you hide the eyeball, and then you need to hide the
pupil and make the
show it again a moment later, the alien looks white of the eye green.
as though it is blinking.

Create blinking functions Blink and unblink


1 This code creates two functions
Turns the
white of the
2 Type this code into the shell
so you can make the alien blink. eye green window to make the alien blink.

def blink(): The shapes ID >>> blink()


c.itemconfig(eye, fill=green) >>> unblink()
c.itemconfig(eyeball, state=HIDDEN) The unblink()
Makes the eye command makes
def unblink(): Hides the
white again the eye appear
pupil
c.itemconfig(eye, fill=white) open again
Reveals the
c.itemconfig(eyeball, state=NORMAL) pupil

Saying things
Text can also be displayed on the screen to make I am an alien!
the alien talk. You can even make it say different things
in response to user commands.

Adding text
1 This code adds text to the graphic Positions the text Put what you want
of the alien and creates a function to on the canvas the alien to say in
steal its hat. quote marks

words = c.create_text(200, 280, text=I am an alien!)


def steal_hat(): This hides
the hat As soon as the hat
c.itemconfig(hat, state=HIDDEN) disappears the alien
c.itemconfig(words, text=Give my hat back!) will ask for it back

A new message
appears when the
hat disappears Give my hat back!
Steal the hat
2 Type this code into the shell window
and see what happens.
Type this to
steal the hat
>>> steal_hat()
162 P L AY I N G W I T H P Y T H O N

Reacting to events SEE ALSO

158159 Making
shapes
Computers receive a signal when a key is pressed or a
mouse is moved. This is called an event. Programs can
160161 Changing
things
instruct the computer to respond to any events it detects.

Event names
Lots of different events can be triggered using
input devices like a mouse or keyboard. Tkinter
has names to describe each of these events.

Mouse events Keyboard events


<Button-1> <Right> <Up>
Left mouse Right arrow Up arrow Down arrow
button clicked key pressed key pressed key pressed

<Button-3> <Left> <Down>


Right mouse Left arrow
key pressed A key Different letters
button clicked pressed can go here

Spacebar
pressed
<space> <KeyPress-a>

Mouse events
To make a program respond to mouse events, simply link Burp!
(or bind) a function to an event. Here, the function burp
is created, then bound to the <Button-1> event.
This brings the Tkinter window
to the front of your screen

window.attributes(-topmost, 1)
def burp(event): Creates a function
called burp Burping alien
mouth_open()
Click the left mouse button and
c.itemconfig(words, text=Burp!) the alien lets out a burp. This
Links the left mouse click is because the burp function
c.bind_all(<Button-1>, burp) to the burp function
has been used.
REACTING TO EVENTS 163
Key events
Functions can also be bound to keys on the keyboard in
the same way. Type in the code below to make the alien
blink when the A and Z keys are pressed.

Makes the eye


def blink2(event): green (closed)
c.itemconfig(eye, fill=green)
c.itemconfig(eyeball, state=HIDDEN)
def unblink2(event): Hides the
eyeball
c.itemconfig(eye, fill=white)
c.itemconfig(eyeball, state=NORMAL)
c.bind_all(<KeyPress-a>, blink2)
c.bind_all(<KeyPress-z>, unblink2)
Shows the
eyeball
a z
Make the alien blink
When this code is run, the A key
This code links This binds the function will make the eye close, and the
functions to events unblink2 to the Z key Z key will make it open again.

Moving with keys


Key presses can also be used to trigger movement.
This code binds the arrow keys to functions that make
the aliens eyeball move.

This line finds out the


def eye_control(event): name of the pressed key
key = event.keysym
The eyeball moves
if key == Up: up if the up arrow
key is pressed
c.move(eyeball, 0, -1)
elif key == Down: The eyeball
moves left if the
c.move(eyeball, 0, 1) left arrow key is
pressed
elif key == Left:
c.move(eyeball, -1, 0) Activates the
function
elif key == Right: eye_control
when any key
c.move(eyeball, 1, 0) is pressed Eyeball control
c.bind_all(<Key>, eye_control) The eyeball moves in the direction
of the pressed arrow key.
164 P L AY I N G W I T H P Y T H O N

PROJECT 7
Bubble blaster SEE ALSO

154155 Making
windows
This project uses all the skills taught in this chapter
to make a game. Its a big project, so tackle it in stages
156157 Colour and
co-ordinates
and remember to save the program regularly. Try to 158159 Making
shapes
understand how each part fits together before moving
on to the next stage. By the end youll have a game
that you can play and share with friends.

Aim of the game


Before writing any code, think about the overall plan for the
game and how it should work. Here are the main rules that
set out how the game will be played:

The player controls a submarine


The arrow keys move the submarine
Popping bubbles scores points
A timer is set to 30 seconds at the start
Scoring 1,000 points earns extra time
The game ends when the time runs out
BUBBLE BLASTER 165

Create the game window IDLE File Edit Shell Debug Window Help

and the submarine Bubble Blaster

Start by setting the scene. Open a new code


window in IDLE. Type in the code below to
create the window for the game, and the
submarine that the player controls.

Use the Tkinter library to build the graphical


1 user interface (GUI). This code will create the
main window for the game.

Imports all of the


from tkinter import *
Tkinter functions
HEIGHT = 500
Sets the size
WIDTH = 800 of the window Sets dark blue as
Give the game the colour of the
window = Tk()
a snappy title background (the sea)
window.title(Bubble Blaster)
c = Canvas(window, width=WIDTH, height=HEIGHT, bg=darkblue)
c.pack()
Creates a canvas that
can be drawn on The submarine will
be represented by a
triangle inside a circle

A simple graphic will represent the submarine in this


2 game. This can be made using some of the drawing
Draws a red triangle
functions from Tkinter. Type out this code, then run it. for the submarine

ship_id = c.create_polygon(5, 5, 5, 25, 30, 15, fill=red)


ship_id2 = c.create_oval(0, 0, 30, 30, outline=red)
The radius (size) of the submarine
SHIP_R = 15
The variables MID_X and Draws a red
MID_X = WIDTH / 2 MID_Y give the co-ordinates circle outline

MID_Y = HEIGHT / 2 of the middle of the screen

c.move(ship_id, MID_X, MID_Y) Moves both parts of the submarine


to the centre of the screen Dont forget to
c.move(ship_id2, MID_X, MID_Y) save your work
166 P L AY I N G W I T H P Y T H O N

BUBBLE BLASTER
Controlling the submarine
The next stage of the program is to write the code that makes the
submarine move when the arrow keys are pressed. The code will
create a function called an event handler. The event handler
checks which key has been pressed and moves the submarine.

Type this code to create a function called move_ship. This


3 function will move the submarine in the correct direction when
a cursor key is pressed. Try running it to see how it works.

The sub will move this


SHIP_SPD = 10 far when a key is pressed
def move_ship(event):
if event.keysym == Up:
c.move(ship_id, 0, -SHIP_SPD) Moves the two parts of
the sub up when the up
c.move(ship_id2, 0, -SHIP_SPD) arrow key is pressed

elif event.keysym == Down:


c.move(ship_id, 0, SHIP_SPD) These lines are activated when
the down arrow key is pressed,
c.move(ship_id2, 0, SHIP_SPD) and the sub moves down
elif event.keysym == Left:
c.move(ship_id, -SHIP_SPD, 0) The sub moves left when the
left arrow key is pressed
c.move(ship_id2, -SHIP_SPD, 0)
elif event.keysym == Right: Moves the sub right
c.move(ship_id, SHIP_SPD, 0) when the right
arrow key is pressed
c.move(ship_id2, SHIP_SPD, 0) y co-ordinate gets
smaller moving up
c.bind_all(<Key>, move_ship)
Tells Python to run move_ship
whenever any key is pressed

x co-ordinate gets
smaller going left

How it works
The move_ship function moves the
sub in different directions. Adding to
the subs x and y co-ordinates moves
Dont forget to it right and down, while subtracting y co-ordinate gets x co-ordinate gets
save your work from them moves it left and up. larger moving down larger going right
BUBBLE BLASTER 167

Get ready for bubbles


Now the submarine can move, start creating the
bubbles for the player to pop. Each bubble will be
a different size and move at a different speed.
Every bubble needs an ID number (so the
4 program can identify each specific bubble),
a size, and a speed.

from random import randint


bub_id = list() This creates three empty lists
used to store the ID, radius (size),
bub_r = list() and speed of each bubble
bub_speed = list()
MIN_BUB_R = 10 Sets the minimum radius of
the bubble to 10, and the
MAX_BUB_R = 30 maximum to 30

MAX_BUB_SPD = 10
Sets the position
GAP = 100 of the bubble on Picks a random size for
the canvas the bubble, between the
def create_bubble(): maximum and minimum
x = WIDTH + GAP values possible

y = randint(0, HEIGHT) This line of code creates


the bubble shape
r = randint(MIN_BUB_R, MAX_BUB_R)
id1 = c.create_oval(x - r, y - r, x + r, y + r, outline=white)
bub_id.append(id1) Adds the ID, radius, and
speed of the bubble to
bub_r.append(r) the three lists
bub_speed.append(randint(1, MAX_BUB_SPD))

EXPERT TIPS
Bubble lists
Three lists are used to store bub_id: stores the ID number of the
information about each bubble. The bubble so the program can move it later.
lists start off empty, and information bub_r: stores the radius (size)
about each bubble is then added of the bubble.
as you create it. Each list stores a bub_speed: stores how fast the bubble
different bit of information. travels across the screen. Dont forget to
save your work
168 P L AY I N G W I T H P Y T H O N

BUBBLE BLASTER
Make the bubbles move
There are now lists to store the ID, size, and speed of the bubbles,
which are randomly generated. The next stage is to write the code
that makes the bubbles move across the screen.

This function will go


Goes through each
5 through the list of def move_bubbles(): bubble in the list
bubbles and move for i in range(len(bub_id)):
each one in turn.
c.move(bub_id[i], -bub_speed[i], 0)

Moves the bubble


across the screen Imports the functions
according to its speed you need from the
Time library

This will be the main


6 loop for the game. It from time import sleep, time
will be repeated over BUB_CHANCE = 10
and over while the
Generates a random
game is running. Try #MAIN GAME LOOP number from 1 to 10
running it! while True:
if randint(1, BUB_CHANCE) == 1:
If the random number
create_bubble() is 1, the program
creates a new bubble
move_bubbles() Runs the move_bubbles (on average 1 in 10
window.update() function times so there arent
too many bubbles!)
Dont forget to Updates the window to redraw
sleep(0.01)
save your work bubbles that have moved

Slows the game down so


its not too fast to play
(x0, y0)
Now youre going to create a useful function to find out where a
7 particular bubble is, based on the ID. This code should be added
to the program directly after the code you created in step 5.
(x, y)
Works out the
def get_coords(id_num): x co-ordinate of the
pos = c.coords(id_num) middle of the bubble (x1, y1)
x = (pos[0] + pos[2])/2 Locating bubbles
The function finds the middle
y = (pos[1] + pos[3])/2 Works out the
y co-ordinate of the of the bubble by taking the
return x, y middle of the bubble point halfway between the
corners of the box around it.
BUBBLE BLASTER 169

How to make bubbles pop


The player will score points when the bubbles are popped, so
the program has to make bubbles disappear from the screen.
These next functions will allow it to do that.

This function deletes


the bubble with ID i

This function will be used to remove


def del_bubble(i): Deletes the bubble from
8 a bubble from the game. It does this the radius and speed lists
by deleting it from all the lists, and del bub_r[i]
from the canvas. This code should
be added directly after the code del bub_speed[i]
you typed out in step 7. c.delete(bub_id[i])
Deletes the bubble
del bub_id[i] from the canvas

Deletes the bubble


from the ID list

Type this code to


9 create a function def clean_up_bubs():
that cleans up for i in range(len(bub_id)-1, -1, -1):
bubbles that have
x, y = get_coords(bub_id[i]) This goes through the
floated off the screen. bubble list backwards
This code should go if x < -GAP: to avoid the for loop
directly after the Finds out where
causing an error when
del_bubble(i) the bubble is
code from step 8. bubbles are deleted

If the bubble is off the screen


then it is deleted otherwise it
would slow the game down

Now update the main


10 game loop (from step #MAIN GAME LOOP Makes a new bubble
6) to include the while True:
helpful functions you
have just created. if randint(1, BUB_CHANCE) == 1:
Run it to make sure create_bubble() Updates the positions
you havent included of all the bubbles
any errors. move_bubbles()
clean_up_bubs()
Removes bubbles window.update() Redraws the window
that are off the screen Dont forget to
sleep(0.01) to show the changes
save your work
170 P L AY I N G W I T H P Y T H O N

BUBBLE BLASTER
Working out the distance between points
In this game, and lots of others, it is useful to know the distance
between two objects. Heres how to use a well-known mathematical
formula to have the computer work it out.

This function calculates the distance between


11 two objects. Add this bit of code directly after
Loads the sqrt function
the code you wrote in step 9.
from the Math library

from math import sqrt Gets the position of


def distance(id1, id2): the first object

x1, y1 = get_coords(id1) Gets the position of


the second object
Gives back the distance
x2, y2 = get_coords(id2) between them
return sqrt((x2 - x1)**2 + (y2 - y1)**2)

Pop the bubbles


The player scores points by popping bubbles. Big bubbles
and fast bubbles are worth more points. The next section of
code works out when each bubble is popped by using its
radius (the distance from the centre to the edge).
Collision sensing
If the distance between
When the submarine and a bubble crash into each other, the the centre of the sub and the centre
12 program needs to pop the bubble and update the score. This of a bubble is less than their radiuses
bit of code should come directly after the code in step 11. added together, they have collided.

This variable keeps This loop goes through the entire list
def collision(): track of points scored of bubbles (it goes backwards to
avoid errors when deleting bubbles) Checks for collisions
points = 0 between the sub
for bub in range(len(bub_id)-1, -1, -1): and any bubbles

if distance(ship_id2, bub_id[bub]) < (SHIP_R + bub_r[bub]):


points += (bub_r[bub] + bub_speed[bub])
del_bubble(bub) Calculates the number of
Deletes the bubble points this bubble is worth
return points and adds it to points

Gives back the


number of points
BUBBLE BLASTER 171

Now update the main game loop to use the


13 functions you have just created. Remember that
the order is important, so make sure you put
everything in the right place. Then run the code.
Bubbles should burst when they hit the sub.
Check the shell window to see the score.

score = 0
#MAIN GAME LOOP Sets the score to zero
when the game starts
while True:
Creates new bubbles
if randint(1, BUB_CHANCE) == 1:
create_bubble()
move_bubbles() Adds the bubble
clean_up_bubs() score to the total

score += collision()
print(score)
window.update() Shows the score in the shell
window it will be displayed
sleep(0.01) properly later

This pauses the action for


a very short time try
removing this and see
what happens

EXPERT TIPS
Python shortcut Dont forget to
save your work

The code score += collision()


is a shortcut for writing
score = score + collision(). It adds
the collision score to the total
score, then updates the total score.
Code like this is common, so a
shortcut is useful. You can also do
the same thing using the
symbol. For example, score = 10
is the same as score = score 10.
172 P L AY I N G W I T H P Y T H O N

BUBBLE BLASTER
Adding a few final touches
The main stages of the game are now working. All that remains
is to add the final parts: displaying the players score, and setting
a time limit that counts down until the game ends.

Type in this code after the code you entered in step Creates TIME and SCORE
14 12. It tells the computer to display the players score labels to explain to the player
and the time left in the game. what the numbers mean

c.create_text(50, 30, text=TIME, fill=white )


c.create_text(150, 30, text=SCORE, fill=white )
Sets the scores and
time_text = c.create_text(50, 50, fill=white ) time remaining

score_text = c.create_text(150, 50, fill=white )


def show_score(score): Displays the score
c.itemconfig(score_text, text=str(score))
Displays the
def show_time(time_left): time remaining
c.itemconfig(time_text, text=str(time_left))

Next, set up the time limit and the score required to gain
15 bonus time, and calculate the end time of the game. This
bit of code should come just before the main game loop.

from time import sleep, time


Imports functions from
BUB_CHANCE = 10 the Time library
TIME_LIMIT = 30 Starts the game with a
30-second time limit
BONUS_SCORE = 1000
Sets when bonus time is
score = 0
given (when a player has SCORE
bonus = 0 scored 1,000 points)

end = time() + TIME_LIMIT

Stores the finish time in Scoreboard


a variable called end Scoreboards are a great visual way to
show the player at a glance how well
they are doing in a game.
BUBBLE BLASTER 173

Update the main Repeats the main game loop


16 game loop to include #MAIN GAME LOOP until the game ends
the new score and while time() < end:
time functions.
if randint(1, BUB_CHANCE) == 1:
create_bubble()
move_bubbles()
Calculates when to
clean_up_bubs() give bonus time

score += collision()
if (int(score / BONUS_SCORE)) > bonus:
bonus += 1 print(score) has been replaced by
show_score(score) so that the score
end += TIME_LIMIT now appears in the game window
show_score(score)
show_time(int(end - time()))
window.update()
Displays the time remaining
Dont forget to sleep(0.01)
save your work

Finally, add a GAME OVER graphic. This will be Sets the font
17 shown when the time runs out. Add this to the Puts graphic in the
middle of the screen
Helvetica is a good
font for big letters
very bottom of your program.

c.create_text(MID_X, MID_Y, \
text=GAME OVER, fill=white, font=(Helvetica,30))
Tells you what your
c.create_text(MID_X, MID_Y + 30, \ score was
text=Score: + str(score), fill=white) Sets the text colour
to white
c.create_text(MID_X, MID_Y + 45, \
text=Bonus time: + str(bonus*TIME_LIMIT), fill=white)

Shows how much bonus


time was earned

Dont forget to
save your work
174 P L AY I N G W I T H P Y T H O N

BUBBLE BLASTER
Time to play
Well done! Youve finished writing Bubble
blaster and its now ready to play. Run the The timer counts The player scores
program and try it out. If something isnt down to the end points for
working, remember the debugging tips of the game popping bubbles
with the sub
look back carefully over the code on the
previous pages to make sure everything
is typed out correctly. IDLE File Edit Shell Debug Window
Bubble Blaster
Up arrow key
Left
TIME SCORE
arrow key Down arrow key 13 241

Right
arrow key

Controls
The submarine is steered using the arrow
keys. The program can be adjusted so it
works with other controls.

EXPERT TIPS
Improving your game
All computer games start as a basic idea. They
are then played, tested, adjusted, and improved.
Think of this as version one of your game. Here
are some suggestions of how you could change
and improve it with new code:

Make the game harder by adjusting the time limit


and the score required for bonus time.
Choose a different colour for your submarine.
Create a more detailed submarine graphic.
Have a special type of bubble that increases the
speed of the submarine.
Add a smart bomb that deletes all of the bubbles
when you press the spacebar.
Build a leaderboard to keep track of the
best scores.
BUBBLE BLASTER 175

The bubbles float New bubbles drift in


from right to left and from the right at
disappear off the screen random intervals

Help

The player uses this


submarine to pop as
many bubbles as they
can before time runs out

The bubbles are all


different sizes and move
at different speeds

Super submarine
Now you can share this
game with your friends.
Take turns to see who can
score the most points.
Afterwards, show them
the code behind it and
explain how it all works.
176 P L AY I N G W I T H P Y T H O N

What next? SEE ALSO

152153 Libraries
Now that youve tackled the Python projects in this book, Computer 204205
games

youre on your way to becoming a great programmer.
Here are some ideas for what to do next in Python,
and how to take your programming skills further.

Experiment REMEMBER
Play around with the code samples Read lots of code
in this book. Find new ways to remix
them or add new features and Find interesting programs or
dont be afraid to break them too! libraries written by other people
and read through the code and
This is your chance to experiment their comments. Try to understand
with Python. Remember that it how the code works, and why it is
is a professional programming built that way. This increases your
language with a lot of power you knowledge of coding practices.
can do all sorts of things with it. You will also learn useful bits of
information about libraries that
you can use in future programs.
Build your own libraries
Programmers love to reuse code and share their
work. Create your own library of useful functions and
share it. Its a great feeling to see your code being
used by another programmer. You might build
something as useful as Tkinter or Turtle!
W H AT N E X T ? 177
Make games EXPERT TIPS
with Python Different versions of Python
You could create your own game When you find code elsewhere (in other books or online), it
using Python. The PyGame may be written for a different version of Python. The versions
library, which is available to are similar, but you might need to make small changes.
download from the web, comes
Python 2
with lots of functions and tools print Hello World
that make it easier to build
games. Start by making simple Python 3
games, then progress to more print(Hello World)
complex ones.

Score 56
22

Debug your code


Debugging is an important part of programming. Dont just
give up if something isnt working. Remember that computers
will only do what you tell them, so look through the code and
figure out why its not working. Sometimes looking over it
with another programmer helps you to find bugs quicker.
Inside
computers
180 INSIDE COMPUTERS

Inside a computer SEE ALSO


Storing data 192193
in files

The earliest computers were simple calculators. At a
basic level, computers havent changed much since
The Internet 194195
then. They take in data (input), perform calculations,
Mini 214215
computers

and give out answers (output).

Basic elements
A computer consists of four main The memory contains
parts: input, memory, processor, and information in sections, Memory
like books on library
output. Input devices gather data, shelves. Memory is used
similar to the way your eyes or ears to store programs and
the data they use
collect information about the world
around you. Memory stores the data,
while processors examine and alter it,
just like a human brain. Output devices
show the results of the processors The control unit
retrieves programs
calculations, like a person speaking or from the memory in
moving after deciding what to do. order to run them

Von Neumann architecture


A scientist called John von Neumann first
came up with the standard layout for a
computer in 1945. His plan is still followed The control unit Processor
today, with some improvements. loads and carries
out instructions
from programs
Input Control unit
Language and information
can be input through
the keyboard

Keyboard

Icons and menus can be


Mouse selected using the mouse
INSIDE A COMPUTER 181
Screen The network adapter,
Computer hardware is used for contacting
Hardware is the physical parts of other computers
The motherboard
a computer. Computers contain connects pieces of
Graphics processor
many different bits of hardware hardware together
The battery
working together. As computer supplies power
makers pack more and more Processor
features into smaller machines,
the hardware components have Data storage The chipset controls
to be smaller, generate less heat, communication
and use less power. Inside a laptop between components

LINGO
GIGO
Garbage in, garbage out (GIGO
for short) is a computing phrase
The arithmetic logic
unit retrieves data for meaning that even the best
its calculations from programs will output nonsense
the memory if they receive the wrong input.

The processor is made up of


two parts, one to carry out
instructions and the other
to perform calculations

The arithmetic logic unit


(ALU) performs any calculations
the program needs

Arithmetic logic unit Output


Printers output
data on to paper Speakers turn
2+3=5 data into sounds

5>3=?

Printer

Screens provide
Screen Speaker
visual output
182 INSIDE COMPUTERS

Binary and bases SEE ALSO


Symbols 184185
and codes

How can computers solve complex calculations when all
they understand is electrical signals? Binary numbers
Logic gates 186187
are used to translate these signals into numbers.

What is a base number? Each extra digit is worth


10 times the one before
A base is the number of values
that can be shown using only one x10 x10 x10
digit. Each extra digit increases
the number of values that can be
shown by a multiple of the base. 1000 100 10 1 The number
3274 is made
Decimal system up of four digits
The decimal system is the most
familiar counting system, and has a
base of 10. It can show 10 values
3 2 7 4
with one digit, 100 values with two
digits, and 1000 with three digits.
3x1000 + 2x100 + 7x10 + 4x1 = 3274
Binary code A wire with
a current
At the most basic level, computers only understand
two values: electrical signals that are on and o.
1 and 0
1
As there are only two values, computers deal with A wire with ON
numbers using a base of two, or binary. Each digit is electrical signal
either a 1 or a 0, and each extra digit in the number on is a 1. A wire
is worth two times the previous digit. with electrical
Each extra digit is signal o is a 0. 0
worth twice as much
OFF
x2 x2 x2 x2 x2 x2 x2
Binary
128 64 32 16 8 4 2 1 The range of
values that
can be written
doubles with
each digit added.
1 1 1 1 0 0 0 1
1x128 + 1x64 + 1x32 + 1x16 + 0x8 + 0x4 + 0x2 + 1x1 = 241
BINARY AND BASES 183
Understanding nibbles
Hexadecimal A nibble is made up of four binary
When using numbers in computer programs, a base of 16 digits, which can be represented by
is often used because its easy to translate from binary. As one hexadecimal digit.
there are only 10 symbols for numbers (09), the values
The number 241
for 1016 are represented by the letters AF. in binary code

1 1 1 1 0 0 0 1
Binary numbers can be

1111 broken down into nibbles


made up of four digits 0001 The number in
hexadecimal

1111 in binary is
15, which is F in
hexadecimal
F 0001 in binary is 1, which
is 1 in hexadecimal
1 The number
241=F1
in decimal
Comparing base systems
REMEMBER
Using this table, you can see that expressing
numbers in hexadecimal gives the most Bits, nibbles, and bytes
information with the fewest digits.
A binary digit is known as a bit, and is the
DIFFERENT BASES smallest unit of memory in computing. Bits
Decimal Binary Hexadecimal are combined to make nibbles and bytes. A
kilobit is 1024 bits. A megabit is 1024 kilobits.
0 0 0 0 0 0
1 0 0 0 1 1
2 0 0 1 0 2 Bits: Each bit is a single
binary digit a 1 or 0.
3 0 0 1 1 3
4 0 1 0 0 4 1
5 0 1 0 1 5
6 0 1 1 0 6 Nibbles: Four bits make up
a nibble enough for one
7 0 1 1 1 7 hexadecimal digit.
8 1 0 0 0 8
1001
9 1 0 0 1 9
10 1 0 1 0 A
Bytes: Eight bits, or two
11 1 0 1 1 B hexadecimal digits, make up a
12 1 1 0 0 C byte. This gives us a range of
13 1 1 0 1 D values from 0 to 255 (00 to FF).
14 1 1 1 0 E
10110010
15 1 1 1 1 F
184 INSIDE COMPUTERS

Symbols and codes SEE ALSO

180181 Inside
a computer
Computers use binary code to translate numbers into
electrical signals. But how would a computer use binary
182183 Binary
and bases
to store the words and characters on this page?
ASCII
The first computers each stored characters in their own ASCII
unique way. This worked fine until data needed to be 32 SPACE 64 @ 96 `
moved between computers. At this point, a common 33 ! 65 A 97 a
system was chosen, called the American Standard Code 34 66 B 98 b
for Information Interchange (ASCII, pronounced askey). 35 # 67 C 99 c
36 $ 68 D 100 d
ASCII table 37 % 69 E 101 e
In ASCII, a decimal number value is 38 & 70 F 102 f
given to each character in the upper- 39 71 G 103 g
and lower case alphabets. Numbers are 40 ( 72 H 104 h
also assigned to punctuation and other
41 ) 73 I 105 i
characters, such as a space.
42 * 74 J 106 j
43 + 75 K 107 k
44 , 76 L 108 l
ASCII in binary
As each character has a number, R = 82 = 1010010 45 - 77 M 109 m
that number then needs to be 46 . 78 N 110 n
converted to binary to be stored
in a computer. r = 114 = 1110010 47
48
/
0
79
80
O
P
111
112
o
p
49 1 81 Q 113 q
50 2 82 R 114 r
ASCII in Python This command prints
the character, the ASCII 51 3 83 S 115 s
You can convert between ASCII
and binary in most languages, value, and the binary 52 4 84 T 116 t
value for each letter in 53 5 85 U 117 u
including Python.
the name Sam
54 6 86 V 118 v
>>> name = Sam 55 7 87 W 119 w
>>> for c in name: 56 8 88 X 120 x
57 9 89 Y 121 y
print(c, ord(c), bin(ord(c)))
58 : 90 Z 122 z
59 ; 91 [ 123 {
S 83 0b1010011 60 < 92 \ 124 |
Here are the results. The 61 = 93 ] 125 }
a 97 0b1100001 beginning of each binary
number is marked 0b 62 > 94 ^ 126 ~
m 109 0b1101101 63 ? 95 _ 127 DELETE
SYMBOLS AND CODES 185
Unicode
As computers across the world began to share data, the
limits of ASCII began to show. Thousands of characters
used in hundreds of languages had to be represented,
so a universal standard called Unicode was agreed on.

Unicode has over International code


110,000 characters!
Unicode represents all the
languages of the world. For
example, the Arabic characters are
represented in the range 060006FF.

Unicode characters
Unicode characters are
represented by their
hexadecimal value, which
appears as a series of
letters and numbers
(see pp.182183). Each 2602 2EC6 08A2 0036
character has its own code.
More characters are added
all the time, and there are
some unusual ones, such
as a mini umbrella.

0974 004D 2702 A147

REMEMBER
Unicode in Python
Hexadecimals Unicode can be used to display special characters
in Python. Simply type a string containing a Unicode
Hexadecimal numbers have a base of 16.
character code.
Ordinary decimal numbers are used for 0 to 9,
Putting \u before the
and the values 1015 are represented by the hexadecimal code tells the
letters A to F. Each hexadecimal number has an computer this is Unicode
equivalent binary value.
The Unicode value The same value >>> Zo\u00EB
of as hexadecimal as binary
Zo

= 00EB = 11100111 The code is translated


into the character
186 INSIDE COMPUTERS

Logic gates SEE ALSO

180181 Inside
a computer
As well as to understand numbers and letters, computers
can also use electrical signals to make decisions using
182183 Binary
and bases
devices called logic gates. There are four main types of
logic gates: AND, NOT, OR, and EXCLUSIVE OR.

AND gate
Gates use one or more input signals to produce an output signal,
based on a simple rule. AND gates switch their output signal on (1)
only when both input signals are on (1 and 1).

1 1 0

1 0 0

1 0 0

Inputs 1 and 1 = output 1 Inputs 1 and 0 = output 0 Inputs 0 and 0 = output 0


Both input signals are on, If one input is on but the An AND gate produces
so the AND gate produces an other is off, the output an off output signal if both
on output signal. signal is off. input signals are off.

REAL WORLD
NOT gate
These gates flip any input
George Boole (181564)
to its opposite. On input George Boole was an English
becomes off output, and mathematician whose work made
off input turns to on logic gates possible. He worked
output. NOT gates are also out a system to solve logic
problems. This kind of maths,
known as inverters. 1 0 which deals in values that can
only be true or false (positive or
Input 1 = output 0
negative), is known as Boolean
logic in his honour.
The NOT gate flips an on input to
an off output, and vice versa.
L O G I C G AT E S 187
OR gate
An OR gate produces an on output when either one
of the inputs is on, or when both are on.

1 1 0
1 1 0
1 0 0

Inputs 1 and 1 = output 1 Inputs 1 and 0 = output 1 Inputs 0 and 0 = output 0


Two on inputs produce One on and one off input still Only two off inputs produce an
an on output. produce an on output. off output from an OR gate.

EXCLUSIVE OR gate
This type of gate only gives 1 1
an on output when one
input is on and the other is
off. Two on or two off
0 1
inputs will produce an off
output. Gates like this are also 1 0
known as XOR gates.
Inputs 1 and 1 = output 0 Inputs 1 and 0 = output 1
Two on inputs produce The output is only on when
an off output. the inputs are different.

EXPERT TIPS
Building computer circuits
By combining these four basic with two NOT gates in a loop,
logic gates, you can create circuits you can create a circuit that
to perform a whole range of will store a bit of data (a single
advanced functions. For example, 1 or 0). Even the most powerful
by linking an AND gate to an XOR computers are based on
gate, you create a circuit that can billions of tiny logic circuits.
add two binary digits (bits)
Computer chips contain
together. By linking two OR gates many logic circuits
188 INSIDE COMPUTERS

Processors and memory SEE ALSO

180181 Inside
a computer
Inside a computer are many types of electronic chips.
Most importantly, the processor chip runs programs
186187 Logic
gates
and memory chips store data for instant access.

The processor
Processors are a collection of very small and complex circuits, printed on
a glass-like material called silicon. Small switches called transistors are
combined to form simple logic gates, which are further combined to form
complex circuits. These circuits run all the programs on your computer.

Circuits in
a processor
The circuits are kept
synchronized by a
clock pulse, just like
an orchestra is kept in
time by a conductor.

Machine code
Save to
Processors only understand a set of memory
program instructions called machine
code. These simple instructions for
operations like adding, subtracting,
and storing data are combined to
create complex programs. Call another
piece of code

Understanding machine code Compare


two values
Machine code is just numbers, so coders
use programming languages like Python
that get converted into machine code.
PROCESSORS AND MEMORY 189
Memory LINGO
Like processors, memory chips are printed on silicon. A few RAM
logic gates are combined to create a latch circuit. Each
latch stores one bit (the smallest unit of data with a binary Memory is often referred to as
RAM (Random Access Memory),
value of either 1 or 0), and many latches are combined to
meaning any part of it can be
create megabytes and gigabytes of storage. accessed directly. Early types
of storage could only access data
in order from start to end, which
Memory is made up was much slower.
of repeated identical
blocks of circuit

Every item of data has a


number (called an address)
so it can be found quickly

Programs and data


Each block of memory can Programs constantly read,
store millions or billions of write, and update the data
bits of data stored in the memory.

REMEMBER
Processing information
The processor and memory, when
combined with input and output MEMORY
devices, give you everything you Contains the
need for a computer. In a game position of the A game program
character running
program, for example, the user
inputs position data by clicking the The character
mouse, the processor does the Mouse click jumps on screen
calculations, reads and writes
memory, and then produces output
in the form of making the character
INPUT PROCESSOR OUTPUT
jump on the screen.
190 INSIDE COMPUTERS

Essential programs SEE ALSO

180181 Inside
a computer
There are a few programs that every computer
needs in order to work. Some of the most important
182183 Binary
and bases
programs are operating systems, compilers, 188189 Processors
and memory
and interpreters.

Operating system
The operating system (OS) is the
This program has run
manager of the computers and is now waiting Each program has its
resources. It controls which for its next slice of own space in the
programs are allowed to run, how processor time computers memory

long they run for, and which parts


of the computer they use while
running. The OS also provides
interfaces, such as file browsers,
to let a user interact with the
computer. Common operating
systems include Microsoft
Windows and Mac OS X. Program
Memory
1

off
Programs run in turn

The operating system is


like an octopus, with
tentacles connecting to
all parts of a computer
Program Memory
2
The operating system
manages the
processors time
on

Program
How it works Memory
3
The processors time is
divided up into slices. A
program will be given a off
slice. If it cant finish in
that time, it is paused and This program is
the next program runs. waiting to run
ESSENTIAL PROGRAMS 191
input data
Compilers and Compiler
interpreters output output
Program Run program
The languages you write Program Run compiler in machine in machine
programs with, such as code code

Python, are known as high- Compiler


level languages. Computer Compilers produce translated output data
processors dont understand machine code that can be saved
these languages, so compilers and run later. input data
and interpreters are used to Interpreter
translate them into a low- Interpreter input
level language (known as Interpreters translate the Interpreter
Program
machine code) that a code and execute the runs program
computer does understand. program at the same time.

output data

Links to monitor

Links to keyboard

Links to speaker

Links to mouse

Links to printer

Links to network

The OS acts as a bridge


Links to storage between the programs
you want to run and the
computers hardware
192 INSIDE COMPUTERS

Storing data in files SEE ALSO

182183 Binary
and bases
A computers memory doesnt just store numbers and
characters. Many more types of data can be stored,
188189 Processors
and memory
including music, pictures, and videos. But how is this 190191 Essential
programs
data stored? And how can it be found again?

How is data stored? The computers file


system is similar to a
When data is saved to be used later, it is put into a paper filing system
file. This file can be given a name that will make it easy
to find again. Files can be stored on a hard-drive,
memory stick, or even online so data is safe even
when a computer is switched off.

EXPERT TIPS
File information
File sizes There is more to a file than just its
contents. File properties tell the system
Files are essentially collections of
everything it needs to know about a file. Right-click on a file to see
data in the form of binary digits properties such as file
(bits). File sizes are measured in type, location, and size
the following units:
FILE PROPERTIES
The file name
Bytes (B) should be
1 B = 8 bits (for example, 10011001) memorable name groove

What type of file


Kilobytes (KB) it is, typically in
three characters file type
1 KB = 1024 B extension
mp3
The program
Megabytes (MB) that can handle
the files data
1 MB = 1024 KB = 1,048,576 B opens with Music Player

The location of
Gigabytes (GB) the file on the
computer full directory
1 GB = 1024 MB = 1,073,741,824 B /Users/Jack/Music
path
The file size
Terabytes (TB) (see the box on
the left) size 50 MB
1 TB = 1024 GB = 1,099,511,627,776 B
S T O R I N G D ATA I N F I L E S 193
Directories EXPERT TIPS
Its easier to find files on a computer system if they are Managing files
well organized. To help with this, files can be grouped
together in directories, also known as folders. Its A file manager program helps find files
and directories. Each operating system
often useful for directories to contain other directories has a different one:
in the form of a directory tree.
Windows: Use Windows Explorer to
Directory tree look around the directory tree.
When directories are placed inside other Apple: Use Finder to look around the
directories, it creates a structure that resembles directory tree.
an upside-down tree, and just like a tree it has Ubuntu: Use Nautilus to look around
roots and branches (confusingly called paths). the directory tree.

The root of the


directory tree, where
you start looking for files

This path
This path
contains Saras
contains Jacks
user data
user data

Jacks Saras
folder folder

Mpegs are a type


of video file

Music Photos

story.txt film.mpg

PNGs and JPEGs


Text file are two types
of image file
Music files can
have different
file extensions

groove.mp3 funk.wav sunnyday.png island.jpg


194 INSIDE COMPUTERS

The Internet SEE ALSO

182183 Binary
and bases
The Internet is a network of computers all across the
world. With so many computers, clever systems are
192193 Storing data
in files
needed to make sure information goes to the right place.

IP addresses
Every computer or phone connected to the Internet has an address,
much like a building. The addresses are called Internet Protocol (IP)
Packets are put
addresses and each one is made up of a series of numbers. back together in
the right order

Sending information
Receiving computer
Files travel between computers in accepts packets
small chunks called packets. Special
computers called routers forward
these packets to their destination.

Sending
computer
transmits data

Packets hop from


router to router
around the globe

File is broken down EXPERT TIPS


into small chunks of
data called packets Internet protocol
A protocol is a list of rules.
to... Internet Protocols are rules for
10.150.93 Address information how big packets can be and how
.2 2 Every packet of data they are structured. All Internet
from... is labelled with the devices must follow these rules
62.769.20 destination and senders IP if they want to be able to
.5 7 addresses. Domain names communicate with each other.
like dk.com are translated
into IP addresses.
THE INTERNET 195
Moving data
Before packets can be sent
between devices, they have to
be translated into binary signals
(ones and zeroes) that can travel
over great distances. Every device
Electrical signals Light Radio waves
on the Internet has a network
Copper wires carry Special glass fibres, Different types
adapter to perform this task. ones and zeroes as called fibre optic of radio waves can
Different devices send data in electrical signals of cables, transmit data carry ones and zeroes
different forms. different strengths. as pulses of light. without using wires.

Port numbers
Ports The numbers used for ports range
Just as you post a letter to a from 0 to 65535 and are divided A devices IP address
is like the street
specific person in an apartment into three types: well-known, address of a building
building, you may want to registered, and private.
send packets to a specific
program on a device. Computers
use numbers called ports IP 165.193.128.72
as addresses for individual
programs. Some common
A port within
programs have ports specially a device is
reserved for them. For example, 1 2 3 4 like an
web browsers always receive apartment in
a building
packets through port number 80.

5 7 8 Routers
deliver
6

packets like
EXPERT TIPS postmen to
the correct
Sockets 9 10 11 addresses

The combination of an IP address


12

and a port is known as a socket.


Sockets let programs send data
directly to each other across the 13 14 15 16
Internet, which is
useful for things
such as playing
online games. 17 18 19 20
Programming in
the real world
198 PROGRAMMING IN THE REAL WORLD

Computer languages SEE ALSO


Computer 204205
games

Thousands of different programming languages have
been created. Which one you should use depends on a
Making 206207
apps

number of factors, such as the type of program being
written and which kind of computer it will run on.
#include <stdio.h>
main()
Popular programming languages {
printf(Hello World!);
Some languages have emerged as the most popular for }
creating certain types of program on certain types of
computer. Here is how to run a simple Hello World!
program in a few popular programming languages.
C
One of the most popular
languages of all time, C is often
#include <iostream> used for programming hardware.
int main()
{
std::cout << Hello World! << std::endl; #import <stdio.h>
} int main(void)
{
printf(Hello World!);
}

C++
alert(Hello World!);
Based on C, but with extra
features. Used in programs
that need to be fast, such
as console games.
Objective-C
Based on C, with some extra JavaScript
features. It has become popular Used to create
due to its use on Apples Mac programs that run on
class HelloWorldApp { and iOS devices. web browsers, such
public static void main(String[] args) {
as simple games and
System.out.println(Hello World!);
} email websites.
} <?php
echo Hello World!;
?>

Java PHP
A very versatile language that Mostly used for creating
can run on most computers. interactive websites, PHP
Its often used for coding on runs on the web servers
the Android operating system. that host websites.
COMPUTER LANGUAGES 199
Languages from the past REAL WORLD
Many languages that were famous twenty or thirty years Millennium bug
ago have fallen in popularity, despite still being used in
some very important systems. These languages are often Many programs in older languages
like COBOL used two digits to
seen as difficult to code by modern standards.
represent a year (such as 99 for
1999). The millennium bug was
Designed in 1964 at Dartmouth College, in the
BASIC USA, BASIC was very popular when home
predicted to cause problems in
2000 when these dates rolled over
computers first became available.
into the new millennium as 00.

Computers all over


Designed in 1954 at IBM, a technology firm, Fortran the world had to be
Fortran is mainly used for calculations on large computers. updated to stop the
millennium bug
It is still being used in weather forecasting.

Designed in 1959 by a committee of experts,


COBOL COBOL is still being used in many business and
banking programs.

Weird languages (&%:9]!~}|z2Vxwv-,POqponl$Hjig%eB@@>a=<M:9[p6tsl1TS/


Among the thousands of languages are QlOj)L(I&%$Z~AA@UZ=RvttT`R5P3m0LEDh,T*?(b&`$#87[}{W
a few that have been created for very
Malbolge
specific and strange purposes.
The Malbolge language was designed to be impossible to
program. The first working code did not emerge until two
years after its release, and was written by another program.

Ook!
Chef Designed to be used by
A program written in Chef is orangutans, Ook! has only three
Piet meant to resemble a cooking elements: Ook, Ook!, and
Programs created in Piet code look recipe. However, in practice, Ook? These can be combined
like abstract art. The Hello World! the programs rarely produce to create six commands, such
program is shown above. useful cooking instructions. as Ook! Ook and Ook? Ook!
200 PROGRAMMING IN THE REAL WORLD

Coding stars SEE ALSO

1819 Becoming
a coder
Computing is driven forward every day by millions of
programmers all around the world, but every now and
Computer 204205
games

then someone special comes along and takes a massive
leap. Here are a few of the most famous coders.

A l a n Tu r i n g
A d a L o v e la ce Nationality
: British
sh
Nationalit y: Briti Dates: 191
254

Dates: 181552 Famous for:


Mathemati
Alan Turin cian
g is known
Lovelace is as the
Famous for: Ada father of c
omputer sc
to be the first Hes also fa ience.
considered mo
computer prog ra m mer. ground-bre us for his
ak
In 1843, she pu
blished the cracking se ing work
cret
r Charles
first program fo German co
des during
ytical World War
Babbages Anal II for
ed early
Engine (a propos the British
.
e al so
computer). Sh
et ho ds for
suggested m
g ch ar acters
representin
as numbe rs.
Bil l Ga tes an d Pa ul All en
Gra ce Ho ppe r Nationality: American

3present
Nationalit y: American Dates: Gates 1955present, Allen 195

Dates: 190692 Famous for: Bill


Gates and Paul
Famous for: Grace Hopper created Allen founded
the first programming language Microsoft together
compiler (which transforms human in the 1970s. They
readable programs into machine invented some of
code). As well as being a the most popular
computer scientist programs ever, such as
she was a Rear Microsoft Windows
Admiral in the and Office.
US Navy!
CO D I N G S TA R S 201

Gu np ei Yo ko i an d Sh ig er u M iy am Ti m B e rn e rs -L e e
ot o
Nationalit y: Japanese Nationalit y: British

nt
Dates: Yokoi 194197, Miy
amoto 1952present Dates: 1955prese

working at
Famous for: Yokoi and Famous for: While
s sc ientific
Miyamoto worked for CERN (a famou
re in Switzerland),
Nintendo, the gaming research cent
vented
company. Yokoi Tim Berners-Lee in
invented the Game ld W id e W eb ,
the Wor
Boy, while Miyamoto ad e it fre e fo r
and m
made successful games ever yone. He was
n
such as Super Mario. knighted by Quee
04 .
Elizabeth II in 20

S e r g e i B r in Ma rk Zu ck erb erg
L arr y Page and
Nationality: American
merican
Nationalit y: A
Dates: 1984present
73present
Dates: Both 19

1996, Famous for: Zuckerberg


Famous for: In launched Facebook from his
B ri n began
Page and college room in 2004.
w h at would
work on Facebook has since become
Google
become the a billion-dollar company, and
e.
search engin made Zuckerberg one of the
r ef fe ct iv e
Thei wealthiest people alive.
ch m et h o d
sear
revolutioniz ed
the Internet.

Op en So ur ce M ov em en t
Nationality: All

t
Dates: Late 1970spresen
tion of
rce movement is a collec
Famous for: The open sou tw are should
world who believe sof
programmers around the be en responsible
all. The movement has
be free and available to h as the GNU/Linux
ces of software, suc
for many significant pie lin e en cyc lop edia.
kipedia, the on
operating system and Wi
202 PROGRAMMING IN THE REAL WORLD

Busy programs SEE ALSO

180181 Inside
a computer
Computers and programs have become an invisible
part of daily life. Every day, people benefit from very

192193 Storing
data in files
complex computer programs that have been written
to solve incredibly tough problems.

Compressing files REAL WORLD


Almost every type of file that is sent over the Internet Music files
is compressed (squeezed) in some way. When a file is
compressed, data that isnt needed is identified and Without music compression
programs, you could only fit a
thrown away, leaving only the useful information.
few songs on your music player.
By compressing audio files, the
average smartphone can now
hold thousands of songs.
Squeezing data
Compressing a file is
like squeezing a
jack-in-the-box to
make it fit into a
smaller space.

Secret codes
When you log in to a website,
buy something, or send a
message across the Internet,
smart programs scramble your
secret data so that anyone who
intercepts it wont be able to Cryptography
understand it. Global banking Cryptography is the
systems rely on these advanced study of codes. Complex
mathematical codes
programs capable of hiding
scramble and unscramble
secret information. personal data to keep it
safe from thieves.
BUSY PROGRAMS 203
Artificial Intelligence
Intelligent programs do more
than just make computer games
fun. Artificial Intelligence (AI)
is being used to provide better
healthcare, as well as helping
robots operate in places too
Medicine Bomb disposal
dangerous for humans to go,
Systems are able to analyse a Many soldiers lives can be
such as warzones and areas huge database of medical saved by using an intelligent
destroyed by natural disasters. information and combine it robot to safely dispose of a
with details from the patient bomb in an area that has been
to suggest a diagnosis. cleared of people.

Supercomputers REAL WORLD


Supercomputers used by high-tech organizations such Weather forecast
as NASA combine the power of thousands of computer
processors that share data and communicate quickly. The Weather patterns are very
result is a computer that can perform millions of unpredictable. Supercomputers
crunch the huge amounts of data
calculations per second. needed to accurately predict what
3 Each processor works on will happen. Each processor in the
one of the smaller problems supercomputer calculates the
2 Computer
breaks problem 4 Each sub-problem is weather for a small part of the map.
into smaller, finished off separately All the results are then combined
sub-problems to produce the whole forecast.
5 Computer
puts results
back together

1 Complex problem
is entered into 6 Final result appears
supercomputer much faster

How it works
Problems are broken into smaller problems that are all worked
on separately at the same time by different processors. The
results are then combined together to give the answer.
204 PROGRAMMING IN THE REAL WORLD

Computer games SEE ALSO

200201 Coding
stars
What does it take to make a modern video game?
All computer games are a different mix of the same
Making 206207
apps

ingredients. Great games are usually made by teams
of software developers not just programmers.

Who makes computer games?


Even simple games on your mobile phone might be made by large
teams of people. For a game to be popular and successful, attention
to detail needs to be given to every area during its development,
which involves many people with lots of different skills.

Graphic designer
All of the levels and
Level designer characters need to
The architects of the games look good. The graphic
virtual world, level designers designers define the
Coder create settings and levels structure and appearance
Programmers write the that are fun to play. of everything in the game.
code that will make the
game work, but they can
only do this with input
from the rest of the team. LINGO

Tester Consoles
Playing games all
day may seem like a A console is a special type of
great job, but testers computer that is well suited to
often play the same running games. Consoles, such as
level over and over the PS4 and Xbox One, often have
again to check for bugs. advanced graphics and sound
processors capable of running
many things at once, making
Scriptwriter more realistic games possible.
Modern games have
interesting plots just like
great books and films. Sound designer
Scriptwriters develop Just like a good movie,
all the characters and a great game needs
stories for the game. to have quality music
and sound effects to
set the mood.
COMPUTER GAMES 205
Game ingredients
The most common ingredients in games are often combined
into a game engine. Engines provide an easy-to-use base so
that new games can be developed quickly.

Story and game logic


All games must have a good
story and some sort of goal
to aim for, such as saving the
princess. Well-designed game
logic keeps players interested.

Game physics
In a virtual world, the rules of the
real world, such as gravity and
collisions, must be re-created to
make the game more believable.
Graphics
As games become more realistic their
graphics must become more complex.
Body movements, smoke, and water are
Controls particularly hard to get right.
Familiar controls that make sense to
the player help to make a great game.
Good control design makes the player
forget that they are using a controller. Sound
All of the words spoken in the
game must be recorded, as well
as the background music and
the sound effects that change
Open the pod bay
doors, Hal throughout the game.
Im sorry Dave, Im
afraid I cant do that REAL WORLD
Serious games
Games are being used for
more than just fun. Pilots,
surgeons, and soldiers are just
some of the professionals
who use games at work for
Artificial intelligence training purposes. Some
Human players often play alongside or businesses even use strategy
against computer-controlled players. games to improve their
Artificial intelligence programming allows employees planning skills.
these characters to respond realistically.
206 PROGRAMMING IN THE REAL WORLD

Making apps SEE ALSO

190-191 Essential
programs
Mobile phones have opened up a world of possibilities
for coders. With a computer in everyones pocket, mobile
198199 Computer
languages
apps can use new inputs, such as location-finding and 204205 Computer
games
motion-sensing, to give users a better experience.

What is an app?
App (short for application) is a word that describes
Social network
programs that run on mobile devices, including
Social apps can allow
smartphones, tablets, and even wearable technology people to connect with
such as watches. There are many different categories friends, whether they are
of apps that do different things. nearby or far away, to
share thoughts, pictures,
Games music, and videos.
All sorts of games are available on mobile
devices, from simple puzzle games to
fast-paced action adventures.

Travel
Travel apps use your location
combined with other users reviews
to provide recommendations for
restaurants, hotels, and activities.

Weather
Mobile apps use your location to
provide accurate weather forecasts,
and also allow you to check the
weather around the world.

Sport Education
People use apps to track their fitness Educational apps are great for
when running or cycling, and can also learning. Young children can learn
keep up to date on the latest sports to count and spell, and older
scores while on the go. people can learn a new language.
MAKING APPS 207
How to build an app
There are many questions to answer before
building an app. What will it do? What devices will
it run on? How will the user interact with it? Once
these questions are answered, building an app
is a step-by-step process.

Mac Have an idea


1 Any idea for a new app must be well suited to
mobile devices. It might be a completely new idea,
Android or it could just be an improvement on an already
existing idea to make a better version.
Windows
Which operating system?
2 Will the app target a certain type of
Learn to make apps
mobile device? Coders can often use tools that
let them write their application once and then
3 Whichever platform the app will run on,
adapt it for different operating systems. a coder needs to learn the language and other
skills needed to build a good app. Online
tutorials and local coding clubs can help.

Create the program


4 Good apps take time to make. A basic Test it
version might be working in weeks, but for an 5 Users will quickly get rid of an app if it contains
app to be really successful, it will need to be bugs. Putting in tests as part of the code, and getting
developed for a few months before its release. friends and family to try out the app can help to
clean up any errors before the app is released.
208 PROGRAMMING IN THE REAL WORLD

Programming SEE ALSO

198199 Computer
languages

for the Internet Using 210211


JavaScript

Websites are built using coding languages that work
just like Python. One of the most important of these
is JavaScript, which makes websites interactive.

How a web page works


Most web pages are built using several CSS
different languages. An email website, for The language CSS
(Cascading Style
instance, is made with CSS, HTML, and
JavaScript. The JavaScript code makes the
CSS Sheets) controls the
colours, fonts, and
site respond instantly to mouse clicks layout of the page.
without having to reload the page.

INBOX CONTACTS CALENDAR

Compose Delete + Move

Inbox Sam Funny cat video


Drafts Lizzie Presents for Ben
Sent Fiona Lunch?
Spam Shaila No thanks
Trash Paula Come to my party?
Dan Re: Barnyard dance
Ben Re: Amazing picture
JavaScript
Sarah Hockey match
Vicky Re: New York
Ella Book review
Phil Bens presents

HTML JavaScript
HTML HTML (HyperText Markup JavaScript controls how the
Language) builds the basic page changes when you use
structure of the page, with it. Click on an email, for
different sections that instance, and JavaScript
contain text or images. makes a message open up.
PROGRAMMING FOR THE INTERNET 209
HTML <html>
Blocks of text are surrounded by tags, a
very common feature in HTML code. This
When you open a website, your <head> tag gives the window a title
Internet browser downloads an
<title>The Hello World Window</title>
HTML file and runs the code to turn
it into a web page. To see how it </head>
works, type the code here into an <body>
IDLE code window (see pp.9293) <h1>Hello World in HTML</h1>
and save it as a file with the ending
<p>Hello World!</p>
.html. Double click the file and it The <p> and </p>
</body> tags surround
will launch a browser window ordinary paragraphs
saying Hello World! </html> This tag shows where
the HTML code ends

Trying JavaScript EXPERT TIPS


Its easy to experiment with JavaScript Games in JavaScript
as all modern web browsers can understand
it. JavaScript code is usually placed within JavaScript is so good at
creating interactive features
HTML code, so the example below uses two
that it can be used to make
coding languages at once. The JavaScript games from simple puzzles
section is surrounded by <script> tags. to fast-paced racing games.
These will work in any
Write some JavaScript modern web browser, so
1 Open a new IDLE code window and type out theres no need to install
the code below. Check the code very carefully. If the game first. JavaScript
there are any errors, youll just see a blank page. is also used to create web
apps such as webmail or
The <script> tag interactive calendars.
<script> introduces JavaScript code
alert(Hello World!);
</script> The alert command will
make an alert box pop up

Save your file Pop-up appears


2 Save the file and enter a filename such as test.html 3 The browser will open and an interactive alert box
so the code is saved as an HTML file and not a Python file. will pop up with the greeting Hello World! Click OK to
Then double click the file to test it. dismiss the box.
JavaScript
creates

test.html JavaScript
interactive
features such
as buttons
Hello World!
Dont forget to give your OK
filename an .html ending
210 PROGRAMMING IN THE REAL WORLD

Using JavaScript SEE ALSO

162163 Reacting
to events
JavaScript is great for creating mini programs that run
inside HTML, bringing websites to life and allowing users
122123 Loops
in Python
to interact with them. Although it works like Python, 208209 Programming
for the Internet
JavaScript code is more concise and trickier to learn.

Getting input
As with Python, you can use JavaScript to ask the user
for information. JavaScript can do this with a pop-up This line creates a
pop-up box and
box. The following program prompts the user to stores the text the The text in quotes
enter their name and responds with a greeting. user types into it appears in the box

Use a prompt
1 This short script <script>
stores the users name in a var name = prompt(Please enter your name);
variable. Type the code into
the IDLE code window and var greeting = Hello + name + !;
remember to save it with a document.write(greeting); JavaScript lines
.html filename. always end with
</script> a semicolon

The </script> tag shows This line displays


where the JavaScript ends the greeting EXPERT TIPS

Question appears Type carefully


2 Double-click the HTML file to launch When working with JavaScript, be
a browser window. Enter your name in the
careful to check that youve typed
box and click OK to see the greeting.
out the code correctly. If theres an
error, the browser will simply
JavaScript A prompt box ignore the whole block of
always has OK JavaScript and
Please enter your name and Cancel
buttons will create a
Charlie blank window,
without any error
The greeting message saying
OK Cancel appears in the what went wrong.
browser
window If that happens,
check the code
< > again carefully.
Hello Charlie!
U S I N G J AVA S C R I P T 211
Type the code
Events 1 In this example, an event (clicking a button) triggers a
An event is any action simple function (a tongue-twister appears). Type the code in
that a program can an IDLE code window and save the file with a .html ending.
detect, such as a mouse
click or a keystroke. The <button onclick=tonguetwist()>Say this!</button>
section of code that <script> Name of the function
HTML code links the
reacts to an event is function tonguetwist() function to a button
called an event handler. Curly brackets surround a block of code they
Event handlers are used a { work in a similar way to indents in Python
lot in JavaScript and can document.write(She sells seashells);
trigger many different }
JavaScript code
functions, making web </script> defines the function
pages fun and interactive.

Click the
button The tongue-twister
appears
Run the program
2 Double-click the file < > < >
to launch the program in a She sells seashells
browser window. Say this!

Loops in JavaScript
A loop is a section of code that repeats. Using
loops is much quicker and easier than typing
out the same line of code over and over again. Loop output
2 Save the code as a .html file and run
Loop code it. The loop keeps repeating as long as x
1 Like Python, JavaScript uses for to set up a loop. The repeated is less than 6 (x<6 in the code). To
lines of code are enclosed in curly brackets. This loop creates a simple increase the number of repeats, use a
counter that increases by one each time it repeats. higher number after the < symbol.

The <script> tag introduces < >


<script> the JavaScript code
for (var x=0; x<6; x++) This line creates a counter Loop count: 0
called x with a starting value The loop
Loop count: 1
{ of 0, rising by 1 in each repeat repeats six times
Loop count: 2
document.write(Loop count: +x+<br>);
Loop count: 3
} This line tells the computer to
write the text Loop count:
Loop count: 4
</script> followed by counter number Loop count: 5
212 PROGRAMMING IN THE REAL WORLD

Bad programs SEE ALSO

194195 The
Internet
Not all programs are fun games or useful apps. Some
programs are designed to steal your data or damage
202203 Busy
programs
your computer. They will often seem harmless, and
you might not realize that you have been a victim.

Malware
Programs that do things without your knowledge or
permission are known as malware. Unauthorized
access to a computer is a crime, but there are many
different types of programs that still try to sneak on
to your computer.

Worm
A worm is a type of malware that crawls around a
network from computer to computer. Worms can clog
up networks, slowing them down the first worm
brought the Internet to a virtual standstill in 1988. Virus
Just like a virus in the human body,
this malware copies itself over and over
again. They are usually spread through
emails, USB sticks, or other methods of
transferring files between computers.

REAL WORLD
Famous worm
On 5 May 2000, Internet users in the Philippines
received emails with the subject ILOVEYOU. An
attachment appeared to be a love letter, but was
actually a piece of malware that corrupted files.

ILOVEYOU
The worm quickly spread
Trojan to computers around the
Malware that pretends to be a harmless program is world. It is estimated to
known as a trojan. The word comes from an ancient have cost more than $20
war, in which the Greeks gifted the Trojans a giant billion to fix the damage
wooden horse. But the horse had soldiers hidden it caused.
inside, which helped the Greeks win the war.
BAD PROGRAMS 213
What malware does
Viruses, worms, and trojans are all types
of malware that want to get into your
machine, but what do they do once they
have infected their target? They might
delete or corrupt files, steal passwords,
or seek to control your machine for
some larger purpose as part of an
organized zombie botnet.

Zombie botnets
Botnets are collections of infected
computers that can be used to send
spam emails, or flood a target website
with traffic to bring it crashing down.

Good software to the rescue LINGO


Thankfully, people arent defenceless in the fight against Hackers
malware. Anti-malware software has become big
business, with many providers competing to provide Coders that study and write
the best protection. Two well-known examples are malware are known as hackers.
Those who write malware to
firewalls and antivirus programs. commit crimes are known as
black-hat hackers, and those
who write programs to try to
protect against malware are
known as white-hat hackers.

Antivirus programs Firewalls


Antivirus software tries to detect Firewalls aim to prevent malware
malware. It identifies bad and dangerous network traffic
programs by scanning files and from reaching your computer.
comparing their contents with a They scan all incoming data White-hat hacker Black-hat hacker
database of suspicious code. from the Internet.
214 PROGRAMMING IN THE REAL WORLD

Mini computers SEE ALSO

180181 Inside
a computer
Computers dont have to be big or expensive. A whole
range of small and cheap computers are available.
202203 Busy
programs
Because of their small size and cost, these computers
are being used in lots of new and exciting ways.

Raspberry Pi
The Pi is a credit-card-sized computer, created to teach the basics
of how computers work. For its size it is impressively powerful,
with the ability to run similar programs to a modern PC. LED lights show
the Pi is working
Audio output for
headphones or speakers Two USB connectors for
a mouse, a keyboard, or
Video output for any other add-ons
older TVs

Input and output pins


for sensing and control
(good for robots)

Network connection to
Removable memory access the Internet
card stores operating
systems, programs,
and data HDMI video output to
connect to modern TVs
Power connector

Arduino Many input and output


pins make the Arduino Microcontroller a
The Arduino is cheaper than very adaptable single-chip computer
the Pi, but less powerful. It
is often used as a low-cost Reset button
and simple way to build
custom electronic or
robotic machines. Sockets for
connecting the
Arduino to other
USB connector used to electronics
load programs on to the
Arduino from a PC Power connector
MINI COMPUTERS 215
Using mini computers
There are endless useful things a mini computer can do thanks to
its many connection options. Here are just a few suggestions.

Computer Audio output Mobile phones Gadgets


Connect a keyboard, mouse, Connect a set of speakers Connect the computer Connect LED lights and
and monitor for a fully and then send music to to the Internet using a other simple electronics to
working desktop computer. them over the network. mobile phone. make robots or gadgets.

Television Camera USB SD card


Connect a TV and use it as a Connect a basic camera Connect a USB hard drive Change the programs on
media centre to show all of to your mini computer to and share your files over your mini computer just
your movies and pictures. create your own webcam. your network. by swapping SD cards.

REAL WORLD
Home-built robots
With their small size, cost, and Robotic spider controlled
by the Arduino
weight, mini computers are
being used more and more to
build different types of robot.
For example:

Weather balloons that record


weather conditions in the atmosphere.
Mini vehicles that can sense
obstacles using sonar like a bat.
Robotic arms that pick up and
move different objects.
216 PROGRAMMING IN THE REAL WORLD

Become a master SEE ALSO

176177 What next?


214215 Mini
programmer computers

The secret to becoming a master programmer is to


have fun. As long as youre enjoying yourself, theres
no limit to how skilled you can become at coding,
whether as a hobby or a lifelong career.

Ways to become a better programmer


Like skiing, learning the piano, or playing tennis, coding is a
skill that youll get better and better at over time. It can take Code a lot
years to become a true expert, but if youre having fun on People say practice makes
perfect and its true. The
the way, it will feel like an effortless journey. Here are a few more code you write, the
tips to help you become a master programmer. better youll get. Keep going
and youll soon be an expert.

Be nosy
Read websites and books about
programming and try out other
peoples code. Youll pick up
expert tips and tricks that might
have taken you years to figure
out on your own.
Steal ideas
If you come across a great program, think how you
might code it yourself. Look for clever ideas to use
in your own code. All the best programmers copy
each others ideas and try to improve them.

Train your brain


Your brain is like a muscle
Show a friend if you exercise it, it will
Teach someone else to get stronger. Do things
code and youll learn a lot that help you think like a
yourself. Explaining how programmer. Solve logic
coding works is a great puzzles and brainteasers,
way of making sure you take up Sudoku, and work
understand it thoroughly. on your maths.
BECOME A MASTER PROGRAMMER 217
Test your code
Test your code by entering crazy
values to see what happens. See
how well it stands up to errors.
Scala Pascal SQL
Try rewriting it to improve it or
try rewriting someone elses Ruby on rails C++
youll learn all their secret tricks.

Build a robot army


You can connect your computer
to all sorts of programmable
devices, from flashing LED Learn new languages
lights to robots. Its fun and
Become multilingual. Every new programming
youll learn lots as you figure
language you learn will teach you more about the
out how to conquer the world.
ones you already know (or thought you knew). You
can download free versions of most languages.

Pull a computer to bits


Take an old computer apart Win a prize
to see how it works (ask When your skills develop,
permission first!). There why not enter an online
arent many components, coding contest? There are lots
so it wont take long to to choose from at all different
figure out what all the bits levels. The toughest are
are. Best of all, build your worldwide competitions like
own computer and then Googles Code Jam, but there
run your code on it. are easier challenges too.

REMEMBER
Have fun!
Coding is a lot like trying to solve puzzles.
Its challenging and youll often get stuck.
Sometimes its frustrating. But youll also
have breakthroughs when you solve a
problem and feel a buzz of excitement
at seeing your code work. The best way to
keeping coding fun is to take on challenges
that suit you. If a project is too easy youll
get bored; if its too hard youll lose interest.
Never be afraid to fiddle, tinker, experiment,
and break the rules let your curiosity lead
you. But most of all, remember to have fun!
218 REFERENCE

Glossary
algorithm call event GUI
A set of step-by-step To use a function in a Something a computer The GUI, or graphical user
instructions followed program. program can react to, such interface, is the name for
when performing a as a key being pressed or the buttons and windows
task: for example, by a compression the mouse being clicked. that make up the part of
computer program. A way of making data the program you can see
smaller so that it takes execute and interact with.
ASCII up less storage space. See run.
American Standard hacker
Code for Information computer network file A person who breaks
Interchange a code used A way to link two or more A collection of data stored into a computer system.
for storing text characters computers together. with a name. White hat hackers work
as binary code. for computer security
container float companies and look for
binary code A part of a program A number with a decimal problems in order to fix
A way of writing numbers that can be used to point in it. them. Black hat hackers
and data that only uses store a number of break into computer
0s and 1s. other data items. function systems to cause harm or
A piece of code that does to make profit from them.
bit data part of a larger task.
Information, such as hardware
A binary digit 0 or 1.
The smallest unit of text, symbols, and gate The physical parts of a
digital information. numerical values. Used by computers to computer that you can
make decisions. Gates see or touch, such as wires,
Boolean expression debug use one or more input the keyboard, and the
To look for and correct signals to produce an display screen.
A question that has only
two possible answers, such errors in a program. output signal, based on
a rule. For example, AND hexadecimal
as true and false.
debugger gates produce a positive A number system based on
branch A program that checks output only when both 16, where the numbers 10
other programs for errors input signals are positive. to 15 are represented by
A point in a program where
in their code. Other gates include OR the letters A to F.
two different options are
available to choose from. and NOT.
directory index number
bug A place to store files to GPU A number given to an
keep them organized. A graphics processing item in a list. In Python,
An error in a programs
unit (GPU) allows images the index number of the
code that makes it behave
encryption to be displayed on a first item will be 0, the
in an unexpected way.
computer screen. second item 1, and so on.
A way of encoding data so
byte that only certain people
can read or access it. graphics input
A unit of digital
information that Visual elements on a Data that is entered into
contains eight bits. screen that are not text, a computer: for example,
such as pictures, icons, from a microphone,
and symbols. keyboard, or mouse.
GLOSSARY 219

integer memory programming language statement


Any number that does not A computer chip inside a A language that is used The smallest complete
contain a decimal point computer that stores data. to give instructions to instruction a programming
and is not written as a a computer. language can be broken
fraction (a whole number). module down into.
A section of code that random
interface performs a single part A function in a string
The means by which of an overall program. computer program that A series of characters.
the user interacts with allows unpredictable Strings can contain
software or hardware. operator outcomes. Useful when numbers, letters, or
A symbol that performs creating games. symbols, such as a colon.
IP address a specific function: for
A series of numbers that example, + (addition) run syntax
makes up a computers or - (subtraction). The command to make The rules that determine
individual address when a program start. how a program must be
it is connected to OS structured in order for it
the Internet. A computers operating server to work properly.
system (OS) provides the A computer that stores files
library basis for other programs accessible via a network. Trojan
A collection of functions to run, and connects A piece of malware that
that can be reused in them to hardware. single-step pretends to be another
other projects. A way of making a piece of software to
output computer program run trick the user.
loop Data that is produced by one step at a time, to
Part of a program that a computer program and check that each step is tuple
repeats itself (to prevent viewed by the user. working properly. A list of items separated by
the need for the same commas and surrounded
piece of code to be typed port socket by brackets.
out multiple times). A series of numbers The combination of an
used by a computer as IP address and a port, Unicode
machine code the address for a which lets programs send A universal code used by
The basic language specific program. data directly to each other computers to represent
understood by computers. over the Internet. thousands of symbols
Programming languages processor and text characters.
must be translated into A type of electronic chip software
machine code before the inside a computer that The programs that run on variable
processor can read them. runs programs. a computer and control A named place where you
how it works. can store information that
malware program can be changed.
Software that is designed A set of instructions that a sprite
to harm or disrupt a computer follows in order A movable object. virus
computer. Malware is short to complete a task. A type of malware that
for malicious software. works by multiplying
itself to spread between
computers.
220 REFERENCE

Index
Page numbers in bold refer bits 183, 189, 218 in strings 114 algorithms 16, 17
to main entries. black-hat hackers 213 Unicode 185 bad programs 21213
blank lines 117 Chef 199 essential 1901
blocks circles, drawing 157, 158 experimenting with 19

A
Ada 18
coloured 31
connecting 18
creating 723
circuits, computer 187, 188, 189
clicking, and events 44, 66, 162
clock pulse 188
how they work 15
uses of 14
computers
addition 52, 102, 112 defining 72, 73 co-ordinates deconstructing 217
Adobe Flash 25 functions of 31 drawing with 158 invention of 201
AI see Artificial Intelligence help with 83 and location 168 main parts of 1801
algorithms 16, 17, 1501, 218 with inputs 73 and movement 166 mini 21415
Allen, Paul 200 programming 22 in Python 157 supercomputers 203
ALU see arithmetic logic unit types of 31 in Scratch 567 console games 198
American Standard Code for blocks palette 27, 31, 32, 35, 38, COBOL 199 consoles 14, 204
Information Interchange see 50 code windows 92, 93, 1067 containers 134, 218
ASCII bomb disposal 203 errors in 94 continue keyword 127
and block/operator 63, 103, Boole, George 186 coders 14, 15 Control blocks 31, 65, 68
118, 119 Boolean expressions 62, 63, 64, becoming a coder 1819 control unit 180
AND gate 186 65, 111, 11819, 120, 218 becoming a master controls, game 174, 205
Android operating system 198, botnets, zombie 213 programmer 21617 costumes 401
207 brackets famous 2001 and movement 23, 40, 41
anti-malware software 213 errors 94 and games 204 random 61
antivirus programs 213 in lists 128, 129 think like a computer 1617 Roll the dice project 601
apostrophes 115 in tuples 134 coding and speech bubbles 41
Apple Mac using 112, 119 clear 143 switching 34, 40, 41
file management 193 brain, training 216 computer programs 1415 cryptography 202
operating system 190, 207 branches/branching 65, 99, 100, reading 176, 216 CSS (Cascading Style Sheets) 208
programming languages 198 1201, 218 what is coding? 1419 cursor tools 26
Python 3 on 88, 90 breaks, inserting in loops 1267 coding clubs 82, 207
Scratch on 25 Brin, Sergei 201 coding contests 217
apps, making 2067
Arduino 214, 215
arithmetic logic unit (ALU) 181
broadcast blocks 701, 77
browser windows 210, 211
Bubble blaster project 16475
colours
adding to shapes 159
changing 60, 160
D
data 218
arrow keys 163, 166 bugs 1489, 177, 207, 218 mixing 156 and functions 131
Artificial Intelligence (AI) 203, buttons in Python 1567 input 180
205 creating 152, 1545 selecting 156 output 181
ASCII 184, 218 labelling 155 commands secret 202
audio output 181, 215 linking to events 162 Python and Scratch sending via Internet 194, 195
bytes (B) 183, 192, 218 compared 1025 theft 213
commas Data blocks 31, 50

B
Babbage, Charles 200 C
in lists 128
in tuples 134
comments, adding 143
data storage
in files 1923
memory 180, 181, 188, 189
backgrounds/backdrop 23, 26 C 18, 198 comparison blocks/operators in variables 50
changes to 45 C++ 198 623, 11819 data types
selecting from library 33, 74 calculations 180, 181, 189 compass 39 converting 111
switching 41 in Python 112 compilers 191 mixed 111
backpack, Scratch 82 in Scratch 523 components, computer 181, 217 spotting 111
banking 199, 202 supercomputers 203 compression 202, 218 tuples and dictionaries 1345
bases 1823 calling functions 104, 139, 218 computer circuits 187, 188, 189 debugging 1489, 174, 177, 207,
BASIC 199 cameras 215 computer games see games 218
battery, computer 181 canvas 157, 158 computer languages see decimal system 182
beats 59 cars 14 programming languages decisions
Berners-Lee, Tim 201 characters computer programmers see and branches 645
binary code/signals 15, 1823, between outputs 117 coders flowcharts 141
184, 185, 195, 218 numbering in strings 115 computer programs 1415 logic gates 1867
INDEX 221

dice simulator 155


dictionaries 135
direction 39
floats 110, 218
flowcharts 141, 146
folders 193
H
hackers 213, 218
connection to 19
programming for 2089
Internet browsers 209
directories 193, 218 for loops 122, 124 hardware 15, 181, 191, 218 Internet Protocol 194
directory trees 193 forever block 23, 31, 32, 33, 38, programming 198 interpreters 191
division 52, 102, 112 39, 46, 47, 125 hexadecimal 156, 183, 185, 218 inverters 186
domain names 194 forever loop 46, 47, 69, 103, 125, high-level languages 191 iOS devices 198
drawing 133 Hopper, Grace 200 IP addresses 194, 195, 219
on a canvas 157, 165 Fortran 199 HTML (HyperText Markup
with co-ordinates 158 full stops 117 Language) 208, 209, 210
pens and turtles 489, 122,
152
functions 72, 1301, 1323, 218
calling 104, 130, 139 J
Drawing machine project 1407
drums 59
getting data back from 131
making 130
passing data to 131
I
IDLE
Java 18, 198
JavaScript 18, 198, 208, 209
using 21011
using and naming 143 code and shell windows 1067 JPEGs 193

E and variables 1389 colour codes 107


and errors 148
educational apps 206
electrical signals 195
elif command 121 G
how it works 93
and installation of Python
89, 90, 91
K
keyboard
else-if command see elif gadgets 215 what is IDLE? 88 events 44, 66, 162, 163, 211
command Game Boy 201 working in 923, 209 input function 116, 162, 163,
emails game engines 205 if block/command 64, 120 180
spam 213 game logic 205 if-elif-else command 121 keys, dictionaries 135
websites 198, 208 games 14, 2045 if-else command 120 kilobytes (KB) 183, 192
encryption 202, 218 customizing 81 if-then block/command 64, 66,
end label 117 improving 174 67, 103
errors 945
finding and fixing 1489
Escape the dragon! project 327
in JavaScript 209
making with Python 177
for mobile devices 206
if-then-else block/command
64, 65, 76, 103
in operator 119
L
laptops 181
event handlers 166, 211 online 195 indents 98 latch circuits 189
events 211, 218 random numbers in 53 index numbers 115, 128, 218 letter commands 141
reacting to 1623 see also projects infinite loops 125 level designers 204
Events blocks 31, 32, 445 Gates, Bill 200 input libraries 219
EXCLUSIVE OR gate 187 gates, logic 1867, 218 blocks with 73 building your own 176
experimenting Ghost game project 969 devices 162, 180, 189 help and documentation
with coding 19 gigabytes (GB) 189, 192 logic gates 1867 153
with Python 1767 global variables 138, 139 program 31, 100, 101, 106, importing 153
with Scratch 823 GNU/Linux operating system 201 116, 180, 218 light, data transmission as
Google 86, 201, 217 input() function 101, 130 pulses of 195
GPU 218 insertion sort 150 Linux 88, 201

F
Facebook 201
graphic designers 204
graphical user interface
see GUI
installation
Python 3 8891
Scratch 245
lists
adding/deleting items 55, 105,
128, 129, 169
false see true or false graphics 218 instruments, musical 59 combining 129
fibre optic cables 195 changing 1601 integers 110, 219 commands 105
file browsers 190 colour and co-ordinates 1567 Integrated DeveLopment copying 137
files 218 effects 43, 152, 153 Environment see IDLE creating 55, 105
compressing 202 games 205 interface in loops 129
corruption 213 making shapes 1589 GUI 1545 playing with 55
managing 193 graphics processing unit Scratch 267, 49 putting tuples in 134
properties 192 see GPU user 140, 1467, 219 in Python 1289, 1323
sizes 192 grid, x and y 56, 158 Internet 1945 in Scratch 545
storing data in 1923 GUI 1549, 218 connecting to other using 55, 129, 167
firewalls 213 computers via 152 in variables 1367
222 REFERENCE

local variables 138, 139


logic circuits 187, 188, 189
logic errors 148
mini computers 21415
Miyamoto, Shigeru 201
mobile phones 14, 204, 215
O
Objective-C 198
from the past 199
and interpreters 191
learning new 217
logic gates 1867, 188, 189 apps 2067 Ook 199 popular 198
logical operators 11819 modules 219 open source movement 201 Python and Scratch commands
LOGO 49 importing 153 operating systems (OS) 25, compared 1025
Looks blocks 31, 40, 423 Standard Library 152 8891, 92, 1901, 207, 219 text-based 86
loop blocks 46 Monkey mayhem project 7481 operators 219 weird 199
loops 100, 103, 219 motherboard 181 blocks 31, 52, 53 programs see computer
complex 689 Motion blocks 31, 32, 33, 34, 36, logical 11819 programs
with conditions 104 389, 57, 75 or block/operator 63, 103, 118 projects 11, 23
escaping 1267 motion detector, webcam 45 OR gate 187 Bubble blaster 16475
for 122, 124 mouse OS see operating systems Drawing machine 1407
forever 46, 47, 69, 103, 125 control 25 output Escape the dragon! 327
in JavaScript 211 events 162, 211 and branching 1201 Ghost game 969
lists in 129 input function 180, 189 devices 180, 181, 189 Monkey mayhem 7481
main 99, 168, 169, 171 mouse-pointer logic gates 1867 remixing existing 82
nested 69, 123 co-ordinates 56 program 31, 92, 100, 101, Roll the dice 601
in Python 1227, 133 following 69 106, 108, 11617, 1801 Silly sentences 1323
in Scratch 467, 689 pointing towards 32, 33, 36 PS4 204
simple 467 movement pseudocode 143, 144, 147
skipping 124, 127
stopping 125
variable 123
co-ordinates 57
and costumes 23, 40, 41
with keys 66, 163, 166
P
packets 194, 195
Pygame 153, 177
Python 19, 83, 84177
algorithms 1501
while 1245 and Sensing blocks 66, 67 Page, Larry 201 ASCII in 184
Lovelace, Ada 200 sprites 22, 23, 389, 57 painting area 60, 61 Booleans 111
low-level languages 191 Mpegs 193 passwords, theft of 213 branching 1201
multiplication 52, 102, 112 paths 193 Bubble blaster project 16475
music Pen blocks 31, 489, 87, 107 bugs and debugging 1489

M
Mac see Apple Mac
adding 37, 79
files 192, 193, 202
making your own 59
Peters, Tim 151
photograph files 193
Pi 214
code structure 989
colour and co-ordinates 1567
colour codes 107
Mac OS X 190 playing 59 pictures, files 192, 193 different versions of 177
machine code 188, 191, 219 tempo 59 Piet 199 Drawing machine project
Malbolge 199 mutable/immutable objects 129 pilots 205 1407
malware 21213, 219 Pixar 86 errors 945
Math module 152 pixels 156 escaping loops 1267
maths
in Python 102, 11213
in Scratch 523, 102
N
name errors 95
players name 50
PNGs 193
pop-up boxes/windows 146,
functions 1301, 1323
Ghost game project 969
harder commands 1045
MATLAB 18 NASA 86 209, 210 input and output 11617
medicine 203 negative numbers 56, 57 ports 195, 219 installing 8891
megabytes (MB) 183, 189, 192 nested loops 47, 69, 123 position introducing IDLE 923
memory 1801, 1889, 190, network adaptors 181, 195 co-ordinates 567 libraries 1523
192, 219 networks, computer 152, random 43, 57 lists 1289, 1323
messages 194, 218 print() function 87, 101, 102, lists in variables 1367
reacting to 70 nibbles 183 108, 109, 116, 117, 130 loops in 1227, 133
sending and receiving 70 NOT gate 186 printers 181 making decisions 11819
microphones, and events 44, 45 notes, musical 59 processors 100, 101, 1801, making games with 177
Microsoft 200 numbers 1889, 190, 203, 219 making shapes 1589
Microsoft Windows binary and bases 1823 program flow 1001 making windows 1545
file management 193 comparing 62, 118 programming languages 15, 18, maths in 11213
operating system 190, 207 data types in Python 110 19, 22, 49, 83, 1989, 219 numbers in 110
Python 3 on 88, 89 random 53, 104, 113, 152, 155 conversion into machine code print in 87
Scratch on 25 188 program flow 1001
millennium bug 199 first 200 reacting to events 1623
INDEX 223

saving work 88 home-built 215 simple commands 1023 sound designers 204
and Scratch 87, 101, 1025, Roll the dice project 601 simple loops 467 sound library 79
124, 125 rotation software 24 sounds 22, 23
scripts 101 styles 38 special effects 423 adding to program 589, 79
shell and code windows 92, tools 61 sprites 289 detectors 45
93, 1067 routers 194, 195 strings and lists 545 in games 205
shortcuts 171 Ruby 18 true or false 623 playing 58
Silly sentences project 1323 running typical programs 23 selecting from library 37, 58
simple commands 1023 programs 23, 102, 106 understanding 22 volume control 58
sorting in 151 scripts 30 variables 501, 108 spam 213
strings in 110, 11415, 117 runtime errors 148 versions of 25 speakers 181
tuples and dictionaries 1345 and webcams 45 speech bubbles 22, 28, 87, 101
turtle graphics 87 website 24, 82 adding 41, 161
conversations 71
types of data 11011
Unicode in 185
variables 99, 101, 1089, 116
S
saving your work 11
what is Scratch? 18, 223
screens 181
scripts 22, 23
speed, setting 51, 77
split() function 144
variables and functions 1389 in Python 88, 93, 106, 107 building 27 sprites 22, 23, 289, 39, 219
website 89 in Scratch 24, 25, 33 and coloured blocks 301 adding graphic effects 43
what is Python? 19, 867 saying things (in Python) 161 flow of 30 adding more 767, 80
what next? 1767 score 50, 79, 99, 1723 pausing 69 adding sounds 589
while loops 1245 scoreboards 172 in Python 101 changing size 43
Scratch 2083 repeating 68 changing time or speed 35, 51
account 24 running 30 co-ordinates 567
collisions 67
Q
questions
adding sounds 589, 79
backpack 82
blocks 301, 723
in Scratch 301, 101
and sprites 28
stopping 30, 68
communication between
701
asking 54 co-ordinates 567 testing 30 controlling 31, 66
combining 63 complex loops 689 scripts area 27 copying or deleting 29
true or false 623 costumes 401 scripts tab 27 creating and editing 29, 34, 36
quote marks creating blocks 723 scriptwriters 204 designing your own 39
errors 94 decisions and branches 645 SD cards 215 direction 39
in lists 128 Escape the dragon! project secret data 202 and events 445
in strings 110, 114, 116 327 selection sort 151 hiding and showing 42
events 445 Sensing blocks 31, 34, 36, 51, in the interface 28
experimenting with 823 65, 667, 75 movement 22, 23, 389, 57,
667
R
radio waves 195
harder commands 1045
help menu 83
hide and seek 423
separators 117
servers 219
shapes
naming 29
pen tools 489
RAM 189 installing and launching 245 adding colour 159 renaming 29
randint() function 98, 99, 101, interface 267, 49 drawing 140 rotation styles 38
104, 113, 130, 153, 155 lists 55 making 1589 and scripts 28
Random Access Memory make some noise 589 moving 160 selecting from library 34, 36,
see RAM making things move 389 naming 160 39, 75, 76
Random module 152, 153, 157 maths in 523 shell windows 92, 93, 1067, 116 and Sensing blocks 667
random numbers 53, 104, 113, menu and tools 26 errors in 95 sprite list 27
152, 155 and microphones 45 silicon chips 188, 189 turtle graphics 49
random positions 43, 57 Monkey mayhem project Silly sentences project 1323 and variables 35, 501
Raspberry Pi 25, 214 7481 skipping, in loops 127 what they can do 28
reacting to events 1623 pens and turtles 489, 87 slicing 115 square roots 53
readable code 133 and Python 87, 1025, 124, 125 smartphones 206 stage 23, 25, 27
remainders 53 and Pythons Ghost game 101 social apps 206 Standard Library modules 152
repeat loops 46, 122, 211 Roll the dice project 601 Socket module 152 stop button 30
repeat until block 68, 76, 77, scripts and coloured blocks sockets 195, 219 stopping programs 102
78, 124 301, 101 software 14, 15, 219 strategy games 205
rewriting code 217 sending messages 701 sorting algorithms 1501 strings 219
robots 16, 203, 217 sensing and detecting 667 Sound blocks 31, 589 adding 114
224 REFERENCE

assigning 108
comparing 63, 118, 119
creating 114
turtle graphics 49, 87, 105, 107
commands 105, 145
Drawing machine project
read-only 51
results in 52
in Scratch 501, 108
X
x and y co-ordinates 56, 57, 157,
joining 105 1407 splitting tuples into 134 158, 166, 168
length of 114 and loops 122 strings in 114 Xbox One 204
operators 119 Turtle module 152, 176 using 51, 109
in Python 110, 11415, 117 video files 192, 193
in Scratch 545
separating 117
subprograms see functions U
video games 2045
writing 153
viruses 21213, 219
Y
Yokoi, Gunpei 201
subtraction 52, 102, 112 Ubuntu visual output 181
supercomputers 203 file management 193 volume control 58
surgeons 205
symbols, choice of 143
syntax 219
Python 3 on 88, 91
Scratch on 25
Unicode 185, 219
von Neumann, John 180
Z
zombie botnets 213
errors 94, 148 upper/lower case 94
USBs 215
user interface 140, 1467, 219
W
washing machines 14
Zuckerberg, Mark 201

T watches 206
wearable technology 206
tablets 25, 206
tabs 26, 27
teleporting 43
V
values
weather forecasting 199, 203,
206, 215
web browsers 86, 195, 198
television 215 assigning to variables 108, web servers 198
tempo 59 109, 113, 118, 136 webcams, and events 44, 45
terabytes (TB) 192 changing 136 websites
testers, game 204 in dictionaries 135 construction 2089
text editors 88 and functions 131 email 198, 208
text files 193 variables 35, 219 interactive 198, 208, 210, 211
text messages 14 assigning a value to 108, 109, Python 89
text-based programming 113, 118, 136 Scratch 24, 82
languages 86 changing contents of 109 while loops 1245
time limit 1723 comparing 62, 63, 118 white-hat hackers 213
Time module 152 creating 50, 54, 77, 102, 108 Wikipedia 201
Tkinter module 152, 1545, 156, deleting 51 Windows see Microsoft Windows
157, 158, 159, 162, 165, 176 and functions 1389 windows
transistors 188 global 138, 139 code and shell 92, 93, 1067
travel apps 206 lists in 1367 making 152, 1545, 165
Trojans 212, 213, 219 local 138, 139 word processing 86
true or false 623, 64, 111, loop variables 123 words, comparing 63
11821, 125 naming 50, 109, 143 World Wide Web 201
tuples 134, 219 in Python 99, 101, 1089, 116, worms 212, 213
Turing, Alan 200 1389

Acknowledgements
DORLING KINDERSLEY would like to thank: Vicky Short, Mandy Earey, Scratch is developed by the Lifelong Kindergarten Group at MIT
Sandra Perry, and Tannishtha Chakraborty for their design assistance; Media Lab. See http://scratch.mit.edu
Olivia Stanford for her editorial assistance; Caroline Hunt for
proofreading; Helen Peters for the index; and Adam Brackenbury for Python is copyright 2001-2013 Python Software Foundation; All
creative technical support. Rights Reserved.

DORLING KINDERSLEY INDIA would like to thank: Kanika Mittal for


design assistance; Pawan Kumar for pre-production assistance; and
Saloni Singh for editorial management of the jackets team.

Você também pode gostar