Beginning Python - James Payne - E-Book

Beginning Python E-Book

James Payne

0,0
27,99 €

oder
-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.
Mehr erfahren.
Beschreibung

Beginning Python: Using Python 2.6 and Python 3.1 introduces this open source, portable, interpreted, object-oriented programming language that combines remarkable power with clear syntax. This book enables you to quickly create robust, reliable, and reusable Python applications by teaching the basics so you can quickly develop Web and scientific applications, incorporate databases, and master systems tasks on various operating systems, including Linux, MAC OS, and Windows. You'll get a comprehensive tutorial that guides you from writing simple, basic Python scripts all the way through complex concepts, and also features a reference of the standard modules with examples illustrating how to implement features in the various modules. Plus, the book covers using Python in specific program development domains, such as XML, databases, scientific applications, network programming, and Web development.

Das E-Book können Sie in Legimi-Apps oder einer beliebigen App lesen, die das folgende Format unterstützen:

EPUB

Veröffentlichungsjahr: 2011

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Beginning Python®: Using Python 2.6 and Python 3.1

Published by

Wiley Publishing, Inc.

10475 Crosspoint Boulevard

Indianapolis, IN 46256

www.wiley.com

Copyright © 2010 by Wiley Publishing, Inc., Indianapolis, Indiana

Published simultaneously in Canada

ISBN: 978-0-470-41463-7

No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, except as permitted under Sections 107 or 108 of the 1976 United States Copyright Act, without either the prior written permission of the Publisher, or authorization through payment of the appropriate per-copy fee to the Copyright Clearance Center, 222 Rosewood Drive, Danvers, MA 01923, (978) 750-8400, fax (978) 646-8600. Requests to the Publisher for permission should be addressed to the Permissions Department, John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, (201) 748-6011, fax (201) 748-6008, or online at http://www.wiley.com/go/permissions.

Limit of Liability/Disclaimer of Warranty: The publisher and the author make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation warranties of fitness for a particular purpose. No warranty may be created or extended by sales or promotional materials. The advice and strategies contained herein may not be suitable for every situation. This work is sold with the understanding that the publisher is not engaged in rendering legal, accounting, or other professional services. If professional assistance is required, the services of a competent professional person should be sought. Neither the publisher nor the author shall be liable for damages arising here from. The fact that an organization or Web site is referred to in this work as a citation and/or a potential source of further information does not mean that the author or the publisher endorses the information the organization or Web site may provide or recommendations it may make. Further, readers should be aware that Internet Web sites listed in this work may have changed or disappeared between when this work was written and when it is read.

For general information on our other products and services please contact our Customer Care Department within the United States at (877) 762-2974, outside the United States at (317) 572-3993 or fax (317) 572-4002.

Wiley also publishes its books in a variety of electronic formats. Some content that appears in print may not be available in electronic books.

Library of Congress Control Number: 2009936814

Trademarks: Wiley, the Wiley logo, Wrox, the Wrox logo, Wrox Programmer to Programmer, and related trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries, and may not be used without written permission. Python is a registered trademark of Python Software Foundation. All other trademarks are the property of their respective owners. Wiley Publishing, Inc. is not associated with any product or vendor mentioned in this book.

Contents

About the Author

Credits

Acknowledgments

Introduction

Part I: Dipping Your Toe into Python

Chapter 1: Programming Basics and Strings

How Programming is Different from Using a Computer

The First Steps

Beginning to Use Python — Strings

Putting Two Strings Together

Putting Strings Together in Different Ways

Summary

Exercises

Chapter 2: Numbers and Operators

Different Kinds of Numbers

Program Files

Using Numbers

Summary

Exercises

Chapter 3: Variables — Names for Values

Referring to Data — Using Names for Data

Using More Built-in Types

Other Common Sequence Properties

Summary

Exercises

Part II: Python Language and the Standard Library

Chapter 4: Making Decisions

Comparing Values — Are They the Same?

Doing the Opposite — Not Equal

Comparing Values — Which One Is More?

Reversing True and False

Looking for the Results of More Than One Comparison

Repetition

