100% found this document useful (7 votes)
63 views

Begin To Code With Python Rob Miles All Chapter Instant Download

Code

Uploaded by

kamidadjouly96
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (7 votes)
63 views

Begin To Code With Python Rob Miles All Chapter Instant Download

Code

Uploaded by

kamidadjouly96
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Download the full version of the textbook now at textbookfull.

com

Begin to Code with Python Rob Miles

https://textbookfull.com/product/begin-to-code-
with-python-rob-miles/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Begin to Code with JavaScript 1st Edition Miles

https://textbookfull.com/product/begin-to-code-with-javascript-1st-
edition-miles/

textbookfull.com

Math Adventures with Python An Illustrated Guide to


Exploring Math with Code 1st Edition Peter Farrell

https://textbookfull.com/product/math-adventures-with-python-an-
illustrated-guide-to-exploring-math-with-code-1st-edition-peter-
farrell/
textbookfull.com

Mastering Large Datasets with Python Parallelize and


Distribute Your Python Code 1st Edition John T Wolohan

https://textbookfull.com/product/mastering-large-datasets-with-python-
parallelize-and-distribute-your-python-code-1st-edition-john-t-
wolohan/
textbookfull.com

Atomic Force Microscopy: Methods and Protocols Nuno C.


Santos

https://textbookfull.com/product/atomic-force-microscopy-methods-and-
protocols-nuno-c-santos/

textbookfull.com
The Gumilev Mystique Biopolitics Eurasianism and the
Construction of Community in Modern Russia 1st Edition
Mark Bassin
https://textbookfull.com/product/the-gumilev-mystique-biopolitics-
eurasianism-and-the-construction-of-community-in-modern-russia-1st-
edition-mark-bassin/
textbookfull.com

Suicide through a Peacebuilding Lens Katerina Standish

https://textbookfull.com/product/suicide-through-a-peacebuilding-lens-
katerina-standish/

textbookfull.com

Guidance and Counselling in Schools Theory and Practice


1st Edition Namita Ranganathan Toolika Wadhwa

https://textbookfull.com/product/guidance-and-counselling-in-schools-
theory-and-practice-1st-edition-namita-ranganathan-toolika-wadhwa/

textbookfull.com

Bridging the Communication Gap in Science and Technology:


Lessons from India 1st Edition Pallava Bagla

https://textbookfull.com/product/bridging-the-communication-gap-in-
science-and-technology-lessons-from-india-1st-edition-pallava-bagla/

textbookfull.com

American Messiahs False Prophets of a Damned Nation First


Edition Morris

https://textbookfull.com/product/american-messiahs-false-prophets-of-
a-damned-nation-first-edition-morris/

textbookfull.com
Novel Sensors and Sensing First Edition Jackson

https://textbookfull.com/product/novel-sensors-and-sensing-first-
edition-jackson/

textbookfull.com
Begin to Code with Python
Begin

Begin to Code with Python


Become a Python programmer—and have fun doing it! About This Book

to Code
Start writing software that solves real problems, even if you have
• For absolute beginners who’ve never
absolutely no programming experience! This friendly, easy, full-color
written a line of code
book puts you in total control of your own learning, empowering you to
build unique and useful programs. Microsoft has completely reinvented • For anyone who’s been frustrated with
the beginning programmer’s tutorial, reflecting deep research into other beginning programming books
how today’s beginners learn, and why other books fall short. Begin to or courses
Code with Python is packed with innovations, from its “Snaps” prebuilt • For people who’ve started out with
operations to its “Make Something Happen” projects. Whether you’re other languages and now want to

with
a total beginner or you’ve tried before, this guide will put the power, learn Python
excitement, and fun of programming where it belongs: in your hands! • Works with Windows PC, Apple Mac,
Linux PC, or Raspberry Pi
Easy, friendly, and you’re in control! Learn how to… • Includes mapping of MTA exam

Python
objectives that are covered in this book,
• Get, install, and use powerful free tools to create modern Python
programs as well as an appendix with further
explanation of some of the topics
• Learn key concepts from 170 sample programs, and use them to
on the exam
jumpstart your own
• Discover exactly what happens when a program runs
• Approach program development with a professional perspective About the Author
• Learn the core elements of the Python language
Rob Miles has taught computer
• Build more complex software with classes, methods, and objects
programming for over 30 years.
• Organize programs so they’re easy to build and improve A Microsoft MVP for Windows
• Capture and respond to user input Development, Rob enjoys inspiring
• Store and manipulate many types of real-world data programmers at all levels. He writes his
• Define custom data types to solve specific problems own games, programs, and poetry, has
consulted on many commercial software
• Create interactive games that are fun to play
projects, and is the author of Begin to
• Build modern web and cloud-based applications
Code with C#.
• Use pre-built libraries to quickly create powerful software

Get code samples, including complete apps, at:


Miles
https://aka.ms/BegintoCodePython/downloads

MicrosoftPressStore.com U.S.A. $39.99


Canada $49.99
ISBN-13: 978-1-5093-0452-3 [Recommended]
ISBN-10: 1-5093-0452-5
5 3 9 9 9 Programming/Python

9 781509 304523
Rob Miles

9781509304523_Miles_Begin_to_Code_Python_Cover.indd All Pages 10/30/17 3:35 PM


Begin
to Code
with
Python

Rob Miles
BEGIN TO CODE WITH PYTHON Editor-in-Chief
Published with the authorization of Microsoft Corporation by: Greg Wiegand
Pearson Education, Inc.
Senior Acquisitions Editor
Copyright © 2018 by Pearson Education, Inc. Laura Norman
All rights reserved. Printed in the United States of America. This Development Editor
publication is protected by copyright, and permission must be Rick Kughen
obtained from the publisher prior to any prohibited reproduction,
Managing Editor
storage in a retrieval system, or transmission in any form or by
Sandra Schroeder
any means, electronic, mechanical, photocopying, recording, or
likewise. For information regarding permissions, request forms, Senior Project Editor
and the appropriate contacts within the Pearson Education Global Tracey Croom
Rights & Permissions Department, please visit www.pearsoned.com/
Copy Editor
permissions/. No patent liability is assumed with respect to the use
Dan Foster
of the information contained herein. Although every precaution has
been taken in the preparation of this book, the publisher and author Indexer
assume no responsibility for errors or omissions. Nor is any liability Valerie Haynes Perry
assumed for damages resulting from the use of the information
Proofreader
contained herein.
Becky Winter
ISBN-13: 978-1-5093-0452-3
Technical Editor
ISBN-10: 1-5093-0452-5
John Ray
Library of Congress Control Number: 2017958202
Editorial Assistant
1 17
Cindy J Teeters
TRADEMARKS
Cover Designer
Microsoft and the trademarks listed at http://www.microsoft.com on
Twist Creative, Seattle
the “Trademarks” webpage are trademarks of the Microsoft group of
companies. All other marks are property of their respective owners. Compositor
"Python" and the Python logos are trademarks or registered trade- Danielle Foster
marks of the Python Software Foundation, used by Pearson Education
with permission from the Foundation.
WARNING AND DISCLAIMER
Every effort has been made to make this book as complete and as
accurate as possible, but no warranty or fitness is implied. The infor-
mation provided is on an “as is” basis. The author, the publisher, and
Microsoft Corporation shall have neither liability nor responsibility
to any person or entity with respect to any loss or damages arising
from the information contained in this book or from the use of the
programs accompanying it.
SPECIAL SALES
For information about buying this title in bulk quantities, or for
special sales opportunities (which may include electronic versions;
custom cover designs; and content particular to your business,
training goals, marketing focus, or branding interests), please contact
our corporate sales department at [email protected] or
(800) 382-3419.
For government sales inquiries, please contact
[email protected].
For questions about sales outside the U.S., please contact
[email protected].
To Mary
About the
author
Rob Miles has spent more than 30 years teach-
ing programming at the University of Hull in
the United Kingdom. He’s a Microsoft MVP,
with a passion for programming, and creating
new things. If he had any spare time, he’d spend
it writing even more code. He loves making
programs and then running them to see what
happens. He reckons that programming is the
most creative thing you can learn how to do.
He believes that programmers really can claim to be building the future.

He claims to know a lot of really good jokes, but nobody has ever heard
him tell one. If you want an insight into the Wacky World™ of Rob Miles,
you can read his blog at www.robmiles.com and follow him on Twitter via
@RobMiles.

[email protected]
Contents at a glance
Part 1: Programming fundamentals
Chapter 1 Starting with Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
Chapter 2 Python and Programming . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Chapter 3 Python program structure . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Chapter 4 Working with variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Chapter 5 Making decisions in programs . . . . . . . . . . . . . . . . . . . . . . 104
Chapter 6 Repeating actions with loops . . . . . . . . . . . . . . . . . . . . . . . 140
Chapter 7 Using functions to simplify programs . . . . . . . . . . . . . . . 170
Chapter 8 Storing collections of data . . . . . . . . . . . . . . . . . . . . . . . . . 210

Part 2: Advanced programming


Chapter 9 Use classes to store data . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
Chapter 10 Use classes to create active objects . . . . . . . . . . . . . . . . . 308
Chapter 11 Object-based solution design . . . . . . . . . . . . . . . . . . . . . . 372
Chapter 12 Python applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438

Part 3: Useful Python (Digital-only)


The chapter PDF files for this Part are available at
https://aka.ms/BeginCodePython/downloads.

Chapter 13 Python and Graphical User Interfaces . . . . . . . . . . . . . . . 488


Chapter 14 Python programs as network clients . . . . . . . . . . . . . . . . 548
Chapter 15 Python programs as network servers . . . . . . . . . . . . . . . . 570
Chapter 16 Create games with Pygame . . . . . . . . . . . . . . . . . . . . . . . . 592
v
This page intentionally left blank
Contents
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xviii

Part 1: Programming fundamentals

1 Starting with Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 2


What is Python? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Python origins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Python versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Build a place to work with Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Get the tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Python for Windows PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Start Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

2 Python and Programming . . . . . . . . . . . . . . . . . . . . . 16


What makes a programmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Programming and party planning . . . . . . . . . . . . . . . . . . . . . . 18

Give us feedback
Tell us what you think of this book and help
Microsoft improve our products for you.
Thank you!
http://aka.ms/tellpress

vii
Programming and problems . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Programmers and people . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Computers as data processors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Machines and computers and us . . . . . . . . . . . . . . . . . . . . . . . 22
Programs as data processors . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Python as a data processor . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Data and information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Work with Python functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
The ord function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
The chr function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Investigate data storage using bin . . . . . . . . . . . . . . . . . . . . . 39
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3 Python program structure . . . . . . . . . . . . . . . . . . . . . 44


Write your first Python program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Run Python programs using IDLE . . . . . . . . . . . . . . . . . . . . . . 46
Get program output using the print function . . . . . . . . . . 51
Use Python libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
The random library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
The time library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Python comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Code samples and comments . . . . . . . . . . . . . . . . . . . . . . . . . 62
Run Python from the desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Delay the end of the program . . . . . . . . . . . . . . . . . . . . . . . . . 64
Adding some snaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Adding the Pygame library . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Snaps functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

viii
4 Working with variables . . . . . . . . . . . . . . . . . . . . . . . . 72
Variables in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Python names . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Working with text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Marking the start and end of strings . . . . . . . . . . . . . . . . . . . . 81
Escape characters in text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Read in text using the input function . . . . . . . . . . . . . . . . . . 84
Working with numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Convert strings into integer values . . . . . . . . . . . . . . . . . . . . . . 87
Whole numbers and real numbers . . . . . . . . . . . . . . . . . . . . . 89
Real numbers and floating-point numbers . . . . . . . . . . . . . 90
Convert strings into floating-point values . . . . . . . . . . . . . . 95
Perform calculations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Convert between float and int . . . . . . . . . . . . . . . . . . . . . . . 98
Weather snaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102

