Coding Club Level 3 Python Building Big Apps Roffey C. 2024 Scribd Download
Coding Club Level 3 Python Building Big Apps Roffey C. 2024 Scribd Download
com
https://ebookultra.com/download/coding-club-
level-3-python-building-big-apps-roffey-c/
https://ebookultra.com/download/coding-club-level-1-python-basics-
roffey-c/
ebookultra.com
https://ebookultra.com/download/building-fluency-grade-3-compilation/
ebookultra.com
https://ebookultra.com/download/dead-simple-python-idiomatic-python-
for-the-impatient-programmer-jason-c-mcdonald/
ebookultra.com
Python 3 for Absolute Beginners 1st Edition Tim Hall
https://ebookultra.com/download/python-3-for-absolute-beginners-1st-
edition-tim-hall/
ebookultra.com
https://ebookultra.com/download/c-python-tricks-and-tips-4th-edition/
ebookultra.com
https://ebookultra.com/download/laravel-a-framework-for-building-
modern-php-apps-2nd-ed-edition-stauffer/
ebookultra.com
https://ebookultra.com/download/numerical-methods-in-engineering-with-
python-3-3rd-edition-jaan-kiusalaas/
ebookultra.com
https://ebookultra.com/download/battle-for-big-tree-country-page-
turners-level-11-1st-edition-gregory-strong/
ebookultra.com
Coding Club Level 3 Python Building Big Apps Roffey C.
Digital Instant Download
Author(s): Roffey C.
ISBN(s): 9781107666870, 1107666872
Edition: Spi ed.
File Details: PDF, 3.69 MB
Year: 2013
Language: english
Cod
i
Clu ng
Python b
Building
BIG Apps level 3
Chris Roffey
Cod
i
Clu ng
Python b
Building
BIG Apps level 3
Chris Roffey
cambridge university press
Cambridge, New York, Melbourne, Madrid, Cape Town,
Singapore, São Paulo, Delhi, Mexico City
www.cambridge.org
Information on this title: www.cambridge.org/9781107666870
A catalogue record for this publication is available from the British Library
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.
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.
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.
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
• functions
• while loops
• modules
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:
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"
Comments appear in red in IDLE; these are aimed at humans only and begin with the
hash symbol #.
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.
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()
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.
forms a block of code. This code keeps running until the true_or_false variable is True.
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.
• 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.)
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.
There is far more in this chapter about how to design programs than about actually writing
them. After you have finished working your way through this book, you will hopefully be
starting to think about how to design your own programs rather than just writing the ones
that are suggested. The bonus chapter illustrates how well-designed code can quickly be
adapted to make new applications.
A complex computer program, such as an email application or a video game, can also be
very difficult to build because it is also made of many parts. However, just like the car, large
applications do not have to be built all at once. The latest video games are often made up
of millions of lines of code. If they were built as one program, can you imagine how hard it
would be to find a typing mistake? And believe me, everyone makes typing mistakes. The
way this problem is avoided is by building little bits at a time.
There are several ways to do this. One of these is to use OOP, which builds programs out
of coded objects! The great thing about this is that if you build the objects in the correct
Chapter 2: Objects, classes and factories 18
way, you can make libraries of these objects. These objects can be re-used again in other
applications. You can of course do a lot of this with functions but learning about objects and
classes will help you better understand other people’s code. The popular PyGame library and
tkinter both use classes.
Classes
Our first task is to look at a problem and work out how it can be separated into smaller tasks
and objects. You have just learned that we build libraries of objects. This is not entirely true.
We build libraries of classes. A class is better than an object, because it can act as a factory
for making objects.
Instead of explaining with a complex situation, let’s take something very simple – a cat.
def drink(self):
print("The cat drinks its milk.")
print("The cat takes a nap.")
Remember, this is like a factory. Now, you will learn how to send it orders to build some
objects – in this case, some cats!
Delving Deeper
What is the difference between a method and a function?
A method is just a special function that we make in a class.
Computer scientists might get upset with us calling classes ‘factories’ as this word has another meaning in
advanced OOP. They would prefer us to describe classes as templates or blueprints. You will find it a lot easier to
think of classes as factories though.
If you think of classes as factories, you can understand that by requiring a method to have self as an
argument, you tell the computer that the method will be available to each of the objects made by the factory.
import cat
There are other special modules in the Python library that can be used. You have already
done this once.
Wow, we have made our
very own module.
OK, so it only has one class
Quick Quiz 2.1 in it – but it’s a start.
Can you remember which module we used before?
main.py
So far we cannot do anything with the Cat class. Have you tried to run it? Not a lot happens
does it?
Open a new window in IDLE and type in the code from Code Box 2.2. Then save this new
file as main.py. Notice cat.py is imported at the beginning of the code which gives our
program access to the Cat class. The file that you have just created is where you will start to
run the program, which is why it is called main.py.
This is where we order an object from our cat factory. Computer scientists say: “We have made
an instance of the Cat class.” They might even say that we have instantiated a cat object.
Romeo is the object and it is created by the Cat class (hence the capital letter). The Cat class is in
cat.py so we tell main.py where to look with the dot operator. The dot is used to link the class
with its location. In non-coding language, this line of code translates as:
‘Create an object called Romeo using the cat factory found in the cat.py file.’
Thus we have a cat! And he is called Romeo! All done with one line of code.
If you have not played with Romeo yet, you can do so now! To play with Romeo you simply
save and run main.py. It must be in the same folder as cat.py.
times_tables(12, 12)
This function is from Python Basics and calling it would print out the 12 times table up to
12 × 12 = 144. Objects can do this too. We could supply a name for example:
romeo = cat.Cat("Romeo")
Our Cat class will now need to be re-written though. This is not done in quite the same way
as it is in a function. It is done in a special method called a constructor.
It always has the self argument to make sure that everyone understands that this
method is going to be available to each object built by this class. Next we must list the
other arguments that we want to pass to the constructor. In the above example the other
argument needed is name. We have nearly finished the new
theory. After this section it is only
Now let’s pause. You may not have been confused by the init surrounded by two a few more examples and then
you have learned the basics for
underscores on each side of it; you may have noticed that this is actually a method because
starting your project.
it has def at the beginning and a colon at the end; you may be a very clever coder! Most
students need a little encouragement at this stage – listen to Mr Campbell.
Now back to work! In this special method called a constructor we have to create a
self.name variable from name (yes that’s right, so that it is available to the object created
by this class). We then will use this new variable, self.name, in our methods.
We are adding self. to the front of all the variable names that are going to be available to
our objects and not simply to the class. This is why we end up with a lot of selfs!
Delving Deeper
When we build classes, we write methods that will be available to the objects we build (create instances of).
In a game of snooker, there may be several balls with different locations. Each one has a find_location()
Open a new window in IDLE and copy the code from Code Box 2.3. Save it as cat2.py.
Compare this with cat.py (Code Box 2.1) to see how we use the new variable self.name
created in the constructor. Yes, that is all this constructor code has done: it has given you a
new variable that you can use! As before, this class does not run anything. It is just a factory,
but you are about to see how useful factories are.
def speak(self):
print(self.name, " says Meow")
def drink(self):
print(self.name, " drinks some milk.")
print(self.name, " takes a nap.")
O Romeo, Romeo!
Wherefore art thou
Code Box 2.4 Romeo?
import cat2
Run this file and then feel free to play and adjust the code. Have fun!
Chapter 2: Objects, classes and factories 26
Designing classes
This section introduces another simple example where you will get to practise what you have
learned and you will start to learn how to design a class. You are going to build a lift and a
lift operator.
Below is one way to make a class for a lift. There are many properties a lift can have, but in
terms of a program there are very few essentials.
The only essential feature of a lift is which floor it is on. Instead of ‘essential feature’ we
could call this a property or characteristic. In programming we call these characteristics
attributes (or sometimes parameters) and we initialise them in the constructor. We call lifts elevators
in the USA.
Class Name
Lift
Attributes
current floor
Methods
get floor
move to floor
Two methods are essential: one that finds out what floor the lift is on and another to move
the lift to a new floor. Now let’s see how this gets turned into code:
Class Name
Code Box 2.5
Lift # lift.py provides a Lift Class
class Lift:
Class Name
Attributes # constructor:
def __init__(self, current_floor=0):
current floor Constructor
self.current_floor = current_floor
def get_floor(self):
Methods
return self.current_floor
get floor Method
The return key word is used in the first method. This means that if we call this method in
our lift operator program it will return (give back) the value stored in the
self.current_floor variable.
import lift
Experiment
When creating my_lift we did not include a current_floor variable so the lift
started on floor 0. Try altering this line of code to my_lift = lift.Lift(3) and
running again. Interesting, huh?
This has been quite an intense chapter. If you are feeling overwhelmed, do not worry as the
MyPong project is going to reinforce many of these ideas and you will get the hang of them soon.
If you want some practise, try this easy and relaxing challenge. (Easy and relaxing if you
have the code for cat2.py and main2.py in front of you while you complete the challenge!)
Good luck.
Future chapters follow this pattern. The start files always contain the work you have already
done from the previous chapter with additional commenting. This is so that it is never a
disaster if you get confused. Another reason for providing all of these backup files is to
encourage you to experiment with your code at the end of each chapter without the fear
of losing your way. Please though, do try typing rather than just reading the files. You will
then be justified in calling MyPong your own when it is complete. You will also have a much
better chance of understanding how the code all works.
There is more in this chapter about how to design classes. This theme also continues in the
rest of the book.
• two bats
• a table with a net and a score board
• a ball
• two players.
We now have to decide how to separate this idea into classes by thinking of the objects we
require. There are several ways of doing this. Never think there is only one correct answer!
Obviously, we are going to create a Ball class and a Bat class. We will also need a file
called main.py which will control most things. There has to be a Table class otherwise this
chapter’s title would make no sense! But what should we do about the net, the rules and the
scoring system?
The obvious place for the rules will be in main.py. The net is very simple and though we
could build a Net class, it seems a lot of effort when all we need to do is draw a dashed line:
it can become part of the table. We do not have to program everything at once though. We
can wait and see how we feel later. This is the beauty of object-oriented programming in
action!
That is enough of a strategy to be able to start designing the first version of our Table class.
Attributes
height window
(perhaps width=600
400
height=400
pixels)
colour=black
Ah yes, boolean variables: these
net_colour=green
allow us to clearly see what is True
colour (perhaps black) vertical_net (T/F) and what is False in the world.
horizontal_net
a net (its green, its vertical) (T/F)
needs to go in a window
Methods
Notes
It will be helpful to supply lots of default values such as 600 pixels for width.
By having some boolean variables for the net position, it will be easy to use this class
to build a variety of tables with a net that is either vertical, horizontal or non-existent!
This means that we can refer to any of tkinter’s methods in the rest of our code. We no longer
need to precede every method with the name of the module where it can be found: we no
longer need to put tkinter. at the front of every tkinter method call.
Open table.py from the pong-table-start folder. This file can be found in the Chapter 3
folder. Open this with IDLE and add the missing code from Code Box 3.1. Add your code to
the file shown in the header bar of the Code Box.
Can you see how this matches the first part of our plan?
class Table:
#### constructor
def __init__(self, window, colour="black", net_colour="green",
width=600, height=400,
vertical_net=False, horizontal_net=False):
self.width = width
self.height = height
self.colour = colour
Classes built like this are very much like factories. In main.py we will be able to quickly
manufacture a table with code such as this:
my_table = table.Table(window)
Because of all the default values we have supplied in the constructor’s __init__ line, the
only argument required will be window. The class will make a table object that is just like
the one we want, with one exception.
Building classes in this way means we can build a variety of tables in the future using one
line of code. The Table class becomes a very useful little factory (Figure 3.2). Do you want a
red table with a horizontal net that is 300 pixels by 300 pixels? Just ask:
http://docs.python.org/py3k/library/tk.html
First we are required to make the canvas, which is coded like this:
The Canvas class is a tkinter factory that requires the arguments for a window, background
colour, height and width – all of which we have variables for in the first part of our
constructor.
The next thing we have to do is call canvas’ pack() method. It does not require any
arguments:
self.canvas.pack()
The pack() method is required to make our table visible while performing other tasks. Next
we can use canvas’ create_line() method to draw a net. This takes the following form:
self.canvas.create_line(
[top x-coord], [top y-coord], [bottom x-coord],
[bottom y-coord], width=2, fill=net_colour, dash=(15, 23))
The fill is the colour of the line – we have a variable ready for that.
The dash attribute takes two numbers – the length of the dash and the spacing, also in pixels.
Chapter 3: Creating the Table 42
To understand the coordinates, it helps to know that unlike in maths and science at school,
computers often count pixels from the top left corner of the screen or window. This is the case
in Python. Look at Figure 3.3 to see how this works.
x-axis
(0, 0) (300, 0)
y-axis
At the sound of Lois’s hasty tattoo on the floor, the others had
hastened up to her. They found her still clasping the one thin cold
hand with one of hers and still beating the floor with the other.
They thought at first that it might be a fainting fit—which in
itself, in the circumstances, would have been ominous enough. But
briefest examination showed them that their old friend had
answered The Call and was gone.
They were down again in the small sitting-room, discussing it
quietly and sadly, when Auntie Mitt, after staring fixedly at Lois for a
full minute, as though she had suddenly detected something strange
in her appearance, said suddenly,
“My dear, you are Lady Luard now.”
And Lois stared back at them both with a startled look, and
gasped, “I never thought of that. Oh, I wish Ray were here!”
They all wished that, but no amount of wishing will bring men
home from the war.
“We must send Alma word at once,” said Mrs Dare. “I will write
out a telegram.”
“It will be a shock to her,” said Auntie Mitt. “Perhaps, my dear, a
letter——”
“Alma was prepared for the worst,” said Mrs Dare. “Last time she
was here she told me it would be a miracle if he got through such an
illness at his age. She would like to know at once, I am sure,” and
she sat down at the writing table to prepare the telegram.
And while they were still in the midst of these agitations, and
Lois was wondering how she would ever be able to reconcile herself
to the inevitable changes, she happened to glance vaguely through
the window and saw Alma coming quickly up the front path.
“Here she is,” she cried, and jumped up and ran to meet her.
At sight of Lois at the door, Alma exultingly waved a paper she
carried in her hand and quickened her pace almost to a run.
“Good news!” she cried. “Word of Con at last.”
“Oh, Al, I am so glad,” and she burst into tears.
“Why, Lo, dear, what’s up? It’s good news——”
“Uncle Tony has just died. Mother was just writing a telegram to
send to you.”
“I am not surprised, dear,” said Alma, putting her arm round her.
“I had very little hope of his pulling through. He was an old man,
you see. I am sure he was not very sorry to go; though he would
have liked to see the end of this war, I know. And I do wish he had
heard about Con. He would have been so glad. However, he knows
more about it all now than any of us, and that will please him
mightily,” and they went in together.
So the good news and the bad—nay, why call the news of a
good man’s promotion bad news?—let us say, the other news tended
to counteract one another in the hearts of those who were left.
Indeed the net result that remained with them all was a sense of
thankfulness,—for the peaceful passing of the fine full life, and for
the young life spared for further work.
Alma’s letter was not from Con himself, which at first sight was
disturbing. But the contents explained. Lieutenant Dare had been
wounded—in the hand, the writer said,—at Landrecies during the
retreat from Mons. He was now a prisoner in Germany—at Torgau,
and was being well looked after. He was making good recovery from
his wounds which had been severe, and they were all hoping that
something might presently be arranged in the way of an exchange
of medical-staff prisoners. The writer signed himself Robert Grant,
R.A.M.C.
“I can’t tell you what a relief it is,” said Alma. “I almost danced
when I got it. It’s worry that kills, and I was beginning to worry
about the boy. What about Ray?”
“It’s ten days since my last letter,” said Lois. “I’m hoping for the
next every minute.... Do you know, Al, just at the very last, when
Uncle Tony knew the end had come, he said, ‘Good lad, Ray! He will
come back to you. And Con—good lad too! God bless you all!—all!’—
that was almost the last thing he said.”
“The dear old man!... We will take it as a good omen.... I think,
you know, that just at the last they often have an outlook—a
forelook—altogether beyond our understanding. They see with other
eyes than ours.”
“Undoubtedly!” agreed Mrs. Dare.
Alma’s stay, even under the circumstances, could not be a long
one. They had had forty-nine wounded officers in, two days before,
many of their nurses had gone to the front, and they were very
short-handed.
Lois walked down to the station with her, and they talked in
quiet sisterly fashion of the past, present, and future.
“It is very curious how things seem to work together at times,”
said Lois.
“Always, maybe, if we knew more about it all, dear.”
“Yes, I suppose so. Here have I been so taken up with nursing
Uncle Tony that I really have never had time to get anxious about
Ray.”
“Ray will be all right, you’ll see. I pin my faith to Uncle Tony’s
vision.”
“And yet, when one allows oneself to think about it all, after
reading the terrible accounts of the fighting—and he would have me
read them all to him—it seems almost impossible that any of them
can come back alive.”
“We had forty-nine of them the other day, and it’s amazing how
well they stand it. They’re as cheerful as can be, laughing and
chaffing and joking. And yet some of them are pretty bad. It’s just
as well for all of us to take the cheerful view of things.”
“And then, just when Uncle Tony goes, and we were feeling it so
badly, you come in with your good news of Con. I can’t tell you how
glad I am, Al.”
“I know, dear. And I’ll be just as glad for you one of these days.
Pin your faith to Uncle Tony.”
And through the many dark days when no news came—and in
those days no news did not as a rule mean good news—the thought
of Uncle Tony’s last words held mighty comfort for them all.
They would have liked to bury him quietly, with no great
outward show of the esteem and love in which they held him. Their
feelings were too deep for any outward expression and the times
hardly seemed suitable for making parade of death. There was
sorrow enough abroad without emphasising it.
But Colonel Sir Anthony Luard, V.C., C.B., was a person of
consequence. He had died for his country as truly as any man killed
at the front. The higher powers decreed him a military funeral, and
the quieter-thinking ones at home had to give way. And, after all,
they believed it would please him.
So, on a gun-carriage, escorted by a detachment from the
reserve battalion of his old regiment, with muffled drums and
mournful music, and the Last Post and the crackle of guns, he was
laid to rest. And the others picked up the threads of life again and
kept his memory sweet by constantly missing him and remembering
all his sayings and doings.
His lawyer, Mr. Benfleet of Lincoln’s Inn, came out immediately
after the funeral and explained to all concerned—so far as they were
available—the remarkably thoughtful provisions of his will.
It had been made—or remade—immediately after the return of
Ray and Lois from abroad, and it aimed at the comfort and security
of all his little circle, so far as he could provide for these.
There were many wet eyes and brimming hearts as Mr. Benfleet
went quietly through the details.
To Miss Amelia Mitten—“my very dear and trusted friend”—he
left four hundred pounds a year for life. And Auntie Mitt, with her
little black-bordered handkerchief to her eyes, sobbed gratefully.
To Margaret Dare—wife of John Dare of The Red House,
Willstead,—“in token of my very great love and esteem,”—he left the
sum of £20,000, settled inalienably on herself, with power to will it
at her death to whom she chose.
“To my niece, Victoria Luard—who-might-have-been-
Balaclava,”—it was down there in the will in black and white, and
they came near to smiling at the very characteristic touch,—the sum
of £50,000 on attaining the age of twenty-one.
To Dr Connal Dare—if still alive—the sum of £25,000; and to his
wife Alma, formerly Alma Luard, an equal sum. In case of Dr Connal
Dare’s death the whole £50,000 came at once to Alma.
To Lois Luard, formerly Lois Dare, the sum of £25,000 in her
own right.
To Raglan Luard, the residue,—which, said Mr. Benfleet, would
amount to probably £100,000 or more when the securities, in which
it was all invested, appreciated again after the war.
There were many little minor legacies and gifts to old servants
and so on. And Uncle Tony, if he was present in the spirit at the
reading of his will, must have been well pleased with the effect of
his generous forethought.
XXVII
M RS DARE, wise woman and excellent housekeeper, had for
some time past been doing her best to cut down her
proverbial coat to suit the exigencies of the shrunken war-time cloth
at her disposal.
Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.
ebookultra.com