Handling Errors

Summary

Exercises

Chapter 5: Functions

Putting Your Program into Its Own File

Functions: Grouping Code under a Name

Layers of Functions

Summary

Exercises

Chapter 6: Classes and Objects

Thinking About Programming

Defining a Class

Summary

Exercises

Chapter 7: Organizing Programs

Modules

Packages

Modules and Packages

Basics of Testing Your Modules and Packages

Summary

Exercises

Chapter 8: Files and Directories

File Objects

Paths and Directories

Exceptions in os

Summary

Exercises

Chapter 9: Other Features of the Language

Lambda and Filter: Short Anonymous Functions

Map: Short-Circuiting Loops

Decisions within Lists — List Comprehension

Generating Iterators for Loops

Special String Substitution Using Dictionaries

Featured Modules

Summary

Exercises

Chapter 10: Building a Module

Exploring Modules

Creating Modules and Packages

Working with Classes

Finishing Your Modules

Creating a Whole Module

Installing Your Modules

Summary

Exercises

Chapter 11: Text Processing

Why Text Processing Is So Useful

Navigating the File System with the os Module

Working with Regular Expressions and the re Module

Summary

Exercises

Part III: Putting Python to Work

Chapter 12: Testing

Assertions

Test Cases and Test Suites

Test Fixtures

Putting It All Together with Extreme Programming

Formal Testing in the Software Life Cycle

Summary

Chapter 13: Writing a Gui with Python

GUI Programming Toolkits for Python

Tkinter Introduction

Creating GUI Widgets with Tkinter

Summary

Exercises

Chapter 14: Accessing Databases

Working with DBM Persistent Dictionaries

Working with Relational Databases

Using the Python Database APIs

Summary

Exercises

Chapter 15: Using Python for XML

What Is XML?

What Is a Schema/DTD?

Document Type Definitions

Schemas

XPath

HTML as a Subset of XML

XML Libraries Available for Python

What Is SAX?

Why Use SAX or DOM

SAX and DOM Parsers Available for Python

Intro to XSLT

What Is lxml?

Element Classes

Parsing with lxml

Summary

Exercises

Chapter 16: Network Programming

Understanding Protocols

Sending Internet E-mail

Retrieving Internet E-mail

Socket Programming

Other Topics

Summary

Exercises

Chapter 17: Extension Programming with C

Extension Module Outline

Building and Installing Extension Modules

Passing Parameters from Python to C

Returning Values from C to Python

The LAME Project

The LAME Extension Module

Using Python Objects from C Code

Summary

Exercises

Chapter 18: Numerical Programming

Numbers in Python

Mathematics

Complex Numbers

Arrays

Summary

Exercises

Chapter 19: An Introduction to Django

What Are Frameworks and Why Would I Use One?

Other Features of Web Frameworks

Django — How It All Began

Understanding Django’s Architecture

Working with Templates

Using Templates and Views

Creating a Model: Creating an Application

Summary

Exercises

Chapter 20: Web Applications and Web Services

REST: The Architecture of the Web

HTTP: Real-World REST

CGI: Turning Scripts into Web Applications

HTML Forms’ Limited Vocabulary

Safety When Accessing Form Values

Building a Wiki

Web Services

REST Web Services

XML-RPC

SOAP

Documenting Your Web Service API

Choosing a Web Service Standard

Web Service Etiquette

Summary

Exercises

Chapter 21: Integrating Java with Python

Scripting within Java Applications

Comparing Python Implementations

Installing Jython

Running Jython

Running Jython on Your Own

Packaging Jython-Based Applications

Integrating Java and Jython

Testing from Jython

Embedding the Jython Interpreter

Handling Differences between C-Python and Jython

Summary

Exercises

Part IV: Appendices

Appendix A: Answers to the Exercises

Appendix B: Online Resources

Appendix C: What’s New in Python 3.1

Appendix D: Glossary

Index

To my patient and loving wife, Whitney, who believed in me before I did. And to my parents, Ronnie and Sharon Payne, who raised me to believe I could do anything I put my mind to, even when I told them I wanted to be Santa Claus. For my brother, Ron, who read my work even when it was bad, Dorjan, Eric, Clem, and Nick because they know things about me and will tell them if I don’t include them.