5 Making decisions in programs . . . . . . . . . . . . . . . . . 104


Boolean data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Create Boolean variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Boolean expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Comparing values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Boolean operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
The if construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Nesting if conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Working with logic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Use decisions to make an application . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Design the user interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Implement a user interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

ix
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Testing user input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Complete the program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
Input snaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

6 Repeating actions with loops . . . . . . . . . . . . . . . . . . 140


The while construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Repeat a sequence of statements using while . . . . . . . . 142
Handling invalid user entry . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Detect invalid number entry using exceptions . . . . . . . . . . 152
Exceptions and number reading . . . . . . . . . . . . . . . . . . . . . . . 154
Handling multiple exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . 156
Break out of loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Return to the top of a loop with continue . . . . . . . . . . . . 158
Count a repeating loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
The for loop construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Make a digital clock using snaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168

7 Using functions to simplify programs . . . . . . . . . . 170


What makes a function? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Give information to functions using parameters . . . . . . . . 176
Return values from function calls . . . . . . . . . . . . . . . . . . . . . . 185
Build reusable functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Create a text input function . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Add help information to functions . . . . . . . . . . . . . . . . . . . . . 195
Create a number input function . . . . . . . . . . . . . . . . . . . . . . . 197

x
Convert our functions into a Python module . . . . . . . . . . . 201
Use the IDLE debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208

8 Storing collections of data . . . . . . . . . . . . . . . . . . . . 210


Lists and tracking sales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
Limitations of individual variables . . . . . . . . . . . . . . . . . . . . . . 214
Lists in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Read in a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Display a list using a for loop . . . . . . . . . . . . . . . . . . . . . . . . . 219
Refactor programs into functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Create placeholder functions . . . . . . . . . . . . . . . . . . . . . . . . . 224
Create a user menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Sort using bubble sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Initialize a list with test data . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Sort a list from high to low . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Sort a list from low to high . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Find the highest and lowest sales values . . . . . . . . . . . . . . . 235
Evaluate total and average sales . . . . . . . . . . . . . . . . . . . . . . 236
Complete the program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Store data in a file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Write into a file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Write the sales figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Read from a file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Read the sales figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Deal with file errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
Store tables of data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
Use loops to work with tables . . . . . . . . . . . . . . . . . . . . . . . . . 253

xi
Use lists as lookup tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
Tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259

Part 2: Advanced programming

9 Use classes to store data . . . . . . . . . . . . . . . . . . . . . . 264


Make a tiny contacts app . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Make a prototype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Store contact details in separate lists . . . . . . . . . . . . . . . . . . 269
Use a class to store contact details . . . . . . . . . . . . . . . . . . . . 272
Use the Contact class in the Tiny
Contacts program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
Edit contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Save contacts in a file using pickle . . . . . . . . . . . . . . . . . . . . 289
Load contacts from a file using pickle . . . . . . . . . . . . . . . . . 292
Add save and load to Tiny Contacts . . . . . . . . . . . . . . . . . 293
Set up class instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294
Dictionaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Create a dictionary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 300
Dictionary management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Return a dictionary from a function . . . . . . . . . . . . . . . . . . . 303
Use a dictionary to store contacts . . . . . . . . . . . . . . . . . . . . . 303
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

xii
10 Use classes to create active objects . . . . . . . . . . . . 308
Create a Time Tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Add a data attribute to a class . . . . . . . . . . . . . . . . . . . . . . . . . 311
Create a cohesive object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Create method attributes for a class . . . . . . . . . . . . . . . . . . . . 314
Add validation to methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Protect a data attribute against damage . . . . . . . . . . . . . . 328
Protected methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 331
Create class properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Evolve class design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Manage class versions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
The __str__ method in a class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Python string formatting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Session tracking in Time Tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350
The Python map function . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
The Python join method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
Make music with Snaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368

11 Object-based solution design . . . . . . . . . . . . . . . . . 372


Fashion Shop application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374
Application data design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Object-oriented design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Creating superclasses and subclasses . . . . . . . . . . . . . . . . . . 379
Data design recap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Implement application behaviors . . . . . . . . . . . . . . . . . . . . . 405
Objects as components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
Create a FashionShop component . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410
Create a user interface component . . . . . . . . . . . . . . . . . . . . 417

xiii
Design with classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
Python sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
Sets and tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426
Sets versus class hierarchies . . . . . . . . . . . . . . . . . . . . . . . . . . . 431
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434

12 Python applications . . . . . . . . . . . . . . . . . . . . . . . . . . 438


Advanced functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
References to functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
Use lambda expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446
Iterator functions and the yield statement . . . . . . . . . . . . 451
Functions with an arbitrary number of arguments . . . . . 457
Modules and packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Python modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460
Add a readme function to BTCInput . . . . . . . . . . . . . . . . . . . 461
Run a module as a program . . . . . . . . . . . . . . . . . . . . . . . . . . 462
Detect whether a module is executed as a program . . . . 463
Create a Python package . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
Import modules from packages . . . . . . . . . . . . . . . . . . . . . . 466
Program testing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
The Python assert statement . . . . . . . . . . . . . . . . . . . . . . . . 471
The Python unittest module . . . . . . . . . . . . . . . . . . . . . . . . . . 472
Create tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
View program documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

xiv
Part 3: Useful Python (Digital-only)

The chapter PDF files for this Part are available at


https://aka.ms/BeginCodePython/downloads.

13 Python and Graphical User Interfaces . . . . . . . . . . 488


Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Install Visual Studio Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
Install the Python Extension in Visual Studio Code . . . . . . 491
Create a project folder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492
Create a program file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493
Debug a program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
Other Python editors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499
Create a Graphical User Interface with Tkinter . . . . . . . . . . . . . . . . . 499
Create a graphical application . . . . . . . . . . . . . . . . . . . . . . . . 506
Lay out a grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507
Create an event handler function . . . . . . . . . . . . . . . . . . . . . . 510
Create a mainloop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511
Handle errors in a graphical user interface . . . . . . . . . . . . . . 512
Display a message box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514
Draw on a Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518
Tkinter events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Create a drawing program . . . . . . . . . . . . . . . . . . . . . . . . . . . 523
Enter multi-line text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
Group display elements in frames . . . . . . . . . . . . . . . . . . . . . 528
Create an editable StockItem using a GUI . . . . . . . . . . . . 529

xv
Create a Listbox selector . . . . . . . . . . . . . . . . . . . . . . . . . . . . 537
An application with a graphical user interface . . . . . . . . . 544
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546

14 Python programs as network clients . . . . . . . . . . . 548


Computer networking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 550
Consume the web from Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Read a webpage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
Use web-based data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 562
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567

15 Python programs as network servers . . . . . . . . . . 570


Create a web server in Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
A tiny socket-based server . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Python web server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 577
Serve webpages from files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579
Get information from web users . . . . . . . . . . . . . . . . . . . . . . 584
Host Python applications on the web . . . . . . . . . . . . . . . . . . . . . . . . . 590
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590

16 Create games with Pygame . . . . . . . . . . . . . . . . . . . 592


Getting started with pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594
Draw images with pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Image file types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 601
Load an image into a game . . . . . . . . . . . . . . . . . . . . . . . . . . . 602
Make an image move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604
Get user input from pygame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606

xvi
Create game sprites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609
Add a player sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614
Control the player sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Add a Cracker sprite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
Add lots of sprite instances . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
Catch the crackers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 620
Add a killer tomato . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Complete the game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
Add a start screen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629
End the game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634
Score the game . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 635
What you have learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636

Index

xvii
Introduction
Programming is the most creative thing you can learn how to do. Why? If you learn to
paint, you can create pictures. If you learn to play the violin, you can make music. But
if you learn to program, you can create entirely new experiences (and you can make
pictures and music too, if you wish). Once you’ve started on the programming path,
there’s no limit to where you can go. There are always new devices, technologies, and
marketplaces where you can use your programming skills.

Think of this book as your first step on a journey to programming enlightenment. The
best journeys are undertaken with a destination in mind, and the destination of this
journey is “usefulness.” By the end of this book, you will have the skills and knowledge
to write useful programs.

However, before we begin, a small word of warning. Just as a guide would want to tell
you about the lions, tigers, and crocodiles that you might encounter on a safari, I must
tell you that our journey might not be all smooth going. Programmers must learn to
think slightly differently about problem solving, because a computer just doesn’t work
the same way humans do. Humans can do complex things rather slowly. Computers
can do simple things very quickly. It is the programmer’s job to harness the simple
abilities of the machine to solve complicated problems. This is what you’ll learn to do.

The key to success as a programmer is much the same as for many other endeavors.
To become a world-renowned violin player, you will have to practice a lot. The same
is true for programming. You must spend a lot of time working on your programs to
acquire code-writing skills. However, the good news is that just as a violin player really
enjoys making the instrument sing, making a computer do exactly what you want
turns out to be a very rewarding experience. It gets even more enjoyable when you
see other people using programs that you’ve written and finding them useful and
fun to use.

How this book fits together


I’ve organized this book in three parts. Each part builds on the previous one with the
aim of turning you into a successful programmer. We start off considering the low-
level programming instructions that programs use to tell the computer what to do,
and we finish by looking at professional software construction.

xviii Introduction
Part 1: Programming fundamentals
The first part gets you started. It points you to where you’ll install and use the pro-
gramming tools that you’ll need to begin coding, and it introduces you to the fun-
damental elements of the Python programming language. You’ll come to grips with
writing your first programs and learn all the fundamental code constructions that
underpin all programs. You’ll also find out where Python fits in the great scheme of
programming languages, and what this means for you as a programmer.

Part 2: Advanced programming


Part 2 describes the features of the Python programming language used to create and
structure more complex applications. It shows you how to break large programs into
smaller elements and how you can create custom data types that reflect the specific
problem being solved. You’ll also discover how to design, test, and document your
Python applications.

Part 3: Useful Python


Once you’ve learned how to make your own programs, the next step is to learn how
to use code written by other people. An important advantage of Python is the wealth
of software libraries available for users of the language. In Part 3, you’ll explore a
number of these libraries and find out how you can use them to create applications
with graphical user interfaces, how Python programs can act as clients and servers in
network applications, and, finally, create engaging games.

The third part of the book is provided as a downloadable document that you can have
open on your desktop as you experiment with the demonstration programs and cre-
ate applications of your own. The chapter PDF files for this Part are available at

https://aka.ms/BeginCodePython/downloads

How you will learn


In each chapter, I will tell you a bit more about programming. I’ll show you how
to do something, and then I’ll invite you to make something of your own by using
what you’ve learned. You’ll never be more than a page or so away from doing some-
thing or making something unique and personal. After that, it’s up to you to make
something amazing!

Introduction xix
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
You can read the book straight through if you like, but you’ll learn much more if you
slow down and work with the practical parts along the way. Like learning to ride a
bicycle, you’ll learn by doing. You must put in the time and practice to learn how to do it.
But this book will give you the knowledge and confidence to try your hand at program-
ming, and it will also be around to help you if your programming doesn’t turn out as you
expected. Here are some elements in the book that will help you learn by doing:

MAKE SOMETHING HAPPEN

Yes, the best way to learn things is by doing, so you’ll find “Make Something Happen” ele-
ments throughout the text. These elements offer ways for you to practice your programming
skills. Each starts with an example and then introduces some steps you can try on your own.
Everything you create will run on Windows, macOS, or Linux.

