0% found this document useful (0 votes)
25 views18 pages

Public

This document is the introduction and first chapter of 'Python Building Big Apps Level 3' by Chris Roffey, aimed at coders with some prior programming experience. It covers the basics of object-oriented programming and guides readers through creating a simple application called 'Guess My Password', revising key programming concepts such as variables, functions, and loops. The book provides resources for further learning, including downloadable code files and challenges to enhance coding skills.

Uploaded by

M Z
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views18 pages

Public

This document is the introduction and first chapter of 'Python Building Big Apps Level 3' by Chris Roffey, aimed at coders with some prior programming experience. It covers the basics of object-oriented programming and guides readers through creating a simple application called 'Guess My Password', revising key programming concepts such as variables, functions, and loops. The book provides resources for further learning, including downloadable code files and challenges to enhance coding skills.

Uploaded by

M Z
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

9781107666870 Roffey: Coding Club Python Building Big Apps Level 3 Cover.

C M Y K

Python
Building
BIG Apps
Cod
i
b

level 3
Clu ng

Chris Roffey
Cod
i
Clu ng
b

level 3
Chris Roffey
cambridge university press
Cambridge, New York, Melbourne, Madrid, Cape Town,
Singapore, São Paulo, Delhi, Mexico City

Cambridge University Press


The Edinburgh Building, Cambridge CB2 8RU, UK

www.cambridge.org
Information on this title: www.cambridge.org/9781107666870

© Cambridge University Press 2013

This publication is in copyright. Subject to statutory exception


and to the provisions of relevant collective licensing agreements,
no reproduction of any part may take place without the written
permission of Cambridge University Press.

First published 2013

Printed in Poland by Opolgraf

A catalogue record for this publication is available from the British Library

ISBN 978-1-107-66687-0 Paperback

Cambridge University Press has no responsibility for the persistence or


accuracy of URLs for external or third-party internet websites referred to in
this publication, and does not guarantee that any content on such websites is,
or will remain, accurate or appropriate.
Contents
Introduction 4

Chapter 1: Can you guess my password? 7

Chapter 2: Objects, classes and factories 17

The MyPong Project 32

Chapter 3: Creating the Table 34

Chapter 4: Making the Ball 51

Chapter 5: Building the Bats 69

Chapter 6: The rules and scoring 91

Bonus Chapter: Two more games 106

Taking things further 120

Appendix: Some key bits of information 123

Glossary and index 126

Quick Quiz answers 131

Acknowledgements 132
Contents 3
Introduction
Who is this book for?
This book is the Level 3 core book in the Coding Club series. Before reading this, you should
have either read Coding Club, Python: Next Steps or have become familiar with Python 3 and
learned about variables, while loops, lists and tuples. This book is aimed at coders with a
little bit of previous programming experience.

Why should you choose this book?


Building larger programs and applications can seem daunting. As well as sorting out the
normal details and algorithms, the big picture has to be maintained. This book helps you to
see your way through the big picture – it shows you how to break your applications up into
manageable chunks that are logical, and even better, reusable. To do this you are given an
introduction to a style of programming called object oriented programming (OOP). This is
a great way to program but might seem a little more complicated at first than the way you
have learned to code in the level 1 and 2 books.

Introduction 4
At this stage in your coding it is important that you are introduced to classes and objects.
This is because you will certainly want to use other people’s classes, and to do this effectively
a little understanding goes a long way. What is special about this book is how the
explanations are rooted in the real world and use analogies that you will understand. The
code is also built so that it mirrors real objects whenever possible. This is so that when you
go on to write your own applications you will be able to imagine how to convert real objects
into coded objects.

What you will need


Any type of computer can run Python 3. If yours does not already have it installed, there is a
section on the companion website (www.codingclub.co.uk) that guides you through installing
IDLE and Python 3. This only takes about 5 minutes, and is all you require to get started.

So that you do not have to do too much typing and do not get lost in the bigger projects,
there are start files and, if you need them, finished files for all the projects in the book in one
easily downloadable zip file. The website also has answers to the puzzles and challenges to
help you if you get stuck.

How to use this book


The ideal way to use this book is to read everything carefully and build all the main projects
in order. At the end of each chapter there are further ideas, and challenges that you can
think of as ‘mini quests’. Some readers will want to work through them all so that they
understand everything all the time. Some of you will probably prefer to rush through and get
to the end. Which approach is best? The one you are most comfortable with. However, if you
are being guided by a teacher, you should trust their judgement so that they can help you in
the best possible way.
Introduction 5
There are four ways in which this book tries to help you to learn:

1 Typing out the code – this is important as it encourages you to work through the code a
line at a time (like computers do) and will help you to remember the details in the future.
2 Finding and fixing errors – error messages in Python give you some clues as to what
has gone wrong. Solving these problems yourself will help you to become a better
programmer. To avoid feeling bored and frustrated though, the code can be downloaded
from the companion website www.codingclub.co.uk
3 Experimenting – feel free to experiment with the code you write. See what else you can
make it do. If you try all of the challenges, puzzles and ideas, and generally play with the
code, this will help you learn how to write code like a pro.
4 Finally, this book will not only provide the code to build some pretty cool, short
projects – it will also teach you how the programs were designed. You can then use the
same methods to design your own applications.

A word of warning
You may be tempted to simply get the code off the website instead of typing it yourself. If you
do, you will probably find that you cannot remember how to write code so easily later. In
this book you will only be asked to type small chunks of code at a time – remember that this
will help you understand every detail of each of your programs.

Introduction 6
Chapter 1
Can you guess my password?
This book assumes that you have read Coding Club: Python Basics. If you have not, you
should at least understand what variables and functions are and know how to use IDLE in
both interactive mode and script mode. In this first chapter you will recall some of this by
making a very simple application called ‘Guess My Password’. You will then have revised:

• variables

• if, elif and else

• functions

• while loops

• modules

• using IDLE’s script mode.

Chapter 1: Can you guess my password? 7


Guess My Password
The game is going to start by asking the player to guess my password. The app then waits for
the player’s input, which is stored in a variable. Finally, the player’s input will be compared
with the computer’s own secret password. If the guess is correct the player is congratulated, if
not, a random message is supplied and then the player is asked to try again.

As in the previous Coding Club books, you will use IDLE, an example of an IDE. You can start by
opening IDLE and then choosing New Window from the File menu. This gets you into IDLE’s script
mode. It is a good idea to now re-arrange the windows so that the interactive mode console and
new window are next to each other and both can be seen at the same time (Figure 1.1).

Python 3.1.3 (r313:86834, Nov 28 2010, 10:01:07) # GuessMyPassword.py is a quick revision application.
[GCC 4.4.5] on linux2
Type "copyright", "credits" or "license()" for more information. import random
==== No Subprocess ====
>>> # Initialise variables:
Hello. response1 = "I am afraid not. Please try again."
response2 = "That is a good password but not my password. Keep guessing."
See if you can guess my password? Abracadabra response3 = "That is not my password. It really is easy to guess my password."
I am afraid not. Please try again. response4 = "Well done! You must work for MI6. Give my regards to James Bond."
MY_PASSWORD = "my password"
What is your next guess?
# Function to find out if the user has guessed correctly:
def is_correct(guess, password):
if guess == password:
guess_correct = True
else:

interactive mode script mode


Figure 1.1 A simple IDLE arrangement.
Chapter 1: Can you guess my password? 8
Copy the code from Code Box 1.1 and save the file to your Python Code folder as
GuessMyPassword.py. You may not have a Python Code folder so you might need to create
one first. Choose a sensible place to save this, such as your Documents folder.

Code Box 1.1


# GuessMyPassword.py is a quick revision application.

import random

# Initialise variables:
response1 = "I am afraid not. Please try again."
response2 = "That is a good password but not my password. Keep guessing."
response3 = "That is not my password. It really is easy to guess my password."
response4 = "Well done! You must work for MI6. Give my regards to James Bond."
MY_PASSWORD = "my password"

Analysis of Code Box 1.1


Comments

Comments appear in red in IDLE; these are aimed at humans only and begin with the
hash symbol #.

Chapter 1: Can you guess my password? 9


Modules

A module is a collection of useful functions and data in one place. Sometimes we will want
to write our own. Modules have to be imported before they can be used. In this app the
random module is imported so that it can be used later in the program. Variable value
(a string)
n
Variables

i
ase t r y a ga
These are labels we make to allow us to access data. We create a variable by giving it a
name and then assign data to it using the equals operator. Good programmers begin
their variable names with lowercase letters and make them descriptive. The name for
a constant is all in capitals.

Ple
You have just created five string type variables and labeled them response1,
response2, response3, response4 and MY_PASSWORD. response1
MY_PASSWORD is a constant – it does not change.