About the Author

James Payne (Margate, FL) is Editor-in-Chief of Developer Shed, Inc. and has been writing and programming since the age of seven years old. Proficient in many languages, he has written over 400 articles covering practically every major programming language. As a contractor, he develops proprietary software for the financial industry using Python and likes to dabble in Django in his spare time.

Credits

Executive Editor

Carol Long

Project Editor

Ed Connor

Technical Editor

Chris McAvoy

Production Editors

Amy Weintraub and Tim Tate

Copy Editor

Kim Cofer

Editorial Director

Robyn B. Siesky

Editorial Manager

Mary Beth Wakefield

Marketing Manager

David Mayhew

Production Manager

Tim Tate

Vice President and Executive Group Publisher

Richard Swadley

Vice President and Executive Publisher

Barry Pruett

Associate Publisher

Jim Minatel

Project Coordinator, Cover

Lynsey Stanford

Proofreaders

Scott Klemp and Kristy Eldredge, Word One

Indexer

Ron Strauss

Cover Image

© istockphoto.com/Frank_U

Acknowledgments

I would like to acknowledge the gang at Developer Shed: Jack and Jay Kim, whose constant hatred is an inspiration, Charles Fagundes, who made me an editor and not just a writer, Keith Lee, who provided coding support, and a special thanks to Jenny Ruggieri, who got me the job that got me this book. Lastly, I’d like to thank all of the people that worked on the previous editions of this book for laying the groundwork, and the Editors Carol Long, Jenny Watson, Ed Connor, and Chris McAvoy who helped me meet deadlines no matter how much I didn’t want to.

I would also like to acknowledge Guido Von Rossum, without whom there would be no language to write about.

Introduction

Welcome to Python 3.1!

I’ve been working with Python for about ten years now, and every new version has caused me to fall in love with the language all over again. Version 3.1 is no different. If you are new to Python, rest easy — I’ll guide you every step of the way. If, on the other hand, you are an old Python hand exploring the new version, the book is structured so that you can learn the new information you need, without wasting time on already-known information.

I wanted to write this book because I love Python. I love it! And I want to share my love with you. And, maybe you’ll grow to love it as I do.

Who This Book Is For

If you’re computer-literate, and want to learn a fun programming language to better control your computer, this book is for you.

If you are a system administrator who wants to learn a great language to help you better manage and configure systems and networks, this book is for you.

If you already know Python, but are wondering what cool new features are available in version 3.1, this book is for you.

In summary, this book is for anyone interested in exploring Python programming with the newest and most full-featured, easy-to-use version, 3.1.

What This Book Covers

This book is designed to cover Python 3.1. Python 3.1, released in 2009, is the latest major revision of the Python programming language. Since Python is a cross-platform language, the content and examples in the book are applicable in any platform (unless specified otherwise). When there is a choice to be made as to platform independence, the examples will be as cross-platform as possible.

In addition, since Python 3.1 is relatively new, not all supporting libraries have been updated to work in Python 3.x. In those instances where this is the case and it is felt that the theory still needs to be expounded upon, Python 2.6 will be used in lieu of version 3.1.

How This Book Is Structured

As might be expected from a “Beginning” book, the book begins with an introduction to the language. From there, you’ll move through the core of the language, then move on to more advanced and specialized topics. The book is divided up into four parts.

Part I — Dipping Your Toe into Python

The first part will allow you to, as the title suggests, dip your toe in.

Programming Basics and Strings

First you’ll be introduced to Python. This chapter will explore what Python is, and why it is so useful and powerful. Also explored will be Python’s history from its early development to the newest version, which is the focus of this book. You’ll also learn about the scope of Python’s reach, and all the different areas of application development in which Python plays a part. Finally, you’ll learn to work with your first data type — strings.

Numbers and Operators

This chapter will guide you through the basics of working with numbers and operators. You will learn the different types of numbers, how to perform simple — and complex — equations, and work with the various operators. You will also learn about order of precedence and formatting numbers.