CODE ANALYSIS

A great way to learn how to program is by looking at code written by others and working out
what it does (and sometimes why it doesn’t do what it should). This book contains over 150
sample programs for you to examine. In this book’s “Code Analysis” challenges, you’ll use your
deductive skills to figure out the behavior of a program, fix bugs, and suggest improvements.

WHAT COULD GO WRONG

If you don’t already know that programs can fail, you’ll learn this hard lesson soon after you
begin writing your first program. To help you deal with this in advance, I’ve included “What
Could Go Wrong?” elements, which anticipate problems you might have and provide solu-
tions to those problems. For example, when I introduce something new, I’ll sometimes spend
some time considering how it can fail and what you need to worry about when you use the
new feature.

xx Introduction
PROGRAMMER’S POINTS
I’ve spent a lot of time teaching programming. But I’ve also written many programs and sold a few to
paying customers. I’ve learned some things the hard way that I really wish I’d known at the start. The aim
of “Programmer’s Points” is to give you this information up front so that you can start taking a profes-
sional view of software development as you learn how to do it.

“Programmer’s Points” cover a wide range of issues, from programming to people to philosophy. I strongly
advise you to read and absorb these points carefully—they can save you a lot of time in the future!

Software and hardware


You’ll need a computer and some software to work with the programs in this book. I’m
afraid I can’t provide you with a computer, but in the first chapter you’ll find out where
you can get the Python tools and an application called Visual Studio Code that you’ll
learn to use when we start creating larger applications.

Using a PC or laptop
You can use Windows, macOS, or Linux to create and run the Python programs in the
text. Your PC doesn’t have to be particularly powerful, but these are the minimum
specifications I’d recommend:

●● A 1 GHz or faster processor, preferably an Intel i5 or better.

●● At least 4 gigabytes (GB) of memory (RAM), but preferably 8 GB or more.

●● 256 GB hard drive space. (The full Python and Visual Studio Code installations take
about 1 GB of hard drive space.)

There are no specific requirements for the graphics display, although a higher-
resolution screen will enable you to see more when writing your programs.

Using a mobile device


You can write and run Python programs on a mobile phone or tablet. If you have
an Apple device running iOS, I recommend the Pythonista app. If you’re using an
Android device, look at the Pyonic Python 3 interpreter.

Introduction xxi
Using a Raspberry Pi
If you want to get started in the most inexpensive way possible, you can use a Rasp-
berry Pi running the Raspbian operating system, which has Python 3.6 and the IDLE
development environment built in.

Downloads
In every chapter in this book, I’ll demonstrate and explain programs that teach you
how to begin to program—and that you can then use to create programs of your own.
You can download this book’s sample code from the following page:

https://aka.ms/BeginCodePython/downloads

Follow the instructions you’ll find in Chapter 1 to install the sample programs and code.

Acknowledgments
I would like to thank Laura Norman for giving me a chance to write this book, Dan
Foster and Rick Kughen for putting up with my prose and knocking it into shape,
John Ray for astute and constructive technical insights, and Tracey Croom and Becky
Winter for making it all look so nice. I’d also like to say thanks to Rob Nance for all the
lovely artwork.

Finally, I’d like to say thanks to my wife, Mary, for her support and endless cups of tea.
And biscuits.

Errata, updates, and book


support
We’ve made every effort to ensure the accuracy of this book and its companion
content. You can access updates to this book—in the form of a list of submitted errata
and their related corrections—at:

https://aka.ms/BegintoCodePython/errata

If you discover an error not already listed, please submit it to us at the same page.

xxii Introduction
If you need additional support, email Microsoft Press Book Support at

[email protected]

Please note that product support for Microsoft software and hardware is not offered
through the previous addresses. For help with Microsoft software or hardware, go to

http://support.microsoft.com

Obtaining MTA qualification


The Microsoft Certified Professional program lets you obtain recognition for your
skills. Passing the exam 98-381, “Introduction to Programming Using Python” gives
you a Microsoft Technology Associate (MTA) level qualification in Python program-
ming. You can find out more about this examination at

https://www.microsoft.com/en-us/learning/exam-98-381.aspx

To help you get the best out of this text, if you’re thinking of using it as part of a pro-
gram of study to prepare for this exam, I’ve put together a mapping of exam topics to
book elements that you may find helpful. (Note that these mappings are based on the
exam specification as of October 2017.)

I’ve also created an appendix, which puts some of the elements described in the book
into the context of the exam, and you can find this in the same place as the sample
code downloads.

https://aka.ms/BeginCodePython/downloads

Qualification structure
The qualification is broken down into a number of topic areas, each of which com-
prises a percentage of the total qualification. We can go through each topic area
and identify the elements of this book that apply. The tables below map skill items to
sections in chapters of this book.

Introduction xxiii
Perform operations using data types and operators
(20-25%)
To prepare for this topic, you should pay special attention to Chapter 4, which
describes the essentials of data processing in Python programs as well as how text and
numeric data is stored and manipulated. Chapter 5 introduces the Boolean variable
type and explains how logical values are manipulated. Chapter 8 describes how to
store collections of data, and Chapter 9 explains the creation and storage of data
structures. Chapter 11 gives details of sets in Python programs.

SKILL BOOK ELEMENT

Chapter 4: Variables in Python

Chapter 4: Working with text


Evaluate an expression to identify the data type
Python will assign to each variable. Identify str, int, Chapter 4: Working with numbers
float, and bool data types.
Chapter 5: Boolean data

Chapter 5: Boolean expressions

Chapter 4: Convert strings into floating-


point values

Chapter 4: Convert between float and int


Perform data and data type operations. Convert
from one data type to another type; construct
Chapter 4: Real numbers and floating-
data structures; perform indexing and slicing
point numbers
operations.
Chapter 8: Lists and tracking sales

Chapter 9: Use a class to store contact details

Chapter 4: Performing calculations


Determine the sequence of execution based on
operator precedence = Assignment; Comparison; Chapter 9: Contact objects and references
Logical; Arithmetic; Identity (is); Containment (in)
Chapter 11: Sets and tags

Select the appropriate operator to achieve the Chapter 4: Performing calculations


intended result: Assignment; Comparison; Logical;
Arithmetic; Identity (is); Containment (in). Chapter 5: Boolean expressions

Control flow with decisions and loops (25-30%)


To prepare for this topic, you should pay special attention to Chapter 5, which
describes the if construction, and Chapter 6, which moves on to describe the while
and for loop constructions that are used to implement looping in Python programs.

xxiv Introduction
Random documents with unrelated
content Scribd suggests to you:
herpaannuksen valtaan — hän ei mitenkään uskaltanut mennä
pikimustan metsän läpi; mutta jalat veivät hänet edelleen, eikä hän
voinut kääntyä. Hänen ruumiinsa tuntui vieraalta, hän kulki
eteenpäin aivan kuin unessa. Hän astui varmasti kivien ja juurien ja
vesilätäköiden yli, varoen vaistomaisesti kompastumista, joutumista
pois tasaisesta astuntatahdistaan ja jättäytymistä pelon valtaan.

Kuuset humisivat yhä lähempänä yössä. Hän astui niiden keskelle


yhtä unenomaisen varmasti. Hän kuuli joka äänen eikä uskaltanut
räpäyttää silmiään pimeyden tähden. Joki kohisi, hongat huokailivat,
puro lirisi kivien yli edessäpäin, hän joutui sen kohdalle ja sitten ohi.
Kerran vyörähti ylhäällä louhikossa kivi aivan kuin joku olisi liikkunut
siellä — hiki kihosi koko hänen ruumiistaan, mutta hän ei uskaltanut
hidastuttaa kulkuaan eikä kiiruhtaakaan.

Kristiinan silmät olivat jo niin tottuneet pimeään, että kun hän tuli
ulos metsästä, hän erotti veden välkkeen joessa ja soissa. Vainiot
piirtyivät esiin pimeydestä, taloryhmät näyttivät kuin pimeyden
pesiltä. Taivaskin tuntui alkavan valjeta korkealla — hän aavisti sen,
mutta ei uskaltanut nostaa katsettaan mustia jyrkkiä vuorensyrjiä
kohti. Hän tiesi pian olevan ajan, jolloin kuu nousee vuorien takaa.

Hän koetti ajatella, että neljän tunnin kuluttua on päivä: ihmiset


ryhtyvät päivän töihin kaikissa laakson kartanoissa — ilma alkaa
kajastaa, vuorenkupurat valkenevat. Eihän tie ole pitkä —
päiväsaikaan ei Formosta ole pitkä matka kirkkoon. Ja silloin hän on
jo ollut kauan kotona. Mutta hänestä tuntui, että silloin hän oli oleva
toinen kuin oli ulos lähtiessään —.

Hän tiesi, että jos asia olisi koskenut jotakin hänen omaa lastaan,
ei hän olisi uskaltanut ryhtyä tähän viimeiseen keinoon. Kääntämään
Jumalan kättä, kun tämä oli ojentanut sen elävää sielua kohti.
Istuessaan omien sairastavien pikkulastensa vieressä, ollessaan nuori
ja sydämen tuskassa hän oli koettanut sanella väristen: Herra, sinä
rakastat heitä enemmän kuin minä — tapahtukoon sinun tahtosi —.

Mutta nyt hän kulki tässä uhmaten omaa pelkoaan. Tuon lapsen,
joka ei ollut hänen omansa, hän tahtoi pelastaa, odottipa tässä
elämässä mikä tahansa —.

— Sillä sinäkin, Simon Darre, suostuit, kun oli kysymys


rakkaimmastasi, suostuit enempään kuin mihin täysin kunniakas
ihminen saisi suostua.

— Etkö tahdo, että menen —? Hänessä ei ollut ollut miestä


kieltämään. Syvimmässä sydämessään Kristiina kyllä tiesi, että jos
lapsi kuolisi, jaksaisi Simon kantaa senkin. Mutta hän oli iskenyt
Simoniin juuri sillä hetkellä, jolloin hän näki tämän olevan
murtumaisillaan. Ja se salaisuus heidän välillään oli tästäperin oleva,
että Simon tiesi hänen nähneen hänetkin kerran sellaisella hetkellä,
jolloin mies oli horjunut.

Sillä Simon oli saanut tietää hänestä liian paljon. Kristiina oli
turvautunut hylkäämänsä miehen apuun joka kerran, kun hän itse oli
hädässä valittunsa puolesta. Hän oli kääntynyt hylkimänsä kosijan
puoleen aina, kun hän tarvitsi jotakuta suojelemaan rakkauttaan.
Eikä hän ollut vielä milloinkaan pyytänyt turhaan — kerta kerran
jälkeen oli Simon astunut hänen eteensä suojaamaan häntä
voimallaan ja hyvyydellään.

— Tämmöinen kulku oli nyt osaltaan sen velkataakan korvausta,


jota hän tähän hetkeen saakka ei ollut tuntenut niin musertavan
raskaaksi.
Simon oli pakottanut hänet viimein huomaamaan, että hän oli
voimakkaampi kahdesta — voimakkaampi Kristiinaa itseään ja
voimakkaampi sitä miestä, jonka käsiin Kristiina oli itsensä uskonut.
Kristiina oli ymmärtänyt sen oikeastaan jo sillä hetkellä, jolloin he
kolme kohtasivat toisensa silmästä silmään tuossa häpeän paikassa
Oslossa, — vaikka hän ei ollut tahtonut sitä nähdä — että tuo
pyöreäposkinen, pyylevä lörppösuinen pojannulkki oli väkevämpi
kuin — —