Functions
Variable name
Figure 1.2 A variable called response1
storing a string.
A function is a piece of code that can be used again and again. You can already
use any of the many functions that are built into Python. You can also make your own.
Functions are created with the def keyword. Here is the code for a function that finds out if
the guess is the correct password.

Chapter 1: Can you guess my password? 10


Code Box 1.2 Have you saved yet?
# Function to find out if the user has guessed correctly: You should try and
remember to do so after
def is_correct(guess, password):
entering each Code Box.
if guess == password:
guess_correct = True
else:
guess_correct = False
return guess_correct

Add the code from Code Box 1.2 to your GuessMyPassword.py file. The is_correct()
function has to be passed an argument called guess and another argument called
password. The function then compares the two strings. If they are the same, the function
sets the guess_correct variable to True, if not it sets it to False. Finally the function
will return True or False – depending on the state the guess_correct variable is in.
A variable that only stores the values True or False is called a boolean variable.

User input
To get user input from the keyboard we use Python’s input() function which waits for the
user to type some text and press the enter key. If we want to be able to access the input later
we need to assign it to a variable like this:

user_input = input()

Chapter 1: Can you guess my password? 11


The function can also take an argument, usually a string, which can act as an output
message. This appears on the screen and then the program waits for the user’s input:

user_input = input("Please type some input: ")

Now we are able to access the input, for example, in a print function:

print(user_input)
This program contains
one of those jokes that
We use the input() function three times in this program, in two different ways. are far more fun to tell
Now it is time to finish the program by adding the code from Code Box 1.3 to your than to hear.

GuessMyPassword.py file. As you type, think carefully about what each line does.

Code Box 1.3


# Start the game:
print("Hello.\n")
users_guess = input("See if you can guess my password? ")

# Use our function:


true_or_false = is_correct(users_guess,MY_PASSWORD)

# Run the game until the user is correct:


while true_or_false == False:
computer_response = random.randint(1, 3)

Chapter 1: Can you guess my password? 12


if computer_response == 1:
print(response1)
elif computer_response == 2:
print(response2)
else:
print(response3)

# Collect the user's next guess:


users_guess = input("\nWhat is your next guess? ")

# Use our function again:


true_or_false = is_correct(users_guess, MY_PASSWORD)

# End the game:


print(response4)
input("\n\n\nPress RETURN to exit.")

Analysis of Code Box 1.3


Hopefully you can remember how a while loop works, as described in Coding Club: Python Basics.
If not, do not worry as it is fairly obvious what is going on. The code that is indented after

while true_or_false == False:

forms a block of code. This code keeps running until the true_or_false variable is True.

Chapter 1: Can you guess my password? 13


random.randint(1, 3) generates a random number between one and three. The
randint() function is from the random library so it is necessary to use the dot operator to
tell our application where to find it.

Many computer languages use the structure:

if: [do something]


elseif: [do something else]
else: [do something different again]

elif is Python’s version of elseif. You can have as many elif clauses as you wish but
they must be preceded by an if clause and must end with an else clause.

Delving Deeper
Writing less code
Coders love finding ways of performing the same task with less code. Hopefully you have found the function
in Code Box 1.2 easy to understand and follow. It is logical. There is, however, a lot of unnecessary code in it
because we can simply use comparative operators to compare two variables and return True if they are the
same and False if not. Hence the whole function in Code Box 1.2 can be replaced with this:
def is_correct(guess, password):
return guess == password
Try it out yourself and see that it still works.

Chapter 1: Can you guess my password? 14


Chapter summary
In this chapter you have revised:

• variables
• if, elif and else clauses
• functions
• while loops
• modules and used the Python’s random module
• how to use IDLE’s script mode to write and keep your own programs.

As this is a revision chapter, you can now just play with this application if you want. If you
feel you need some practice, try the ideas below.

Idea 1
Change all the variables so they are a little more helpful and give a clue. (Hint: “Read the
question carefully” would be a good clue.)

Chapter 1: Can you guess my password? 15


Idea 2
Make the app a little more useful by enabling the player to respond “yes” to, “Do you give
up?” This will need a separate message (response5 perhaps?) that is triggered after the
player has guessed three times. (Hint: set a counter variable in the while loop.) Finally, if
the player gives up, tell them the password.

An answer and all the source code for this book can be downloaded from the companion I know the password.
website www.codingclub.co.uk. One answer (there are many different ways to solve these
problems) is in the Chapter 1 folder in the Answers file and is called Ch1-Idea2.py.

Chapter 1: Can you guess my password? 16

You might also like