Variables — Names for Values

Ultimately, programming languages help you to manage different types of information — in other words, data. An understanding of data types and how they are represented in Python is essential to programming in Python. This chapter will help you to understand the best ways to represent different data types in Python.

Part II — Python Language and the Standard Library

Of course, the core piece of knowledge you need to use a language is to know the language itself, and familiarize yourself with its syntax and modules. This part will start small, with data types and variables, and gradually introduce additional concepts until you have all the information you need to develop fully functional Python programs.

You’ll want to read through these chapters sequentially –– each chapter builds on the information presented in the previous chapter.

Making Decisions

Ultimately, there will come a point when your program must make a decision — do I take this path or that path? And what happens when I take that path? In this chapter, you will learn how to compare data, such as deciding if one value is greater than another, and use repetition to repeat repetitive tasks.

Functions

This chapter will help you to expand on your Python knowledge by introducing you to functional programming. Functions allow you to take advantage of powerful concepts like parameter passing and code reuse. You’ll learn how to use functions to make your code more efficient and flexible.

Classes and Objects

Here you will be shown what objects are and learn to create classes. You will learn how to define them, create objects in your classes, write methods, and discuss the scope of your objects.

Organizing Programs

When your programs get larger, you’ll want to divide them up into separate components. This chapter will discuss Python modules. You’ll also explore packages, which are nothing but collections of modules.

Files and Directories

An important part of everyday programming is learning to work with files and directories. This chapter focuses on creating, modifying, and working with files in general. In addition, you will learn how to obtain data from files and how to interact with the various directories.

Other Features of the Language

Here you will learn about some of the other features the language has to offer, including how to make decisions with lists, string substitutions with dictionaries, and some of the featured modules.

Building a Module

Modules help you save time by allowing you to reuse snippets of code. It also ensures fewer errors, as the module you use will have been tested and used many times before. Here, we will learn to create our own modules, as well as import and work with pre-existing modules –– something that makes Python particularly powerful.

Text Processing

There are so many things you can do with text in programming and in essence, text is the key to effectively communicating with your user. After all, without it, the only thing you are left with is images. In this chapter you learn to process text in a variety of ways, including: working with regular expressions, searching for files, and searching for files of a particular type.

Part III — Putting Python to Work

So, now that you know what Python is, and how to work with the language, what’s next, you ask? This final part explores many of the programming topics you’ll likely encounter or want to explore. These can be looked at sequentially, or in any order you like . . . these chapters are independent of each other.

Testing

There is only one way to ensure your program works before it is in the hands of the user, and that is by testing your program. Here, you will learn not only the concepts behind properly testing your programs, but the tools and frameworks available to you.

Writing a GUI with Python

Thus far in the book, all the programs work through the command line. In this chapter, you’ll be introduced to the concept of GUI programming. You’ll also walk through creating a few GUI programs with Tkinter, the most popular GUI toolkit used by Python programmers.

Accessing Databases

Databases store information that your program can use for an infinite amount of reasons. It also acts as a place for you to store information, and later retrieve that information for a given task. In this chapter you learn about the different types of databases and how to work with them.

Using Python for XML

XML is a powerful tool for processing data on the lnternet. Here, you will learn the basics of XML including the difference between schema and DTD, basic syntax, how to create and validate your own XML, and more advanced topics such as using lxml.

Network Programming

Now that the lnternet has wormed its way into our everyday lives, and has become more of a necessity than a privilege, learning to programmatically send e-mails and allow users to communicate across the web is essential. In this chapter, you will learn how to do just that.

Extension Programming with C

This chapter delves into programming with the C language, including working with C frameworks and modules, the basics of C, and passing parameters from Python to C, and then returning value back to Python.

Numerical Programming

Numbers were touched on briefly in the beginning of this book; now it is time to delve more deeply below the surface. Here you will learn all there is to know about integers and floating point numbers, as well as complex numbers, arrays, and working with built-in math functions and modules.

An Introduction to Django