Ja niin hän nyt kulki öistä tietään rohkenematta lausua kenenkään


hyvän pyhimyksen nimeä ja ottaen tunnolleen tämän synnin —
kostaakseenko — vai minkä tähden — siksi, että hänen oli täytynyt
tunnustaa Simon jaloluontoisemmaksi kuin he kaksi —.

Mutta nyt sinä myös ymmärrät, Simon — että kun on


kysymyksessä se, jota ihminen rakastaa enemmän kuin omaa
henkeään — tarttuu hän vaikka mihin —.

Kuu oli kiivennyt tunturiharjan takaa Kristiinan noustessa


kirkonmäkeä. Jälleen hänestä tuntui siltä kuin hänen olisi pitänyt
sukeltaa uuden kauhunaallon halki — kuunpaiste peitti kuin tiheä
hämähäkinverkko kirkon tervatun seinän; kirkko itse seisoi
kammottavana ja uhkaavan mustana tuon ohuen harson alla. Ensi
kerran hän näki nurmikummulla kirkon vieressä olevan ristin, mutta
ei uskaltanut mennä sen luokse tervehtimään tuota siunattua puuta.
Hän kömpi aidan yli siltä kohden, missä tiesi turpeen peittämän
kiviaidan matalimmaksi ja helppopääsyisimmäksi.

Siellä täällä kiilsi joku hautakivi veden lailla pitkässä, kasteisessa


ruohossa. Kristiina kulki suoraan tarhan läpi köyhien hautoja kohti
eteläisen aidan kupeessa.
Hän meni sinne, missä muuan köyhä paikkakunnalle muuttanut
vierasseutulainen lepäsi.

Tämä oli paleltunut tunturille eräänä talvena; hänen kaksi


äiditöntä tytärtään joutuivat kulkemaan huudolla talosta taloon,
kunnes Lauritsa Bjørgulfinpoika otti heidät luokseen Kristuksen
laupeuden tähden ja opetti heidät töihin. Kun nämä tulivat
täysikasvuisiksi ja olivat muuten siivoja tavoiltaan, oli Lauritsa
valinnut heille kummallekin kunnollisen, ahkeran miehen ja antanut
heille naittajaisiksi lehmän, vasikan ja lampaita, ja Ragnfrid antoi
sängyn sänkyvaatteineen ynnä rautapadan — nämä elivät nyt
toimeentulevina vaimoina säätynsä mukaisissa oloissa. Toinen oli
ollut Ramborgin palvelusneitona, ja Ramborg oli hänen lapsensa
sylikummi.

Anna siis minun ottaa kappale katostasi, Bjarne, Ramborgin


pojalle. Hän paneutui polvilleen ja veti tikarin tupestaan.

Jääkylmä hiki pusertui hänen otsaltaan ja ylähuulestaan kun hän


kaivoi sormensa kostean turpeen sisään. Se ei tahtonut irtaantua —
juuret pitelivät kiinni — hän katkaisi ne tikarillaan.

Vastalahjaksi täytyy manan hengen saada kolmen sukupolven


kautta perittyä kultaa taikka hopeaa. Kristiina veti sormestaan
pienen rubiineilla koristetun kultasormuksen, joka oli ollut hänen
isoäitinsä kihlasormus — lapsi on isäni jälkeläinen, hän ajatteli. Hän
työnsi sormuksen niin syvälle multaan kuin saattoi, kääri
turvekappaleen aivinaliinaan ja peitti paikan sammaleilla ja lehdillä.

Kun hän nousi seisomaan, vapisutti hänen jalkojaan niin että


hänen täytyi jäädä hetkeksi paikalleen ennen kuin hän saattoi
kääntyä. Jos hän nyt katsoisi kyynärpäänsä alle, näkisi hän heidät —.
Ja hän tunsi katseensa pyrkivän ihan väkisin sinne, aivan kuin
kuolleet olisivat tahtoneet pakottaa häntä tekemään niin. Kaikki nuo
vainajat, jotka hän oli tuntenut ennen. Sinäkö, Kristiina
Lauritsantytär, liikut täällä sellaisilla asioilla —? Arne Gyrdinpoika
lepäsi läntisen portin suussa. Niin, Arne, kai sinä ihmettelet — minä
en ollut sellainen siihen aikaan, kun me kaksi tunsimme toisemme
—.

Sitten hän kapusi taas muurin yli ja alkoi laskeutua rinnettä alas.

Kuu paistoi yli seudun. Jørundgaard kohosi aukealta — kaste


välkkyi kaikilla katoilla. Hän tuijotti sinne melkein tajuttomasti. Oli
kuin hän olisi ollut kuollut siltä kodilta ja kaikilta sen asujaimilta —
kuin sen ovi olisi iäksi sulkeutunut häneltä, joka nyt kulki näitä
yöllisiä teitä.

Tie kulki melkein koko matkan tunturin varjossa. Oli alkanut tuulla
navakammin — häntä vastaan puski tuulenpuuska toisensa jälkeen.
Ne lennättivät kuihtuneita lehtiä hänen päälleen tahtoen osoittaa
hänelle tietä takaisin sinne, mistä hän oli tullut viimeksi.

Eikä hän suinkaan kulkenut yksin. Hänen takaansa tieltä kuului


vähän väliä hiiviskelevää tassutusta. Sinäkö se olet, Arne —? Katso
taaksesi, Kristiina, koetti se houkutella, katso kyynärpääsi alle —!

Eikä hän kuitenkaan enää oikeastaan pelännyt. Hän oli vain


kylmissään ja tylsä ja olisi tahtonut vaipua maahan. Tämän yön
jälkeen hän ei varmaankaan pelkäisi mitään maailmassa —.

*****
Simon istui tavallisella paikallaan sängyn pääpuolessa lapsen yli
kumartuneena Kristiinan aukaistessa oven ja astuessa sisään.
Silmänräpäykseksi hän kohotti katseensa — Kristiina ajatteli,
mahtoiko hän itsekin olla yhtä kuluneen ja kurjan ja vanhan
näköinen tällä hetkellä. Sitten Simon painoi kasvonsa vielä alemma
ja kätki ne hihaa vasten.

Hän horjahti noustessaan paikaltaan ja käänsi kasvonsa toisaalle


kulkiessaan Kristiinan ohi ovea kohti, niska ja hartiat kyyryssä.

Kristiina sytytti kaksi kynttilää ja asetti ne pöydälle. Poika avasi


silmänsä kumman tiedottomasti, irvisti vähän ja koetti kääntää
päänsä pois valosta. Kun Kristiina oikaisi hänen ruumiinsa niin kuin
kuolleen jäsenet oikaistaan, ei hän yrittänyt muuttaa asentoa — hän
näytti olevan liian heikko liikahtamaan.

Sitten Kristiina peitti hänen kasvonsa ja rintansa aivinaliinalla ja


pani turvekaistaleen poikittain sen päälle.

Silloin pelko taas tulvahti häneen kuin meren laine.

Hänen täytyi istuutua sängyn viereen. Ikkuna oli aivan penkin


yläpuolella. Hän ei uskaltanut istua selin siihen — paras katsoa
saattajia silmiin, jos niitä seisoi ikkunan takana. Hän veti selkätuolin
sängyn ääreen ja kävi istumaan kasvot ikkunaan päin — yö
pakkautui sysimustana ruutua vasten, toinen kynttilöistä kuvastui
lasissa. Kristiina tuijotti siihen jäykin silmin, puristi tuolin nojapuita
niin että nivelet valkenivat, ja hänen käsivarsiaan värisytti vähän
väliä. Hänen jalkansa olivat aivan kuin kuolleet kylmästä ja
kosteudesta — hänen hampaansa kalisivat kauhusta ja vilusta, ja hiki
valui kuin jäinen vesi kasvoja ja selkää pitkin. Hän istui liikkumatta —
vilkaisi vain silloin tällöin salamannopeasti liinaan, joka kohosi ja laski
hiljaa lapsen hengityksen mukaan.

Vihdoinkin alkoi ruutu vaaleta. Kuului kukon kiekahdus. Sitten hän


kuuli ulkoa miesten ääniä, kun nämä menivät talliin.

Hän retkahti veltosti selkänojaa vasten, vapisi kuin kouristuksen


vallassa ja koetti päästä sellaiseen asentoon, etteivät hänen jalkansa
olisi nytkähdelleet niin kovasti. Silloin liikahti liina voimakkaammin —
Andres riuhtaisi sen silmiltään ja alkoi marista — hän oli jonkin
verran tajuissaan, sillä hän äyskähti vihaisesti Kristiinalle, kun tämä
kavahti pystyyn ja kumartui pojan yli.

Kristiina kiskaisi liinan turpeineen pois, syöksyi tukkimaan risuja ja


puita uunin suuhun ja heitti manaustarpeet räiskyvään tuleen. Mutta
sitten hänen täytyi nojautua seinään — kyyneleet virtasivat tulvien
hänen poskilleen.

Hän otti kauhalla maitoa pikku padasta, joka oli tulella, ja vei sen
lapselle — mutta Andres oli nukkunut uudestaan. Hän näytti
nukkuvan sikeää, tervettä unta.

Silloin hän joi maidon itse. Se maistui niin hyvältä että hänen
täytyi hörppiä kolme neljä kauhallista yhteen menoon.

Hän ei uskaltanut äännähtää — poika ei ollut sanonut vielä selvää


sanaa. Mutta hän vaipui polvilleen sängyn juureen ja saneli
mielessään äänettömästi:

Convertere, Domine, aliquantulum; et deprecare super


servos tuos. Ne ultra memineris iniqui- tatis nostrae: ecce
respice; populus tuus omnes nos —
[Palaa takaisin, Herra, rukoilkaamme sinun palvelijaisi puolesta.
Ps. 89. — Älä vihastu iankaikkisesti äläkä muistele pahoja
tekojamme; katso, mehän olemme kaikki sinun kansaasi. Es. 64.]

— Niin, niin, hän oli tehnyt hirveän teon.

Mutta Andres oli vanhempiensa ainoa poika. Hänellä, Kristiinalla,


oli seitsemän! Eikö hänen tullut tehdä voitavaansa sisarensa ainoan
pojan pelastamiseksi?

Kaikki, mitä hän oli ajatellut tänä yönä, oli vain yön houretta. Ei
hän ollut tehnyt tätä muun kuin sen vuoksi, ettei ollut voinut nähdä
tuon lapsen kuolevan käsiinsä.

Hän oli tehnyt sen Simonille — Simonille, joka ei koskaan ollut


pettänyt häntä. Hänelle, joka oli ollut uskollinen ja hyvä kaikille — ja
paras häntä ja hänen omiaan kohtaan. Simon rakasti tuota poikaa
niinkuin silmäteräänsä — eikö hänen siis ollut tehtävä kaikkensa
pojan hengen pelastamiseksi? Vaikka syntisin keinoin —.

Synti se oli, mutta rankaise, Jumala, siitä minua. Älä, Herra,


rankaise
Simonin ja Ramborgin pientä viatonta lasta —!

Hän meni sängyn luo, kumartui sen yli ja henkäisi pienelle


vahankeltaiselle kädelle. Suudella hän ei uskaltanut — poikaa ei
saanut herättää.

Puhdas ja viaton. — Hän oli oppinut tämän Aashild-rouvalta


kauhun öinä Haugenilla, kun he olivat jääneet sinne kahden —
Aashild-rouva oli kertonut hänelle käynnistään Konungahellen
hautuumaalla: "Se, Kristiina, on raskain teko, minkä olen ottanut
kantaakseni." — Mutta Bjørn Gunnarinpoika ei ollut mikään viaton
lapsi maatessaan sairaana, kun Aashild Gautentyttären serkut olivat
tunkeneet miekkansa liian lähelle hänen sydäntään. Hän oli
surmannut toisen heistä, eikä toisesta tullut enää täyttä miestä sen
jälkeen, kun hän oli ollut miekkasilla Bjørnin kanssa.

Kristiina seisoi ikkunan luona katsoen kartanolle. Palvelijat


liikkuivat talojen väliä päivän askareissa. Pihamaalla kulki pari pientä
hiehovasikkaa — ne olivat hyvin sieviä.

Pimeys kasvattaa niin monenmoisia mietteitä — ne ovat


merenpohjan kiehtovain hiuksenhienojen kasvien kaltaisia, jotka
keinuvat ja koukertelevat vedessä — viekoittelevina ja pelottavina
niin kauan kuin elävät omassa vetisessä maaperässään. Lasten
haroessa niitä veneeseen ne ovat vain limainen, ruskea vyyhti. Yössä
itävät niin monenmoiset oudot ajatukset, jotka kiehtovat ja
pelottavat. Veli Edvinin puheita se taisi olla tuo, etteivät kadotuksen
uhrit itse tahtoneet eritä tuskistaan — viha ja suru olivat heidän
nautintonsa — siksi Kristus ei voinut heitä pelastaa. Kristiinasta tuo
puhe oli kuulunut houreelta. Häntä värisytti, kun hän nyt alkoi
ymmärtää, mitä munkki oli tarkoittanut.

Hän kumartui jälleen vuoteen yli — veti henkeensä pikkulapsen


tuoksua. Simon ja Ramborg eivät kadottaisi lastaan. Mitäpä siitä, jos
näyttäisikin siltä, että hän oli tuntenut tarvetta kohota Simonin
silmissä — osoittaa tälle, että hän osasi muutakin kuin ottaa vastaan.
Hänen oli ollut pakko uskaltaa jotakin Simonin puolesta
vastapalvelukseksi.

Tämän jälkeen hän polvistui uudelleen ja saneli yhä uudelleen


psalttarin säkeitä.
*****

Sinä aamuna lähti Simon kylvämään talviruista äsken käännettyyn


lehdon eteläpuolella olevaan peltoon. Hän oli saanut päähänsä, että
hänen tuli näyttää siltä kuin hän toivoisi kaiken talossa käyvän
entistä latuaan. Palvelusnaiset olivat joutuneet ihmeisiinsä, kun hän
meni heidän luokseen ilmoittamaan, että Kristiina tahtoi olla yksin
pojan luona siihen asti kun hän lähettäisi heitä noutamaan. Simon oli
sanonut saman Ramborgille tämän herätessä — sanonut Kristiinan
pyytäneen, ettei kukaan tulisi rouvatupaan sinä päivänä.

"Etkö sinäkään mene?" kysyi Ramborg nopeasti, johon Simon


vastasi:

"En."

Mutta päivällisen jälkeen hän jäi kartanolle — hän ei voinut mennä


kauas talojen luota. Eikä häntä miellyttänyt Ramborgin ilme.
Päivällislevon jälkeen se laukesi. Simon seisoi vilja-aitan luona
nähdessään vaimonsa kiitävän pihan yli. Hän lähti juoksemaan
perästä — Ramborg paiskautui rouvatuvan ovea vasten, jyskytti sitä
nyrkeillänsä ja huusi niin että se kuului yli koko kartanon, että
Kristiinan oli avattava.

Simon tarttui häneen koettaen saada häntä järkiinsä. — Silloin


Ramborg kumartui salamannopeasti ja puri häntä käteen; Simon
näki, että Ramborg oli kuin hurjistunut villipeto:

"Se on minun lapseni! Mitä te olette tehneet minun pojalleni?"

"Eihän sinun sisaresi tee Andrekselle muuta kuin hyvää, tiedäthän


sinä sen", sanoi Simon; mutta kun hän tarttui uudelleen Ramborgin
vyötärykseen, tämä rimpuili vastaan huutaen.

"Tule nyt", sanoi mies silloin ankaralla äänellä: "Ramborg — etkö


häpeä — koko palvelusväen nähden —"

Mutta Ramborg kirkui yhä:

"Hän on minun lapseni. Et sinä ollut edes hänen luonaan, kun


minä synnytin hänet, Simon", hän huusi, "emme me silloin olleet niin
kalliit sinulle —."

"Tiedäthän sinä mikä minut siitä esti", vastasi mies väsyneesti.


Simon raastoi vaimonsa alas tupaa kohti, hänen täytyi käyttää
väkivaltaa.

Sen jälkeen hän ei uskaltanut poistua tämän luota. Ramborg


tyyntyi vähitellen, ja kun ilta tuli, hän taipui kokonaan, ja neidot
saivat riisua hänen vaatteensa.

Simon jäi valvomaan. Tyttäret nukkuivat omassa sängyssään,


palvelusnaiset hän oli lähettänyt ulos. Kerran kun hän nousi ja lähti
liikkeelle, kysyi Ramborg vuoteesta — hänen äänensä ei ollut yhtään
uninen — minne hän aikoi mennä.

"Arvelin paneutua hetkiseksi pitkäkseni sinun viereesi", vastasi


Simon tuokion kuluttua. Hän riisui päällystakin ja kengät ja kömpi
taljan ja villapeitteen väliin. Sitten hän kietoi kätensä vaimon
kaulaan: "Kyllä ymmärrän, että tämä päivä on ollut sinulle pitkä ja
raskas —"

"Sinun sydämesi lyö niin kiivaasti, Simon", sanoi vaimo hetken


kuluttua.
"Ymmärräthän sinä, että minäkin pelkään poikani puolesta. Mutta
meidän täytyy odottaa kärsivällisesti, kunnes Kristiina lähettää
sanan."

*****

Hän kavahti pystyyn tilaltaan — jäi kyynärpäänsä varaan — ja


tuijotti hämmentyneenä Kristiinan kalpeisiin kasvoihin — ne olivat
aivan hänen omiensa edessä välkkyen kyynelistä aamuhämärässä;
Kristiinan käsi oli hänen rinnallaan. Silmänräpäyksen hän uskoi, ettei
hän tällä kertaa ollut ainoastaan uneksinut. Hän viskautui takaisin
pielukselle peittäen tuskaisesti huudahtaen päänsä käsivarrellaan.
Hänen oli vaikea olla, niin kauheasti sydän takoi hänen rinnassaan,
niin raivoisan kiireesti ja kovasti.

"Simon, nouse ylös!" Kristiina pudisteli häntä jälleen. "Andres


huutaa isäänsä, etkö kuule — se on ensimmäinen sana, minkä hän
on sanonut —" Kristiinan kasvot hymyilivät, vaikka kyyneleet
virtasivat lakkaamatta.

Simon nousi istualleen ja pyyhkäisi kasvojaan muutaman kerran.


Ei kai poika siis ollut puhunut unissaan, koska Kristiina herätti hänet.
Hän katsoi Kristiinaan, joka seisoi siinä sängyn edessä lyhtyä
pidellen.

Hiljaa, jottei herättäisi Ramborgia, hän hiipi ulos Kristiinan perästä.


Ilkeä tunne oli yhä rinnassa. Hänestä tuntui kuin jokin olisi pyrkinyt
särkymään hänen sisällään — minkä tähden hän ei voinut päästä
näkemästä tätä kauheaa unta. Hän, joka valveilla ollessaan oli
kamppaillut kuin mieletön karkottaakseen kaikki sellaiset ajatukset
luotaan. Nukkuessaan, tahdottomana ja vastuuttomana, hän uneksi
sellaista, jonka itse sielunvihollinen varmaan pani hänen
nähtäväkseen — ja nytkin, kun Kristiina oli istunut valvomassa hänen
kuolemansairaan poikansa vieressä, hän uneksi taas kuin mielipuoli.

Ulkona satoi, eikä Kristiina oikein tiennyt, mikä aika yöstä oli. Poika
oli ollut puolihorroksissa, mutta ei ollut puhunut. Ja yöllä oli Andres
hänen mielestään nukkunut niin hyvin ja sikeästi, että Kristiinakin
uskalsi paneutua hiukan pitkäkseen Andreksen viereen tunteakseen
milloin poika liikahtaisi. Ja sitten hän oli vaipunut uneen.

Poika näytti niin pikkuruikkuiselta maatessaan yksin isossa


sängyssä, hän oli hirvittävän kalpea, mutta silmät olivat kirkkaat ja
kasvoille levisi hymy, kun hän huomasi isänsä. Simon laskeutui
polvilleen vuoteen eteen, mutta kun hän aikoi vetää tuon pienen
ruumiin vasten rintaansa, tarttui Kristiina häntä käsivarteen:

"Älä, älä, Simon, hän on hiestynyt ja täällä on kylmä", hän sanoi ja


veti peitteen paremmin Andreksen ympärille. "Käy sinä ennen hänen
viereensä — minä lähetän tänne jonkun palvelusnaisista valvomaan
— minä lähden alas tupaan ja käyn Ramborgin viereen —"

Simon kömpi peitteen alle. Siinä oli lämmin kuoppa sillä kohtaa,
missä Kristiina oli maannut, ja tyynyllä tuntui heikko makea hiusten
lemu. Simon päästi vaikeroivan äännähdyksen — sitten hän veti
pienen poikansa puoleensa ja painoi kasvonsa sen kosteita,
pehmeitä lapsenhiuksia vasten. Poika oli käynyt niin pieneksi, että
katosi aivan olemattomiin sylissä, mutta makasi siinä tyytyväisenä ja
virkkoi silloin tällöin jonkun lapsellisen sanan.

Sitten hän alkoi kopeloida ja nykiä isänsä paidan rinnusta, työnsi


pienen kylmän kätensä sen alle ja veti ulos bullan:

"Kukko", sanoi hän hyvillään, "sielläpä se oli —."


Sinä päivänä, jolloin Kristiina oli lähdössä kotiin, tuli Simon hänen
luokseen rouvatupaan ja ojensi hänelle pienen puisen lippaan:

"Tulin ajatelleeksi, että sinä kenties pitäisit tästä —"

Kristiina tunsi veistokoristeista, että se oli hänen isänsä työtä.


Sisällä oli aivan pieni hansikasnahan kappaleeseen kääritty kultasolki,
jossa oli smaragdeja. Hän tunsi sen heti — Lauritsa oli kantanut sitä
paidankauluksessaan ollessaan parhaimmassa juhla-asussa.

Kristiina kiitti Simonia, mutta lensi sitten hehkuvan punaiseksi. Hän


muisti äkkiä, ettei hän ollut nähnyt isänsä kantavan tätä korua sen
jälkeen, kun hän oli palannut kotiin Oslon luostarista.

"Milloin isäni antoi tämän sinulle —?" Samassa hän katui


kysymystään.

"Sain sen jäähyväislahjaksi kerran, kun lähdin kartanosta."

"Tämä on liian suuri lahja", sanoi Kristiina hiljaa ja katsoi maahan.

Simon hymyili ja vastasi:

"Sinä tarvitsisit paljon sellaisia, Kristiina — kun se aika joutuu,


jolloin sinun on lähetettävä poikasi maailmalle kihloineen —"

Kristiina katsoi häneen ja sanoi:

"Simon — minä tarkoitin siksi, että se on isäni peruja — tiedäthän,


että minä pidän sinusta aivan kuin olisit hänen oma poikansa —"

"Niinkö?" Simon sipaisi keveästi kämmenellään Kristiinan poskea ja