Django is a web application framework written in Python, which utilizes the model-view-architecture pattern. Originally created for managing news websites, Django has become popular for its ease of use, allowing programmers to create complex websites in a simple fashion, including database-focused sites. Here we will learn the basics of Django.

Web Applications and Web Services

Here you will learn the foundations of working with web applications and web services. You will learn about the REST architecture, as well as how to work with HTTP Requests and Responses.

Integrating Java with Python

In this chapter you learn the basics of Java, building a strong foundation before you delve blending the two languages together. You will learn the various modules that allow you to work with Java in Python and how to create simple, yet effective applications.

Part IV: Appendices

In the back of the book, there are some useful appendices to further your knowledge and fun with Python:

Answers to the ExercisesOnline Resources — where do you go from here?What’s New in Python 3.1Glossary of terms

What You Need to Use This Book

There are some minimal requirements to use the material in this book. The following are recommendations, as Python itself runs on many different platforms. However, the first chapters assume that you have access to a GUI such as is available in Windows, Mac OS X, or the X Window system on UNIX and Linux. Naturally, some chapters, such as the GUI chapter, require the GUI as well, and chapters involving networking will make much more sense if a network connection is in place.

Following are the suggested minimum requirements:

A PC running Linux, a BSD UNIX, or Windows running at 500MHz or faster, or a G3 or later Macintosh running Mac OS X version 10.2 or later256MB of memory (at a minimum)A graphical user interface native to the platform you are onNecessary access to the computer you are on so that you may install required softwareNetwork access to a TCP/IP network such as the Internet or a campus networkInternet access to download required software

Conventions

To help you get the most from the text and keep track of what’s happening, we’ve used a number of conventions throughout the book.

Examples that you can download and try out for yourself generally appear in a box like this:

Example title

This section gives a brief overview of the example.

Source

This section includes the source code:

Source code

Source code

Source code

Output

This section lists the output:

Example output

Example output

Example output

Try It Out

The Try It Out is an exercise you should work through, following the text in the book.

1. They usually consist of a set of steps.

2. Each step has a number.

3. Follow the steps through with your copy of the database.

How It Works

After each Try It Out, the code you’ve typed will be explained in detail.

Boxes like this one hold important, not-to-be forgotten information that is directly relevant to the surrounding text.

Notes, tips, hints, tricks, and asides to the current discussion are offset and placed in italics like this.

As for styles in the text:

We highlight new terms and important words when we introduce them.We show keyboard strokes like this: Ctrl+A.We show file names, URLs, and code within the text like so: persistence.properties.We present code in two different ways:

We use a monofont type with no highlighting for most code examples.

We use bold highlighting to emphasize code that’s particularly important in the present context.

Source Code

As you work through the examples in this book, you may choose either to type in all the code manually or to use the source code files that accompany the book. All of the source code used in this book is available for download at http://www.wrox.com. Once at the site, simply locate the book’s title (either by using the Search box or by using one of the title lists) and click the Download Code link on the book’s detail page to obtain all the source code for the book.

Because many books have similar titles, you may find it easiest to search by ISBN; this book’s ISBN is 978-0-470-41463-7.

Once you download the code, just decompress it with your favorite compression tool. Alternately, you can go to the main Wrox code download page at http://www.wrox.com/dynamic/books/download.aspx to see the code available for this book and all other Wrox books.

Errata

We make every effort to ensure that there are no errors in the text or in the code. However, no one is perfect, and mistakes do occur. If you find an error in one of our books, like a spelling mistake or faulty piece of code, we would be very grateful for your feedback. By sending in errata, you may save another reader hours of frustration and at the same time you will be helping us provide even higher quality information.

To find the errata page for this book, go to http://www.wrox.com and locate the title using the Search box or one of the title lists. Then, on the book details page, click the Errata link. On this page you can view all errata that has been submitted for this book and posted by Wrox editors. A complete book list including links to each book’s errata is also available at www.wrox.com/misc-pages/booklist.shtml.

If you don’t spot “your” error on the Errata page, go to www.wrox.com/contact/techsupport.shtml and complete the form there to send us the error you have found. We’ll check the information and, if appropriate, post a message to the book’s errata page and fix the problem in subsequent editions of the book.