hymyili omituista lievää hymyä puhuessaan hänelle kuin lapselle:
"Niinhän se taitaa olla, Kristiina, olen huomannut sen —"
IV

Vähän myöhemmin syksyllä oli Simonilla asiaa veljensä luo Dyfriniin.


Hänen siellä ollessaan ilmestyi kosija Arngjerdille.

Asiaa ei vielä päätetty, ja Simonin mieli oli rauhaton ja epävakaa


hänen ratsastaessaan pohjoiseen. Ehkä hänen olisi pitänyt solmia
kauppa, jotta lapsi olisi ollut turvattu ja hän itse päässyt
huolehtimasta hänen tulevaisuudestaan. Ehkä Gyrd ja Helga olivat
oikeassa — hän oli ollut järjetön, kun ei ollut tarttunut tarjoukseen
molemmin kourin saadessaan näin hyvän kosijan tyttärelleen. Eiken
oli Formoa isompi kartano, ja Aasmund omisti siitä enemmän kuin
kolmannen osan; hän ei olisi ikinä kosinut pojalleen Arngjerdin
kaltaista halpasyntyistä neitoa, jonka äidinsuku oli vallan
tuntematon, ellei Simonilla olisi ollut panttina puolitoista auranalaa
kartanon maata. Heidän oli täytynyt lainata rahaa sekä Oslon
nunnilta että Dyfrinistä, kun Grunde Aasmundinpoika joutui toista
kertaa syypääksi miestappoon. Grunde oli hurja juovuspäissään —
mutta muuten hän oli oikeamielinen ja hyväntahtoinen mies,
vakuutti Gyrd, ja olisi varmasti taipunut Arngjerdin tapaisen järkevän
ja sävyisän naisen johdettavaksi.
Mutta Grunde ei ollut monta vuotta nuorempi häntä itseään. Ja
Arngjerd oli nuori. Ja Eikenin väki olisi tahtonut häät jo täksi
kevääksi.

Simonin mielessä heräsi ilkeä muisto — hän oli ajattelematta sitä


milloin suinkin vain pääsi ajattelemasta. Mutta Arngjerdin naimisen
jouduttua puheenalaiseksi se sukelsi yhä uudelleen esiin. Iloton mies
hän oli ollut herätessään ensimmäisenä aamuna Ramborgin vieressä.
Ei hän ollut suinkaan ollut villimpi ja kiimaisempi sänkyyn
käydessään kuin sulhasen tuli olla — vaikka hänen mieltään olikin
kiihottanut se, että hän oli nähnyt Kristiinan morsiusnaisten joukossa
— ja Erlendin, uuden lankonsa niiden miesten joukossa, jotka
saattoivat häntä ylistupaan. Ja herätessään aamulla ja katsoessaan
morsiantaan, joka vielä nukkui, hän oli tuntenut sydämessään aivan
kuin pistävän häpeän tunteen — hänestä tuntui kuin hän olisi
raiskannut lapsen.

— Vaikka hän tiesi, ettei hänen tarvinnut syyttää itseään siitä.

Ramborg oli nauranut avatessaan suuret silmänsä.

"Nyt sinä olet minun, Simon" — oli hän sanonut ja nyhkinyt


sormillaan hänen rintaansa. "Minun isäni on sinun isäsi ja minun
sisareni sinun sisaresi." — Simon oli joutunut kylmän hien valtaan
pelosta, että Ramborg tuntisi hänen sydämensä seisahtuvan näistä
sanoista.

Muuten hän kyllä oli tyytyväinen naimisiinsa, sen hän tunnusti


itselleen. Hänen vaimonsa oli rikas, mainiota sukua, nuori, terve,
kaunis ja hyvä. Hän oli synnyttänyt Simonille tyttären ja pojan — ja
sille ymmärtää semmoinen mies antaa arvoa, joka on elänyt
rikkauksien keskellä vailla lapsia, jotka olisivat pitäneet pesän koossa
vanhempien kuoltua. Heillä oli kaksi lasta — ja turvattu toimeentulo
— hän oli vieläkin niin rikas, että saattoi hommata Arngjerdille hyvän
naimakaupan.

Olisi hän tahtonut vielä toisen pojan — eikä olisi pannut vastaan,
vaikka Formoon olisi ilmestynyt useampiakin lapsia. Mutta Ramborg
oli hyvillään, kun hänen ei tarvinnut ryhtyä siihen puuhaan. Joten siis
näinkin oli hyvä. Sillä talon viihtyisyyteen vaikutti paljon Ramborgin
mieliala, sitä ei käynyt kieltäminen. Ja tällä olisi saattanut olla vähän
tasaisempi luonne. Simon ei aina tiennyt miten suhtautua
vaimoonsa. Ja talon hoidossakin, emännän tehtävissä, olisi voinut
olla parempi järjestys. Mutta eihän kukaan voi vaatia kaikkea mitä
toivoo. Näin Simon ajatteli kotiin ratsastaessaan.

Ramborg aikoi lähteä Krukeen Klemensin-messun edellisellä


viikolla — hän virkistyi aina, kun pääsi silloin tällöin pyörähtämään
muuanne.

Vaikka Herra tiesi miten asiat menestyisivät siellä tällä kertaa.


Sigridille oli tulossa jo kahdeksas lapsi. Ja Simon oli pelästynyt
käydessään sisaren luona paluumatkalla — Sigrid ei näyttänyt
kestävän enää liikoja.

Simon oli uhrannut neljä paksua vahakynttilää vanhalle Eyabun


Neitsyt Maarian kuvalle, jota sanottiin erittäin ihmeitätekeväksi, ja
luvannut kirkolle suuria lahjoja, jos Sigrid pääsisi hengissä ja täysin
terveenä synnytyksestään. Sillä hän ei saattanut ajatella, miten
Geirmundin ja kaikkien lasten kävisi, jos äiti kuolisi talosta — sitä oli
aivan mahdoton ajatella.

Sigrid ja Geirmund elivät hyvin hyvässä sovussa. Sigrid sanoi, ettei


hän ollut kuullut milloinkaan epäystävällistä sanaa miehensä suusta
ja ettei tämä ollut kertaakaan jättänyt tekemättä mitään, minkä tiesi
voivan ilahduttaa häntä. Huomatessaan Sigridin ikävöivän lasta,
jonka hän oli saanut nuoruudessaan Gjavvald Arnenpojalle, oli mies
antanut Simonin noutaa pojan heille, jotta äiti saisi nähdä hänet
luonaan vähän aikaa. Tuo hemmoteltu aikuislapsi oli kuitenkin
tuottanut vain surua ja pettymystä tulollaan taloon. Tämän jälkeen
oli Sigrid liittynyt mieheensä ja tälle synnyttämiinsä lapsiin kuten
köyhä sairas syntinen liittyy pappiin syntejään tunnustaessaan.

Hän oli tavallaan iloinenkin nykyään. Eikä Simon ihmetellyt sitä,


sillä harvan miehen rinnalla saattoi olla niin hyvä elää kuin
Geirmundin. Hänellä oli niin kaunis äänikin, että vaikkei hän olisi
puhunut sen kummemmasta kuin kavionkuivetusta potevasta
hevosestaan, se kuului aivan kuin harpunsoitolta.

Rumat ja oudonnäköiset kasvot oli Geirmund Hersteinin pojalla


ollut aina, mutta hän oli ollut varreltaan vahva ja kaunisrakenteinen
ja oivallinen jousimies, eränkävijä ja taitava asemies. Mutta kolme
vuotta sitten hän oli tullut rammaksi — hän oli saapunut kerran
ryömimällä laaksoon eräältä pyyntiretkeltä, hinautuen eteenpäin
käsineen ja toisen polven avulla — toinen jalka oli laahannut
murskattuna perässä. Hän ei voinut nyt kulkea tuvan lattiankaan yli
ilman sauvaansa eikä nousta hevosen selkään tai katsastaa mäkisiä
maitaan ilman toisen apua. Onnettomuus oli seurannut häntä
alinomaa, hän oli yksinään pysyvä ja omituinen eikä ymmärtänyt
katsoa kartanonsa menestystä; häntä saattoi myös puijata kaupoissa
ja asioissa niin paljon kuin halusi. Mutta hän oli kätevä, osasi veistää
ja takoa ja puhui viisaasti ja kauniisti. Ja kun tuo mies sai harpun
käsiinsä, täytyi ihmisten itkeä tai nauraa, sen mukaan mitä Geirmund
soitti ja lauloi. Oli melkein kuin olisi kuunnellut tuota ritaria, josta
Geirmund lauloi — joka oli laulanut lehdet lehmuksesta ja sarvet
lehmikarjan päästä.

Vanhimmat lapset yhtyivät kertosäkeeseen ja lauloivat isänsä


kanssa — ja se kuului kauniimmalta kuin kaikki Hamarin kirkonkellot
yhtaikaa soidessaan. Lähinnä nuorin lapsi Inga, joka osasi kävellä
pitämällä kiinni penkin laidasta, mutta ei vielä tapaillut sanoja, hyräili
ja lauleli päivät päästään, ja tuo pieni ääni oli niin vieno ja heljä kuin
hopeatiuku.

He asuivat yhteen ahtautuneina pienessä vanhassa nokisessa


pirtissä — isäntäväki, lapset ja palvelijat. Parvi, jonka rakentamisesta
Geirmund oli puhunut monet vuodet, jäisi kai rakentamatta — hän
oli tuskin saanut pystyyn uuden vajan viime vuonna palaneen sijaan.
Mutta vanhemmat eivät hennoneet erota yhdestäkään lapsestaan.
Simon oli joka kerran Krukessa käydessään tarjoutunut ottamaan
kasvatettavakseen jonkun heistä — Geirmund ja Sigrid kiittivät,
mutta eivät luopuneet omistaan.

Sigrid oli ehkä sittenkin se hänen sisaruksistaan, jolle oli käynyt


parhaiten maailmassa, ajatteli Simon väliin. Gyrd kertoi tosin Astridin
olevan tyytyväisen uuteen mieheensä — he asuivat kaukana etelässä
Ryfylken läänissä, eikä Simon ollut nähnyt heitä häiden jälkeen.
Mutta Torgriminpojat riitelivät isäpuolen kanssa, sanoi Gyrd.

Ja Gudmund oli hyvin iloinen ja tyytyväinen. Mutta jos sellainen oli


miehen onnea, kiitti Simon Jumalaa, ettei heidän isänsä ollut sitä
näkemässä. Heti kun sopivaisuus salli Andres Darren kuoleman
jälkeen, oli Gudmund viettänyt häitä tuon leskinaisen kanssa, josta
isä ei ollut tahtonut kuulla puhuttavankaan. Dyfrinin ritari tuumi, että
kun hän oli valinnut kahdelle vanhimmalle pojalleen, Gyrdille ja
Simonille, nuoret, rikkaat, kauniit morsiamet hyvästä, kunniallisesta
suvusta, eikä siitä ollut koitunut näille kehuttavaa onnea, niin sula
kurjuus Gudmundia odottaisi, jos hän saisi tehdä järjettömän
mielihalunsa mukaan. Tordis Bergintytär oli paljon vanhempi kuin
Gudmund ja kohtalaisen varakas, eikä hänellä ollut lapsia
ensimmäisestä aviostaan. Mutta myöhemmin hän oli saanut tytön
eräälle Oslosta olevalle Maariankirkon papille, ja ihmiset sanoivat
hänen olleen liian suopean muutamille toisillekin miehille —
Gudmund Darrelle muiden muassa heti tähän tutustuttuaan. Tordis
oli Simonin mielestä ruma kuin noita, ja lisäksi säädytön ja karkea —
mutta hän oli sukkelakielinen ja terävä, ymmärtäväinen ja
hyväluontoinen — hän olisi itsekin voinut pitää Tordiksesta, jollei
tämä olisi joutunut heidän sukuunsa. Mutta Gudmund höystyi niin,
että sitä oli ilkeä nähdä; hän oli pian yhtä iso ja vahva kuin Simon
itse — eikä se kuulunut Gudmundin luontoon; hän oli ollut hoikka ja
kaunis nuoruudessaan. Hänestä oli tullut niin veltto ja laiska, että
Simonin olisi tehnyt mieli antaa selkään pojalle joka kerran kun näki
tämän. Vihoviimeinen nauta Gudmund oli ollut koko ikänsä, se oli
totta — ja oli toki onni onnettomuudessa, että lapset saivat äitinsä
älyn, joskin perivät isänsä ulkonäön. Mutta Gudmund oli tyytyväinen
elämäänsä —.

Ei hänen siis olisi tarvinnut harmitella tuon veljen takia niin


suuresti. Ja tavallaan oli tarpeetonta sekin, että hän sääli Gyrdiä.
Mutta joka kerran kun hän meni isänkotiinsa ja näki miten siellä asiat
olivat, se jäi vaivaamaan häntä niin, että oikein sydäntä kivisti talosta
palatessa.

Varallisuus kasvoi — veljen lankomies, Ulf Saksenpoika, oli


kuninkaan armossa ja suosiossa, ja hän veti Gyrd Andreksenpojan
mukanaan niiden miesten piiriin, joilla oli suurin valta ja rikkaus
tässä maassa. Mutta Simon ei pitänyt tuosta miehestä — tuskinpa
Gyrdkään piti. Vastahakoisesti ja ilottomasti astui Gyrd, Dyfrinin
herra, tietä, jolle hänen vaimonsa ja tämän veli tyrkyttivät — hän
teki sen kotirauhan vuoksi.

Helga Saksentytär oli noita —. Mutta Gyrdin molemmat pojat ne


kai suurimmaksi osaksi vaikuttivat siihen, että hän näytti niin
läpeensä kiusaantuneelta. Sakse, vanhin, oli kuudentoista korvilla.
Melkein joka ilta täytyi palvelijan auttaa tuo nulikka sänkyyn —
sikahumalassa. Hän oli varmaan menettänyt järkensä ja terveytensä
juopottelemalla — ihan hän joisi itsensä hengiltä ennen kuin ehtisi
miehuusikään. Eikä tuo tainnut olla suuri vahinko — Saksella oli
huono maine, vaikka hän oli vasta niin nuori; hänen raakuutensa ja
hurjuutensa olivat tunnetut koko seudulla. Hän oli äidin suosikki;
Gyrd piti enemmän nuoremmasta, Jon nimisestä. Hän olisikin ollut
paremmin omiaan tuottamaan kunniaa suvulleen, ellei hän olisi ollut
hiukan korkeahartiainen ja käyräselkäinen. Ja sitten hänellä oli jokin
sisusvika vatsassa — hän ei sietänyt muuta kuin velliä ja ohkoleipää.

*****

Yhteistunnosta sukunsa kanssa oli Simon Andreksenpoika aina


saanut salaisesti lohtua, milloin hänen oma elämänsä tuntui hänestä
jotenkin hankalalta. Hänen omat vastuksensa eivät vaivanneet häntä
niinkään, kun hän vain tiesi sisarustensa menestyvän. Ja jos
Dyfrinissä olisi ollut samanlaista kuin isän aikana — jolloin siellä
vallitsi rauha, tyytyväisyys ja hyvinvointi — olisi se Simonin mielestä
helpottanut paljon hänen kalvavaa levottomuuttaan. Hänestä tuntui
kuin hänen omat elinjuurensa olisivat olleet kietoutuneet sisarusten
juuriin jossakin syvällä mullan ja pimeyden sisässä. Joka isku, joka
kohtasi jotakuta heistä, paha, joka jäyti jonkun ydintä, tuntui myös
toisissa.
Niin oli ollut laita esimerkiksi Gyrdin ja hänen — ainakin ennen.
Nyt hän ei enää tiennyt, tunsiko Gyrd samaa.

Vanhimmasta veljestä — ja Sigridistä — oli hän pitänyt eniten. Hän


muisti miten hän poikavuosinaan oli voinut istua katsellen nuorinta
sisartaan, kunnes oli joutunut sellaisen mielihyvän valtaan, että
hänen oli täytynyt tehdä jotakin sitä osoittaakseen. Ja niin hän oli
törmännyt sisarensa kimppuun, kiusannut ja härnäillyt tätä, vetänyt
tätä tukasta, nipistänyt käsivarteen — hänestä tuntui näet, ettei hän
voinut ilmaista rakkauttaan toisella tapaa joutumatta hämilleen.
Kiusanteko oli välttämätöntä, muuten hän ei olisi nolostumatta
voinut antaa sisarelleen kätkemiään herkkuja ja kutsua häntä
leikkeihinsä laittaessaan myllyjä puroon, rakentaessaan taloja ja
tarhoja ja vuollessaan pajupillejä tytöille kevääksi.

Kuin poltinraudalla piirrettynä säilyi hänen muistissaan päivä,


jolloin hän oli saanut kuulla sisaren onnettomuudesta. Kaiken talvea
hän oli nähnyt Sigridin surevan menehtyäkseen sulhasvainajaansa —
muuta Simon ei ollut ymmärtänyt. Kunnes tuli eräs pyhäpäivä
kevätpuoleen — hän oli seisonut Mandvikin parvensolassa
kiukuissaan naisten viipymisestä — miehet olivat odottaneet jo
kauan pihamaalla pidellen kirkkomatkalle satuloituja hevosia. Viimein
hän suuttui ja meni naisten tupaan. Sigrid oli vielä vuoteessa —
Simon kysyi kummastellen, oliko sisko sairas. Simonin vaimo istui
sängynlaidalla — tämän lempeillä, kuihtuneilla kasvoilla kävi hiljainen
väristys, kun hän nosti katseensa ja sanoi: "On hän sairaskin,
lapsiraukka, — mutta vielä enemmän hän pelkää, luullakseni — sinua
— ja toisia omaisiaan — mitä te tulette sanomaan —".

Sisar oli parahtanut, heittäytynyt suinpäin Halfridin syliin ja


puristautunut tähän kietoen laihat, paljaat käsivarret kälynsä vyölle.
Parahdus oli koskenut Simoniin niin, että hänen sydämensä aukeni ja
jäi verettömäksi. Sisaren suru, sisaren häpeä kaivautui hänen
rintaansa niin, ettei hän ollut tuntea itseään — sitten tuli pelko, joka
sai hänet hiestymään. Mitä heidän isänsä oli tekevä Sigridille?

Simon oli niin peloissaan rämpiessään Raumarikeen pahimmassa


kelirikossa, että mies, joka oli hänen kanssaan ja jolla ei ollut paljon
ymmärrystä, viimein rupesi laskemaan leikkiä hänen taajoista
toimituksistaan puiden takana. Hän oli ollut jo pitkän aikaa täysi,
nainut mies, mutta pelkäsi nyt niin kauheasti ajatellessaan tulevaa
kohtausta isän kanssa, että hänen täytyi nousta hevosen selästä.

Isä ei ollut sanonut juuri mitään. Mutta hän oli lysähtänyt kokoon
kuin juureen iskettynä. Saattoi vieläkin tapahtua joskus, kun Simonia
pyrki nukuttamaan liian kauan aamulla, että hän näki edessään tuon
näyn ja heräsi samassa täysin selkeäksi. Isä istui kyyryssä pää rintaa
vasten ja Gyrd seisoi käsi istuimen käsipuulla, hiukan tavallista
kalpeampana, maahan luoduin silmin.

"Jumalan kiitos, ettei hän ollut täällä, kun se tuli ilmi. Hyvä, että
hän on sinun ja Halfridin luona", oli Gyrd sanonut heidän jäätyään
kahden kesken.

Tämä oli ainoa kerta, jolloin Simon oli kuullut Gyrdin kiittävän
toista naista enemmän kuin omaa vaimoaan.

Mutta hän oli nähnyt, miten Gyrd sittenkin aivan kuin kuihtui ja
painui pieneksi jouduttuaan naimisiin Helga Saksentyttären kanssa.

Siihen aikaan kun hän oli ollut sulhasmies — Gyrd ei itse puhunut
paljon omista asioistaan, mutta Simon oli nähnyt kaiken — oli hän
ollut niin säteilevän kaunis kasvoiltaan, että Simonista aivan tuntui
oudolta. Gyrd oli kertonut nähneensä Helgan jo aikaisemmin, mutta
sanoi, ettei hän ollut koskaan puhunut tämän kanssa eikä voinut
ajatella, että tämän rikkaat sukulaiset antaisivat niin rikkaan ja
kauniin morsiamen hänelle.

Simon oli tuntenut Gyrd Darren nuoruudenaikaisen erikoisen


kauneuden ikään kuin kunniaksi itselleen. Hän oli kaunis mieltä
ilahduttavalla tavalla — oli kuin kaikkien olisi pitänyt tuntea, että
tuossa hienossa ja hiljaisessa nuoressa miehessä asui hyvyys, ylevä
mieli, rohkea ja jalo sydän. Niin hän sitten joutui Helga
Saksentyttären mieheksi — ja siihen hän näytti hupenevan —.

Harvasanainen hän oli ollut ennenkin — mutta veljekset olivat


olleet aina yhdessä, ja Simon puhui tarpeeksi molempien puolesta.
Simon oli sukkelasuinen, häntä pidettiin hyväpäisenä ja hän oli hyvä
juomingeissa ja leikinlaskussa, metsällä ja kilpa-ajossa. Kaikissa
nuorison huvitteluissa oli Simonilla ystäviä kosolta, kaikki yhtä hyviä
ja läheisiä. Vanhin veli oli muassa — hän sanoi vähän, mutta hymyili
kaunista, vakavaa hymyään, ja se vähä, minkä hän sanoi, oli ikään
kuin erikoisen painokasta.

Nyt oli Gyrd Andreksenpoika äänetön kuin lukittu arkku.

Sinä kesänä, jolloin Simon oli palannut kotiin ja sanonut isälleen,


että he olivat sopineet Kristiina Lauritsantyttären kanssa siitä, että
heitä koskeva sopimus rikottaisiin, hän oli tuntenut Gyrdin
ymmärtäneen koko asian kulun: että Simon oli pitänyt
morsiamestaan, että hänellä oli jokin syy, jonka tähden hän oli
valmis luopumaan oikeudestaan ja että tuo syy oli senlaatuinen, että
se kirveli Simonin mieltä. Gyrd oli pyytänyt hiljaa isän antamaan
asian raueta. Mutta Simonille hän ei ollut koskaan hiiskunut halaistua
sanaa siitä, että hän ymmärsi. Ja Simon tunsi, että jos oli
mahdollista pitää veljestä enemmän kuin hän jo piti, sai sen aikaan
Gyrdin vaitiolo.

Simon tahtoi olla iloinen ja reipas ratsastaessaan kotiin pohjoista


kohti. Tien varrella hän keksi aina jotakin asiaa tuttujen luokse, joita
asui pitkin laakson vartta, ja hän käväisi kartanossa, joi ja laski
leikkiä — ja ystävät satuloivat hevosensa ja saattoivat häntä
seuraavaan taloon, jossa heidän tovereitaan asui. Oli niin keveää
ratsastaa nyt kuuran aikaan.