p2p.wrox.com

For author and peer discussion, join the P2P forums at p2p.wrox.com. The forums are a Web-based system for you to post messages relating to Wrox books and related technologies and interact with other readers and technology users. The forums offer a subscription feature to e-mail you topics of interest of your choosing when new posts are made to the forums. Wrox authors, editors, other industry experts, and your fellow readers are present on these forums.

At p2p.wrox.com you will find a number of different forums that will help you not only as you read this book, but also as you develop your own applications. To join the forums, just follow these steps:

1. Go to p2p.wrox.com and click the Register link.

2. Read the terms of use and click Agree.

3. Complete the required information to join as well as any optional information you wish to provide and click Submit.

4. You will receive an e-mail with information describing how to verify your account and complete the joining process.

You can read messages in the forums without joining P2P, but in order to post your own messages, you must join.

Once you join, you can post new messages and respond to messages other users post. You can read messages at any time on the Web. If you would like to have new messages from a particular forum e-mailed to you, click the Subscribe to this Forum icon by the forum name in the forum listing.

For more information about how to use the Wrox P2P, be sure to read the P2P FAQs for answers to questions about how the forum software works as well as many common questions specific to P2P and Wrox books. To read the FAQs, click the FAQ link on any P2P page.

Part I

Dipping Your Toe into Python

Chapter 1: Programming Basics and Strings

Chapter 2: Numbers and Operators

Chapter 3: Variables — Names for Values

1

Programming Basics and Strings

This chapter is a gentle introduction to the practice of programming in Python. Python is a very rich language with many features, so it is important to learn to walk before you learn to run. Chapters 1 through 3 provide a basic introduction to common programming ideas, explained in easily digestible paragraphs with simple examples.

If you are already an experienced programmer interested in Python, you may want to read this chapter quickly and take note of the examples, but until Chapter 3 you will be reading material with which you’ve probably already gained some familiarity in another language.

If you are a novice programmer, by the end of this chapter you will learn the following:

Some guiding principles for programmingDirections for your first interactions with a programming language — Python.

The exercises at the end of the chapter provide hands-on experience with the basic information that you have learned.

How Programming is Different from Using a Computer

The first thing you need to understand about computers when you’re programming is that you control the computer. Sometimes the computer doesn’t do what you expect, but even when it doesn’t do what you want the first time, it should do the same thing the second and third time — until you take charge and change the program.

The trend in personal computers has been away from reliability and toward software being built on top of other, unreliable, software. The results that you live with might have you believing that computers are malicious and arbitrary beasts, existing to taunt you with unbearable amounts of extra work and various harassments while you’re already trying to accomplish something. However, after you’ve learned how to program, you gain an understanding of how this situation has come to pass, and perhaps you’ll find that you can do better than some of the programmers whose software you’ve used.

Note that programming in a language like Python, an interpreted language, means that you are not going to need to know a whole lot about computer hardware, memory, or long sequences of 0s and 1s. You are going to write in text form like you are used to reading and writing but in a different and simpler language. Python is the language, and like English or any other language(s) you speak, it makes sense to other people who already speak the language. Learning a programming language can be even easier, however, because programming languages aren’t intended for discussions, debates, phone calls, plays, movies, or any kind of casual interaction. They’re intended for giving instructions and ensuring that those instructions are followed. Computers have been fashioned into incredibly flexible tools that have found a use in almost every business and task that people have found themselves doing, but they are still built from fundamentally understandable and controllable pieces.

Programming is Consistency

In spite of the complexity involved in covering all of the disciplines into which computers have crept, the basic computer is still relatively simple in principle. The internal mechanisms that define how a computer works haven’t changed a lot since the 1950s when transistors were first used in computers.

In all that time, this core simplicity has meant that computers can, and should, be held to a high standard of consistency. What this means to you, as the programmer, is that anytime you tell a computer to metaphorically jump, you must tell it how high and where to land, and it will perform that jump — over and over again for as long as you specify. The program should not arbitrarily stop working or change how it works without you facilitating the change.

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!