Viimeisen taipaleen hän ratsasti hämärässä. Oluthumala oli


haihtunut. Hänen asepalvelijansa olivat vallattomia ja kovaäänisiä —
mutta isäntä näkyi käyttäneen jo loppuun koko nauru- ja
leikinlaskuvarastonsa — hän oli kai väsynyt.

Sitten hän tuli kotiin. Andres tallusti jäljestä joka paikkaan minne
isä meni. Ulvhild pyöriskeli satulan ympärillä tutkien, oliko isä tuonut
hänelle tuomisia. Arngjerd kantoi esiin olutta ja ruokaa, kartanon
emäntä istuutui viereen hänen syödessään, tarinoi ja kysyi uutta.
Lasten mentyä levolle otti Simon Ramborgin polvelleen, kertoi
terveiset ja tuttujen ja sukulaisten kuulumiset.

Hänestä olisi ollut häpeällistä ja miehuutonta, jollei hän olisi ollut


tyytyväinen oloihinsa.

*****

Seuraavana päivänä Simonin istuessa Sæmundin tuvassa toi


Arngjerd sinne ruokaa hänelle. Simon ajatteli, että samapa tuo taisi
olla vaikka puhuisi Arngjerdille heti kosijasta, kun he nyt olivat
kahden, ja niin hän kertoi tyttärelleen mitä oli keskusteltu Eikenin
miesten kanssa.
Totta on, ettei Arngjerd ole kaunis, ajatteli isä — hän katsoi
nuoreen tyttöön tämän seisoessa hänen edessään. Arngjerd oli lyhyt
ja leveärakenteinen, ja kasvot olivat matalat, karkeat ja
huonoväriset; likaisenkellertävä tukka oli epätasainen; se riippui
kahtena paksuna palmikkona selkää pitkin, mutta otsalla se
hajaantui ja tahtoi työntyä silmille, ja hänelle oli tullut tavaksi
pyyhkiä sitä syrjään alinomaa.

"Käyköön kuten te tahdotte, isä", sanoi hän yksivakaisesti Simonin


puhuttua loppuun.

"Tiedän, että sinä olet hyvä lapsi, mutta mitä itse arvelet asiasta?"

"En arvele sitä enkä tätä omasta puolestani. Päättäkää te, rakas
isä."

"Asia on niin, Arngjerd, että mielelläni soisin sinun kulkevan


vapaana vielä jonkun vuoden — vapaana lapsista ja huolista ja
edesvastuusta — kaikesta tuosta mikä joutuu naisen eteen naimisiin
mentyä. Mutta ehkäpä sinä toivot omille oloillesi ja itsenäiseksi
emännäksi —?"

"Minun takiani on turha kiirehtiä", sanoi tyttö vetäen suutaan


hymyyn.

"Jos sinä joutuisit Eikeniin vaimoksi, olisivat rikkaat sukulaisesi


aivan vieressäsi — paljas on veljetön pohja", sanoi Simon ja lisäsi
nopeasti ja hiukan hämillään huomatessaan Arngjerdin silmissä
salaisen pienen rävähdyksen: "Tarkoitin Gyrdiä, setääsi."

"Ymmärrän, ettette tarkoittanut sukulaistani Helgaa", vastasi


Arngjerd, ja sitten molemmat nauroivat.
Simonin mieli lämpeni kiitollisuudesta Jumalaa ja Neitsyt Maariaa
ja
Halfridia kohtaan, joka oli saanut hänet tunnustamaan tämän lapsen.
Kun he joutuivat nauramaan yhdessä, kuten nyt, hän ei tarvinnut
muuta
todistusta isyydestään.

Simon nousi ja pudisti Arngjerdin hihasta jauhoa, joka oli tarttunut


siihen. "Entäs sulhanen — mitä hänestä pidät?" kysyi isä.

"Kyllä minä pidän hänestä, minkä häntä olen nähnyt — eihän sitä
tarvitse uskoa kaikkia puheita —. Mutta päättäkää te, isä —"

"Olkoon siis niin kuin minä olen sanonut. Aasmund ja Grunde


odottakoot jonkun aikaa, ja jos he sitten vielä pysyvät
tarjouksessaan, kun sinä olet tullut vähän vanhemmaksi, niin —.
Mutta sinun tulee tietää, tyttäreni, että saat itse päättää
naimisestasi, jos vähääkään ymmärrät omaa parastasi. Ja onhan
sinulla ymmärrystä, Arngjerd —"

Simon otti häntä vyötäisiltä. Tytär punastui isän suudellessa häntä


— ja Simon muisti, että taisi olla pitkä aika siitä, kun hän viimeksi oli
tehnyt näin. Muuten hän ei ollut niitä miehiä, jotka olisivat pelänneet
pyöräyttää vaimoaan vyötäisistä ja peuhata lastensa kanssa. Mutta
se tapahtui aina kuin leikillä — ja Arngjerd —. Simon tuli äkkiä
ajatelleeksi, että tämä nuori tytär oli varmaan ainoa ihminen
Formossa, jonka kanssa hän joskus saattoi puhua vakavasti.

*****

Hän nousi, veti tukon pois eteläseinässä olevasta kolosta ja katsoi


tuon pienen aukon kautta laaksoon. Ilmassa tuntui etelätuulen
henki, ja suuria harmaita pilviä vyöryi alhaalta, missä tunturit
yhtyivät sulkien näköpiirin. Kun auringonsäde pääsi niiden läpi,
loistivat kaikki värit sanomattoman kirkkaina. Suojailma oli nuollut
pois harmaan kuuran — maat olivat jälleen ruskeat ja kuusimetsä
mustansininen — ja ylinnä kukkuloilla, missä paljaiden kallioiden
jäkälä ja sammal-alue alkoi, paistoi valo kullankarvaisena.

Simonista tuntui kuin hän olisi saanut outoa voimaa syystuulen ja


laakson vaihtuvan valon tarkkaamisesta. Jos nyt tuli oikea
Helkamessun-suoja, saataisiin myllyvettä jokiin ainakin jouluun asti.
Ja silloin hän voi lähettää miehet tunturille keräämään sammalta. Oli
ollut niin kuiva syksy — Laagenin vesi virtasi vähiin kuivuneena ja
matalana keltaisen hiekan ja kalpeiden kivien välissä.

Täällä pohjoislaaksossa oli vain Jørundgaardilla ja pappilalla oma


mylly joessa. Hän ei halunnut jauhattaa heidän myllyissänsä — sinne
veisi jo muutenkin koko laakso viljansa jauhettavaksi. Sillä Sira Eirik
otti myllyveroa. Ja ihmisten mielestä hän sai liian tarkan selon
heidän viljoistansa — hän oli hyvin ahne kymmenysten
keräämisessä. Lauritsa oli aina antanut kaikkien jauhaa myllyssään
maksuttomasti, ja Kristiina tahtoi, että tuo tapa säilyisi edelleen.

Kun hänen ajatuksensa vain hipaisivatkin Kristiinaa, alkoi hänen


sydämensä väristä kipeästi ja jännittyneesti.

Oli Simonin- ja Judaksenmessun aattopäivä; silloin hänen oli aina


ollut tapana käydä synnintunnustuksella. Itseään tutkiakseen,
paastotakseen ja rukoillakseen hän nytkin istui tässä Sæmundin-
tuvassa, miesten puidessa viljaa.

Pian hän syntinsä muisti — hän oli kironnut, valhetellut, kun


ihmiset kysyivät semmoista, joka ei heihin kuulunut, ja ajanut hirveä
vielä kauan sen jälkeen, kun oli nähnyt auringon asemesta
lauantaipyhän alkaneen, sekä metsästellyt sunnuntai-aamuna, kun
laakson kansa oli messussa.

Siitä, mitä oli tapahtunut nyt viimeksi pojan ollessa sairaana, ei


hän uskaltanut mainita. Ensi kertaa elämässään hän nyt, joskin
vastahakoisesti, salasi tietyn synnin rippi-isältään.

Hän oli pohtinut asiaa paljon ja kärsinyt siitä sydämessään. Se taisi


kuulua pääsynteihin — hän oli harjoittanut noituutta tai suorastaan
houkutellut toisen siihen —.

Ei hän osannut sitä katuakaan — ajatellessaan, että ilman sitä olisi


hänen poikansa luultavasti maannut maan povessa nyt. Mutta hän
oli peloissaan ja masentunut — ja koetti saada selville, oliko lapsi
muuttunut siitä. Ei hän ollut voinut huomata mitään erikoista —.

Hän tiesi monille linnuille ja villeille eläimille saattavan käydä niin,


että jos ihmiskäsi oli liikutellut niiden munia tai poikasia, eivät
vanhemmat enää huolineet niitä omikseen, vaan hylkäsivät
jälkeläisensä. Ihminen, joka oli saanut järjen lahjan Jumalalta, ei
voinut tehdä siten ja hänelle oli ennemminkin käynyt niin, että kun
hän nyt koski poikaansa, tuntui hänestä siltä kuin hän ei olisi
uskaltanut laskea tätä enää käsistään, niin araksi hän oli tullut
Andreksen suhteen. Mutta samalla hän tajusi miksi kastamattomat,
järjettömät luontokappaleet tunsivat sellaista kauhua poikasiaan
kohtaan, kun niitä oli liikuteltu. Hänestäkin tuntui siltä kuin hänen
lapsensa olisi ollut jollakin tapaa saastutettu.

Mutta sittenkään hän ei katunut — eikä toivonut sitä


tapahtumattomaksi. Hän toivoi vain, että sen olisi toimittanut joku
toinen eikä Kristiina.
— Arngjerd tuli sisään — hän kysyi erästä avainta: Ramborg luuli
sen jääneen Simonille viime käyttämisen jälkeen.

Talousasiat menivät yhä enemmän sekaisin. Simon muisti, että


hän oli antanut avaimen takaisin vaimolleen; se oli tapahtunut jo
ennen hänen lähtöään etelään. Kaipa minä sitten sen löydän, tuumi
Arngjerd.

Hän hymyili niin kauniisti — ja hänellä oli viisaat silmät — ei hän


ollut niin rumakaan sentään, ajatteli isä. Ja Arngjerdin tukka oli
kaunis, kun hän levitti sen hajalleen juhlina ja pyhinä; se oli vaalea
ja paksu.

Erlendin äpärätytär oli ollut kaunis — siitä lähti koko tuosta


kauneudesta pelkkää onnettomuutta.

Mutta Erlendin tyttären äiti oli ollut kaunis ja korkeasukuinen


nainen. Erlend ei varmaan olisi vilkaissutkaan Arngjerdin äidin
kaltaiseen ihmiseen. Erlend oli astunut ylpeänä rataansa maailmassa
— ja ihanat ylhäiset rouvat ja neidot olivat seisoneet rivissä tarjoten
hänelle lempeä ja seikkailuja.

Hänen oma ainoa tämänlaatuinen syntinsä — kuninkaan kartanon


aikaisia poikamaisia kepposia hän ei laskenut miksikään — olisi
voinut olla loistavampi, kun hän kerran oli joutunut loukkaamaan
hyvää ja arvokasta vaimoaan. Ei hän ollut katsonut liikoja koko
Jorunnia — hän ei edes muistanut, miten hän ensin oli joutunut liian
lähelle tätä. Hän oli liikkunut paljon ystävien ja tuttavien luona sinä
talvena, ja kun hän palasi vaimonsa taloon, istui neito odottamassa
ja katsoi, että hän pääsi sänkyyn tuottamatta tulenvaaraa.

Sen kummempi se seikkailu ei ollut.

You might also like