Einfach Python - Michael Inden - E-Book

Einfach Python E-Book

Michael Inden

0,0

Beschreibung

Programmieren – richtig von Anfang an

  • Beste Lernquelle für Python-Programmierung

Sie wollen endlich programmieren lernen und ihre ersten Projekte umsetzen. Hierfür bietet sich Python als eine der populärsten Programmiersprachen geradezu an. Mit diesem Buch gelingt Ihnen mühelos ein fundierter Einstieg, denn Sie werden auf Ihrer Entdeckungsreise vom erfahrenden Trainer Michael Inden begleitet. Er erklärt Ihnen die Grundlagen der Python-Programmierung leicht und verständlich. Generell wird die trockene Theorie auf ein Minimum reduziert. Ergänzend werden immer wieder auch Python-spezifische Besonderheiten wie Bulit-in-Funktionen, Slicing, Comprehensions, Generatoren usw. erklärt, die das Entwicklen erleichtern und Ihre Programme gleich von Anfang an Python-like, stilistisch schön, kurz Pythonic, machen.  
 Eine große Rolle spielt der interaktive Einstieg mithilfe der Python-Kommandozeile. Damit können kleine Programme direkt ausprobiert werden und Erfolgserlebnisse stellen sich schnell ein. Dieses Vorgehen eignet sich ideal, um sich Python im Selbststudium sowie im eigenen Tempo anzueignen. Allmählich werden die Themen anspruchsvoller und die zu erstellenden Programme größer. Schließlich erfahren Sie, wie Sie eine Entwicklungsumgebung einsetzen, und lernen die objektorientierte Programmierung kennen. Mit den erworbenen Grundlagen können Sie sich immer gezielter mit eigenen Projekten beschäftigen. Erste Ideen liefern drei etwas umfangreichere Programmierbeispiele aus der Praxis, die zudem einen Einblick in das schrittweise, erfolgreiche Entwickeln von Applikationen geben. 
Das Buch besteht aus in sich abgeschlossenen, aufeinander aufbauenden Kapiteln zu den wesentlichen Bereichen der Programmiersprache Python und den relevanten Sprachelementen. Aufgaben und Musterlösungen runden viele Kapitel ab, sodass Sie das zuvor Gelernte direkt anhand neuer Problemstellungen praktizieren und Ihr Wissen vertiefen können.  
Zahlreiche kurze Codebeispiele verdeutlichen die Lerninhalte und laden zum Experimentieren ein. Gleich von Anfang an lernen Sie, Ihren Sourcecode sauber zu strukturieren und einen guten Stil zu entwickeln. Dabei hilft ein Kapitel zu Programmierregeln, sogenannten Coding Conventions und zum Testen mit Pytest.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern
Kindle™-E-Readern
(für ausgewählte Pakete)

Seitenzahl: 368

Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:

Android
iOS
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.

Beliebtheit




Dipl.-Inform. Michael Inden ist Oracle-zertifizierter Java-Entwickler. Nach seinem Studium in Oldenburg hat er bei diversen internationalen Firmen in verschiedenen Rollen etwa als Softwareentwickler, -architekt, Consultant, Teamleiter, CTO sowie Leiter Academy gearbeitet. Zurzeit ist er freiberuflich als Autor und Trainer in Zürich tätig.

Michael Inden hat über zwanzig Jahre Berufserfahrung beim Entwurf komplexer Softwaresysteme gesammelt, an diversen Fortbildungen und mehreren Java-One-Konferenzen teilgenommen. Sein besonderes Interesse gilt dem Design qualitativ hochwertiger Applikationen sowie dem Coaching. Sein Wissen gibt er gerne als Trainer in internen und externen Schulungen und auf Konferenzen weiter, etwa bei der JAX/W-JAX, JAX London, Oracle Code One, ch.open sowie bei der Java User Group Switzerland.

Zu diesem Buch – sowie zu vielen weiteren dpunkt.büchern – können Sie auch das entsprechende E-Book im PDF-Format herunterladen. Werden Sie dazu einfach Mitglied bei dpunkt.plus+:

www.dpunkt.plus

Michael Inden

Einfach Python

Gleich richtig programmieren lernen

Michael Inden

[email protected]

Lektorat: Michael Barabas

Projektkoordinierung: Anja Weimer

Fachgutachten: Tobias Overkamp

Copy-Editing: Ursula Zimpfer, Herrenberg

Satz: Michael Inden

Herstellung: Stefanie Weidner

Umschlaggestaltung: Helmut Kraus, www.exclam.de

Bibliografische Information der Deutschen Nationalbibliothek

Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.

ISBN:

Print    978-3-86490-875-0

PDF     978-3-96910-646-4

ePub   978-3-96910-647-1

mobi   978-3-96910-648-8

1. Auflage 2022

Copyright © 2022 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Hinweis:

Dieses Buch wurde auf PEFC-zertifiziertem Papier aus nachhaltiger Waldwirtschaft gedruckt. Der Umwelt zuliebe verzichten wir zusätzlich auf die Einschweißfolie.

Schreiben Sie uns:

Falls Sie Anregungen, Wünsche und Kommentare haben, lassen Sie es uns wissen: [email protected].

Die vorliegende Publikation ist urheberrechtlich geschützt. Alle Rechte vorbehalten. Die Verwendung der Texte und Abbildungen, auch auszugsweise, ist ohne die schriftliche Zustimmung des Verlags urheberrechtswidrig und daher strafbar. Dies gilt insbesondere für die Vervielfältigung, Übersetzung oder die Verwendung in elektronischen Systemen.

Es wird darauf hingewiesen, dass die im Buch verwendeten Soft- und Hardware-Bezeichnungen sowie Markennamen und Produktbezeichnungen der jeweiligen Firmen im Allgemeinen warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen.

Alle Angaben und Programme in diesem Buch wurden mit größter Sorgfalt kontrolliert. Weder Autor noch Verlag können jedoch für Schäden haftbar gemacht werden, die in Zusammenhang mit der Verwendung dieses Buches stehen.

5 4 3 2 1 0

In Erinnerung an meine geliebte Mutter Marianne IndenVielen Dank für deine bedingungslose Liebe und Unterstützung

Inhaltsverzeichnis

Vorwort

IEinstieg

1Einführung

1.1Python im Überblick

1.2Los geht’s – Installation

1.2.1Python-Download

1.2.2Installation von Python

1.2.3Nacharbeiten nach der Python-Installation

1.2.4Python-Installation prüfen

1.2.5Python-Programm als Skript ausführen

1.3Entwicklungsumgebungen

1.3.1Installation von PyCharm

1.3.2PyCharm starten

1.3.3Erstes Projekt in PyCharm

1.3.4Erstes Modul in PyCharm

2Schnelleinstieg

2.1Hallo Welt (Hello World)

2.2Variablen und Datentypen

2.2.1Definition von Variablen

2.2.2Variablen und Typen

2.2.3Bezeichner (Variablennamen)

2.3Operatoren im Überblick

2.3.1Arithmetische Operatoren

2.3.2Zuweisungsoperatoren

2.3.3Vergleichsoperatoren

2.3.4Logische Operatoren

2.4Fallunterscheidungen

2.5Funktionen

2.5.1Eigene Funktionen definieren

2.5.2Nützliche Beispiele aus Python

2.5.3Fehlerbehandlung und Exceptions

2.6Kommentare

2.7Module

2.8Built-in-Datentypen

2.8.1List

2.8.2Tupel

2.8.3Set

2.8.4Dict

2.9Schleifen

2.9.1Besonderheit: Ranges

2.9.2Indexbasierte for-in-Schleife

2.9.3Wertebasierte for-in-Schleife

2.9.4Index- und wertebasierte for-in-enumerate-Schleife

2.9.5Die while-Schleife

2.10Weiterführende Informationen

2.11Aufgaben und Lösungen

2.11.1Aufgabe 1: Mathematische Berechnungen

2.11.2Aufgabe 2: Bedingung vereinfachen

2.11.3Aufgabe 3: Funktion und if

2.11.4Aufgabe 4: Selbstabholerrabatt

2.11.5Aufgabe 5: Schleifen mit Berechnungen

2.11.6Aufgabe 6: Schleifen und fixe Schrittweite

2.11.7Aufgabe 7: Schleifen mit variabler Schrittweite

2.11.8Aufgabe 8: Verschachtelte Schleifen – Variante 1

2.11.9Aufgabe 9: Verschachtelte Schleifen – Variante 2

2.11.10Aufgabe 10: Verschachtelte Schleifen – Variante 3

3Strings

3.1Schnelleinstieg

3.1.1Gebräuchliche Stringaktionen

3.1.2Suchen und Ersetzen

3.1.3Informationen extrahieren und formatieren

3.1.4Praxisrelevante Funktionen im Kurzüberblick

3.2Nächste Schritte

3.2.1Zeichenverarbeitung

3.2.2Strings und Listen

3.2.3Mehrzeilige Strings

3.3Aufgaben und Lösungen

3.3.1Aufgabe 1: Länge, Zeichen und Enthaltensein

3.3.2Aufgabe 2: Zeichen wiederholen

3.3.3Aufgabe 3: Vokale raten

3.3.4Aufgabe 4: String Merge

4Klassen und Objektorientierung

4.1Schnelleinstieg

4.1.1Grundlagen zu Klassen und Objekten

4.1.2Eigenschaften (Attribute)

4.1.3Verhalten (Methoden)

4.1.4Objekte vergleichen – die Rolle von __eq__()

4.2Nächste Schritte

4.2.1Klassen ausführbar machen

4.2.2Imports und Packages

4.2.3Übergang zum Einsatz einer IDE

4.2.4Verstecken von Informationen

4.2.5Packages: Auswirkungen auf unsere Applikation

4.3Vererbung

4.3.1Basisklassen

4.3.2Typprüfung mit isinstance()

4.3.3Generalisierung und Spezialisierung

4.3.4Polymorphie

4.4Aufgaben und Lösungen

4.4.1Aufgabe 1: Superheld

4.4.2Aufgabe 2: Zähler

4.4.3Aufgabe 3: Zähler mit Überlauf

5Collections

5.1Schnelleinstieg

5.1.1Die Klasse list

5.1.2Die Klasse set

5.1.3Die Klasse dict

5.2Nächste Schritte

5.2.1Comprehensions

5.2.2Slicing – Zugriff auf Teilbereiche

5.2.3Sortierung – sort() / sorted()

5.2.4Tauschen von Elementen – swap()

5.2.5Reihenfolge umkehren – reverse() und reversed()

5.2.6Mehrdimensionale Listen

5.3Praxisbeispiel: Einen Stack selbst realisieren

5.3.1Implementierung

5.3.2Stack im Einsatz

5.4Praxisbeispiel: Flächen füllen

5.5Aufgaben und Lösungen

5.5.1Aufgabe 1: Tennisverein-Mitgliederliste

5.5.2Aufgabe 2: Liste mit Farbnamen füllen und filtern

5.5.3Aufgabe 3: Duplikate entfernen – Variante 1

5.5.4Aufgabe 4: Duplikate entfernen – Variante 2

5.5.5Aufgabe 5: Hauptstädte

5.5.6Aufgabe 6: Häufigkeiten von Namen

5.5.7Aufgabe 7: Objekte mit Dictionary selbst gebaut

5.5.8Aufgabe 8: Rotation um eine oder mehrere Positionen

5.5.9Aufgabe 9: Dreieckige Liste: Upside Down

6Ergänzendes Wissen

6.1Benutzereingaben input()

6.2Zufallswerte und das Modul random

6.3Besonderheiten von Parametern

6.3.1Normale Parameter mit Position bzw. Name

6.3.2Parameter mit Defaultwert

6.3.3Var Args – variable Anzahl an Argumenten

6.4Ternary-Operator

6.5Aufzählungen mit Enum

6.6break, continue und else in Schleifen

6.6.1Funktionsweise von break und continue

6.6.2Wie macht man es besser?

6.6.3Besonderheit: else in Schleifen

6.7Ausdrücke mit eval() auswerten

6.8Rekursion

6.9Aufgaben und Lösungen

6.9.1Aufgabe 1: Würfelspiel

6.9.2Aufgabe 2: Temperaturumrechnung

6.9.3Aufgabe 3: Palindrom-Prüfung mit Rekursion

6.9.4Aufgabe 4: Einarmiger Bandit

IIAufstieg

7Collections Advanced

7.1Sequenzielle Datentypen

7.2Iteratoren

7.3Generatoren

7.4Datencontainer mit namedtuple

7.5Einstieg in Lambdas

7.5.1Syntax von Lambdas

7.5.2Lambdas im Einsatz mit filter(), map() und reduce()

7.5.3Lambdas im Einsatz mit sort()

7.5.4Lambdas im Einsatz mit groupby()

7.6Aufgaben und Lösungen

7.6.1Aufgabe 1: Obstkorb

7.6.2Aufgabe 2: Erwachsene aus Personenliste extrahieren

7.6.3Aufgabe 3: Eigene Implementierung von rindex()

7.6.4Aufgabe 4: Elemente eines Dictionaries allgemeingültig filtern

7.6.5Aufgabe 5: Every-N-th-Iterator

7.6.6Aufgabe 6: Greeting-Generator

7.6.7Aufgabe 7: Fibonacci-Generator

7.6.8Aufgabe 8: Sortieren und Gruppieren

8Verarbeitung von Dateien

8.1Schnelleinstieg

8.1.1Anlegen von Dateien und Verzeichnissen

8.1.2Aktuelles Verzeichnis wechseln

8.1.3Aktuelles Verzeichnis und absoluten Pfad ermitteln

8.1.4Inhalt eines Verzeichnisses auflisten

8.1.5Pfad ist Datei oder Verzeichnis?

8.1.6Auf Existenz prüfen

8.1.7Informationen in Dateien schreiben und daraus lesen

8.1.8Einfluss der Verarbeitungsmodi

8.1.9Diverse Informationen ermitteln

8.1.10Kopieren

8.1.11Umbenennen

8.1.12Löschen

8.2Praxisbeispiel: Directory-Baum darstellen

8.2.1Basisvariante

8.2.2Variante mit schönerer Darstellung

8.2.3Finale Variante mit ausgeklügelter Darstellung

8.3JSON-Verarbeitung

8.3.1JSON in eine Datei schreiben

8.3.2Lesen von JSON aus einer Datei

8.3.3Pretty Printing

8.4Aufgaben und Lösungen

8.4.1Aufgabe 1: Texte in Datei schreiben und wieder lesen

8.4.2Aufgabe 2: Dateigrößen

8.4.3Aufgabe 3: Existenzprüfung

8.4.4Aufgabe 4: Rechteprüfung

8.4.5Aufgabe 5: Verzeichnisinhalt auflisten

9Fehlerbehandlung mit Exceptions

9.1Schnelleinstieg

9.1.1Fehlerbehandlung

9.1.2Exceptions selbst auslösen – raise

9.1.3Eigene Exception-Typen definieren

9.1.4Propagation von Exceptions

9.2Fehlerbehandlung in der Praxis

9.2.1Elegante Prüfungen mit assert

9.3Automatic Resource Management (with)

9.4Aufgaben und Lösungen

9.4.1Aufgabe 1: Abgesicherter Indexzugriff – Kür mit Fallback-Wert

9.4.2Aufgabe 2: Einfacher Taschenrechner

9.4.3Aufgabe 3: Resource Handling

10Datumsverarbeitung

10.1Schnelleinstieg

10.1.1Zeitpunkte und die Klasse datetime

10.1.2Datumswerte und die Klasse date

10.1.3Zeit und die Klasse time

10.1.4Zeitdifferenzen und die Klasse timedelta

10.1.5Berechnungen

10.1.6Formatierung und Parsing

10.2Praxisbeispiel: Kalenderausgabe

10.3Aufgaben und Lösungen

10.3.1Aufgabe 1: Wochentage

10.3.2Aufgabe 2: Freitag, der 13

10.3.3Aufgabe 3: Mehrmals Freitag, der 13

10.3.4Aufgabe 4: Schaltjahre

IIIPraxisbeispiele

11Praxisbeispiel: Tic Tac Toe

11.1Spielfeld initialisieren und darstellen

11.2Setzen der Steine

11.3Prüfen auf Sieg

11.4Bausteine im Einsatz

12Praxisbeispiel: CSV-Highscore-Liste einlesen

12.1Verarbeitung von Spielständen (Highscores)

12.2Extraktion der Daten

12.3Besonderheiten der Implementierung

13Praxisbeispiel: Worträtsel

13.1Applikationsdesign – Vorüberlegungen zur Strukturierung

13.2Einlesen der verfügbaren Wörter

13.3Hilfsdatenstrukturen

13.4Datenmodell

13.4.1Datenspeicherung und Initialisierung

13.4.2Zufällige Wahl von Richtung, Position, Wort und Buchstabe

13.4.3Algorithmus zum Verstecken von Wörtern

13.4.4Wort prüfen und platzieren

13.5HTML-Erzeugung

13.6Ausgabe als HTML und Darstellung im Browser

13.7Hauptapplikation

13.8Fazit

IVSchlussgedanken

14Gute Angewohnheiten

14.1Grundregeln eines guten Programmierstils

14.1.1Keep It Human-Readable

14.1.2Keep it Understandable

14.2Coding Conventions

14.2.1PEP 8 – Coding Standard

14.2.2Zen of Python

14.2.3Namensgebung

14.2.4Dokumentation

14.2.5Programmdesign

14.2.6Parameterlisten

14.2.7Logik und Kontrollfluss

14.3Auch ans Testen denken

14.3.1Das Pytest-Framework

14.3.2Schreiben und Ausführen von Tests

15Schlusswort

VAnhang

ASchlüsselwörter im Überblick

A.1Schlüsselwörter im Überblick

BSchnelleinstieg Python-REPL

B.1Python-REPL

CWesentliche Neuerungen aus Python 3.10 im Kurzüberblick

C.1Fehlermeldungen

C.1.1Fehlermeldungen bei Zuweisungen

C.1.2Fehlermeldungen bei unvollständigen Strings

C.2Fallunterscheidungen mit match

C.3Verschiedenes

C.3.1Verbesserungen bei Kontextmanagern

C.3.2Verbesserungen der Performance

C.3.3Erweiterung bei zip()

C.3.4Verbesserungen bei Typprüfungen

Literaturverzeichnis

Index

Vorwort

Zunächst einmal bedanke ich mich bei Ihnen, dass Sie sich für dieses Buch entschieden haben. Hierin finden Sie einen fundierten und interaktiven Einstieg in die Programmierung mit Python. Dabei fangen wir mit den Grundlagen an und bauen Ihr Wissen immer weiter aus, sodass Sie nach der Lektüre in der Lage sind, eigene Experimente zu wagen, und bestenfalls Programmieren als neues Hobby lieben gelernt haben. Insbesondere die ungeheuren Möglichkeiten, kreativ zu werden und dabei immer wieder Neues zu entdecken, werden Sie bestimmt ähnlich faszinieren wie mich seit über 30 Jahren.

Zielgruppe

Dieses Buch ist für Programmierneulinge gedacht. Es wendet sich somit an

Schüler und Schülerinnen, die ein paar Tipps und Hilfestellungen suchen, die das Nachvollziehen des Informatikunterrichts erleichtern,

Studierende, die ergänzende Erklärungen zu denen aus den Vorlesungen suchen, um Gelerntes schneller anwenden zu können oder besser für die nächste Prüfung vorbereitet zu sein,

und alle, die einfach die wunderbare und vielfältige Welt der Programmierung mit Python kennenlernen möchten.

Zum Einstieg sind Programmiererfahrungen keine zwingende Voraussetzung – natürlich schaden diese nicht. Selbst dann nicht, wenn Sie sich vielleicht eher mit Java, C#, TypeScript oder JavaScript beschäftigt haben – aber für die Lektüre des Buchs ist es hilfreich, wenn Sie

einigermaßen fit im Installieren von Programmen sind und

wissen, was die Kommandozeile ist und sie grundlegend bedienen können.

Was vermittelt dieses Buch?

Sie als Leser erhalten in diesem Buch einen Einstieg in Python. Allerdings ist die trockene Theorie auf ein Minimum reduziert und wir legen immer mit kleinen Beispielen los. Deshalb ist es auch ein Buch zum Mitmachen. Ich ermutige Sie ganz besonders, parallel zum Lesen auch immer ein paar Dinge auszuprobieren, vielleicht sogar mal das eine oder andere abzuwandeln. Man lernt Programmieren einfach am besten, wenn man es praktiziert. Somit bietet es sich an, die abgebildeten Codeschnipsel abzutippen, also direkt im Python-Kommandozeileninterpreter einzugeben, oder später im Editor Ihrer Entwicklungsumgebung / IDE (Integrated Development Environment).

Damit Sie nicht über einfache Probleme stolpern, führt das Buch behutsam und schrittweise in die jeweilige Thematik ein und gibt Ihnen immer auch ein paar Hinweise, auf was man achten oder was man vielleicht sogar vermeiden sollte. Dazu dienen diverse Praxistipps mit Hintergrundinformationen.

Tipp: Praxistipp

In derart formatierten Kästen finden sich im späteren Verlauf des Buchs immer wieder einige wissenswerte Tipps und ergänzende Hinweise zum eigentlichen Text.

Aufbau dieses Buchs

Dieses Buch besteht aus jeweils in sich abgeschlossenen, aber aufeinander aufbauenden Kapiteln zu elementar wichtigen Bereichen der Programmiersprache Python. Abgerundet werden viele Kapitel mit Aufgaben und Musterlösungen, sodass das zuvor Gelernte direkt anhand neuer Problemstellungen praktiziert und das Wissen vertieft werden kann.

Für Ihren erfolgreichen Weg zur Python-Programmierung gliedert sich das Buch in die vier Teile Einstieg, Aufstieg, Praxisbeispiele und Schlussgedanken.

Im Teil »Einstieg« werden Grundlagen behandelt. Hier empfiehlt es sich wirklich, die Kapitel in der Reihenfolge des Buchs zu lesen, da mit jedem Kapitel neue Grundlagen und Themen hinzukommen, die im Anschluss vorausgesetzt und verwendet werden. Dann folgt der Teil »Aufstieg«. Dort beschäftigen wir uns mit leicht fortgeschrittenen Themen. Hier können Sie zwar nach Lust und Laune eins der Kapitel zur Lektüre auswählen, aber auch hier bauen einige Themen aufeinander auf. Der Teil »Praxisbeispiele« verdeutlicht die bisherigen Lerninhalte anhand von vereinfachten, didaktisch aufbereiteten Beispielen aus der Praxis. Hier haben Sie viel Spielraum zum Experimentieren und Einbringen eigener Ideen. Im Teil »Schlussgedanken« wird ein Ausblick gegeben, etwa auf Programmierstil und Testen. Das Buch endet dann mit einem Rückblick und Hinweisen für nächste Schritte.

Einstieg

Kapitel 1 – Einführung Dieses Kapitel gibt zunächst einen kurzen Überblick über Pythons mittlerweile fast 30-jährige Geschichte. Bevor wir dann mit dem Lernen von Python als Programmiersprache loslegen können, müssen wir ein paar Installationen vornehmen. Zum einen benötigen wir Python an sich und zum anderen wird eine Entwicklungsumgebung / IDE (Integrated Development Environment) im Verlauf des Buchs mit zunehmender Komplexität der Beispiele immer nützlicher.

Kapitel 2 – Schnelleinstieg Dieses Kapitel bietet einen Schnelleinstieg und stellt viele wesentliche Elemente von Python vor. Dabei nehmen wir ganz behutsam Fahrt auf: Wir beginnen mit einer einfachen Ausgabe eines Textes, ganz traditionell »Hello World«, und lernen dann, wie wir das mithilfe von Variablen variieren. Zudem schauen wir uns die bedingte Ausführung mit Fallunterscheidungen und Wiederholungen mit Schleifen an.

Kapitel 3 – Strings Zeichenketten oder Strings sind aus kaum einem Programm wegzudenken. Variablen vom Typ str repräsentieren Zeichenketten und dienen zur Verwaltung von textuellen Informationen. In diesem Kapitel behandle ich die Thematik genauer.

Kapitel 4 – Klassen und Objektorientierung Immer wieder hört man, das Python auch die objektorientierte Programmierung unterstützt. Doch was bedeutet das? Zum Verständnis gibt dieses Kapitel einen Einblick in den objektorientierten Entwurf von Software. Dazu vermittle ich die grundlegenden Ideen von Zustand (Daten) in Kombination mit Verhalten (Funktionen auf diesen Daten) und wie man dies in Python formuliert.

Kapitel 5 – Collections Collections bzw. Containerklassen bieten Flexibilität und Komfort beim Verwalten von Daten. In Python unterstützen die vordefinierten Listen, Mengen und Schlüssel-Wert-Abbildungen bei der Verwaltung anderer Objekte.

Kapitel 6 – Ergänzendes Wissen In diesem Kapitel werden verschiedene wichtige Themen angesprochen, die in den vorherigen Kapiteln aus didaktischen Gründen bewusst ausgelassen wurden. Warum? Deren Beschreibung erfordert mehr Wissen rund um Python, was Sie mittlerweile erworben haben – vorher wäre das Ganze aber zu tief in die Details gegangen und hätte zu viel anderes Wissen vorausgesetzt. Hier angelangt lohnt es sich aber, das bisherige Wissen etwa mit Informationen zu Besonderheiten bei Parametern, dem Ternary-Operator, Aufzählungen mit Enum usw. zu komplettieren.

Aufstieg

Kapitel 7 – Collections Advanced Dieses Kapitel beschriebt diverse Funktionalitäten rund um Collections. Dort gehen wir beispielsweise auf sequenzielle Datentypen, Iteratoren und Generatoren ein. Spezielle benannte Datencontainer lassen sich mit Named Tuples erzeugen. Schließlich schauen wir uns noch einführend Lambdas an.

Kapitel 8 – Verarbeitung von Dateien Dieses Kapitel beschäftigt sich mit der Verarbeitung von Informationen aus Dateien. Dies ist für viele Anwendungen von großer Bedeutung, da diverse Informationen nicht nur während der Programmlaufzeit von Interesse sind, sondern vor allem auch darüber hinaus – denken Sie etwa an die Highscore-Liste Ihres Lieblingsspiels.

Kapitel 9 – Fehlerbehandlung mit Exceptions Sicher kennen Sie es: Manchmal tritt ein Programmfehler auf und das Programm stürzt ab. Wichtige Daten gehen mitunter verloren. So etwas ist immer ärgerlich. Daher gehört auch die Behandlung von Fehlern zum guten Ton beim Programmieren. Diese Kapitel führt in die Thematik ein.

Kapitel 10 – Datumsverarbeitung Python bietet diverse praktische Funktionalitäten zur Datumsverarbeitung, die in diesem Kapitel einführend dargestellt werden.

Praxisbeispiele

Kapitel 11 – Praxisbeispiel: Tic Tac Toe In diesem Kapitel entwickeln wir eine einfache Version des Strategiespiels Tic Tac Toe, das auf einem Spielfeld mit 3 × 3 Feldern gespielt wird. Dabei wird verdeutlicht, warum wir Programme sinnvoll in kleine Methodenbausteine untergliedern sollten.

Kapitel 12 – Praxisbeispiel: CSV-Highscore-Liste einlesen In diesem Kapitel verdeutlicht ein weiteres Praxisbeispiel die Verarbeitung von Dateien und kommaseparierten Daten, auch CSV (Comma Separated Values) genannt. Um das Ganze unterhaltsam zu gestalten, werden wir statt trockener Anwendungsdaten eine Liste von Spielständen als Eingabe nutzen.

Kapitel 13 – Praxisbeispiel: Worträtsel Dieses dritte Praxisbeispiel umfasst eine etwas komplexere Programmieraufgabe, nämlich die Erstellung von Worträtseln, die man aus Zeitschriften kennt. Dabei sollen aus einem scheinbaren »Buchstabensalat« verschiedene dort versteckte Begriffe extrahiert werden. Dieses Kapitel vermittelt, wie man Aufgaben in verschiedene kleine Problemstellungen untergliedert und diese jeweils mit eigenen Klassen realisieren kann. Schließlich ist es dann Aufgabe der eigentlichen Applikation, wie ein Dirigent zu wirken und die Einheiten passend zusammenzufügen. Dabei lernen wir beispielsweise den Import möglicher Wörter aus Dateien, die Modellierung des Rätsels und einen einfachen Export nach HTML kennen.

Schlussgedanken

Kapitel 14 – Gute Angewohnheiten Dieses Kapitel stellt Ihnen ein paar Dinge zu gutem Programmierstil vor. Das umfasst sogenannte Coding Conventions, also Regeln beim Programmieren. Außerdem zeige ich noch, wie sich einige davon mit Tools prüfen lassen und wie man Programme mit Pytest testen und dadurch Fehler vermeiden kann.

Kapitel 15 – Schlusswort Hier rekapitulieren wir kurz, was Sie durch die Lektüre gelernt haben sollten und wie Sie möglicherweise weitermachen können.

Anhang

Anhang A – Schlüsselwörter im Überblick In Python existiert eine Reihe von Schlüsselwörtern, die reserviert sind und nicht als Bezeichner für Variablen, Funktionen, Methoden, Klassen oder anderes verwendet werden dürfen. Hier erhalten Sie einen Überblick.

Anhang B – Schnelleinstieg REPL In diesem Buch werden diverse Beispiele direkt auf der Konsole ausprobiert. Der Grund ist vor allem, dass Python einen interaktiven Kommandozeileninterpreter als REPL (Read-Eval-Print-Loop) bietet.

Anhang C – Wesentliche Neuerungen aus Python 3.10 im Kurzüberblick Dieser Anhang stellt einige der für das kommende Python 3.10 umgesetzten Erweiterungen vor, die für Sie möglicherweise von Relevanz sind und die weiteren Gehversuche erleichtern können.

Sourcecode und ausführbare Programme

Ich hatte schon angedeutet, dass es zum Erlernen des Programmierens hilfreich ist, die Beispiele und Codeschnipsel auch auszuprobieren und abzutippen. Um Ihnen ein wenig Tipparbeit und Mühe zu sparen, finden Sie viele der Beispiele als Programme in einem PyCharm-Projekt. Dieses steht unter www.dpunkt.de/Einfach-Python zur Verfügung. Weitere Informationen zum genauen Vorgehen finden Sie auf der Download-Seite.

Verwendete Python-Version

Die Beispiele dieses Buchs wurden mit der im Sommer 2021 aktuellen Version 3.9.6 von Python entwickelt. In einem Anhang gehe ich auf einige relevante Features aus dem im Oktober 2021 erscheinenden Python 3.10 ein, damit Sie auch für die Zukunft informiert sind. Wenn Ihre Python-Version noch nicht ganz so aktuell ist, wird dies eher selten ein Problem darstellen. Die allermeisten Programme sollten nämlich ohne Änderungen auch in etwas älteren Python-Versionen wie 3.8 oder 3.7 funktionieren.

Konventionen

Verwendete Zeichensätze

In diesem Buch gelten folgende Konventionen bezüglich der Schriftart: Neben der vorliegenden Schriftart werden wichtige Textpassagen kursiv oder kursiv und fett markiert. Englische Fachbegriffe werden eingedeutscht großgeschrieben, etwa Event Handling. Zusammensetzungen aus englischen und deutschen (oder eingedeutschten) Begriffen werden mit Bindestrich verbunden, z. B. Plugin-Manager. Listings mit Sourcecode sind in der Schrift Courier gesetzt, um zu verdeutlichen, dass diese einen Ausschnitt aus einem Python-Programm darstellen. Auch im normalen Text wird für Klassen, Funktionen, Methoden, Variablen und Parameter diese Schriftart genutzt.

Verwendete Abkürzungen

Im Buch verwende ich die in der nachfolgenden Tabelle aufgelisteten Abkürzungen. Weitere Abkürzungen werden im laufenden Text in Klammern nach ihrer ersten Definition aufgeführt und anschließend bei Bedarf genutzt.

Abkürzung

Bedeutung

API

Application Programming Interface

ASCII

American Standard Code for Information Interchange

IDE

Integrated Development Environment

Danksagung

Wie schon bei einigen meiner Bücher hat mich auch diesmal Michael Kulla wieder ganz besonders unterstützt, wie üblich breitgefächert vom Aufdecken von Tippfehlern bis hin zu diversen inhaltlichen Hinweisen. Das gilt insbesondere für die auf Java ausgerichtete Version dieses Buchs.

Selbstverständlich geht ein Dankeschön an das Team des dpunkt.verlags (Dr. Michael Barabas, Anja Weimer und Stefanie Weidner) für die tolle Zusammenarbeit. Außerdem möchte ich mich bei Tobias Overkamp für die fundierte fachliche Durchsicht sowie bei Ursula Zimpfer für ihre Adleraugen beim Copy-Editing bedanken.

Abschließend geht ein lieber Dank an meine Frau Lilija für ihr Verständnis und die Unterstützung. Ihren ganz besonderen Anteil hat unser kleiner Sonnenschein Sophie Jelena dazu beigetragen, indem sie den Papa immer wieder zum Lachen gebracht hat.

Anregungen und Kritik

Trotz großer Sorgfalt und mehrfachen Korrekturlesens lassen sich missverständliche Formulierungen oder sogar Fehler leider nicht vollständig ausschließen. Falls Ihnen etwas Derartiges auffallen sollte, so zögern Sie bitte nicht, mir dies mitzuteilen. Gerne nehme ich auch Anregungen oder Verbesserungsvorschläge entgegen. Kontaktieren Sie mich bitte per Mail unter:

Zürich, im September 2021

Michael Inden

I

Einstieg

1Einführung

1.1Python im Überblick

Python wurde Anfang der 1990er-Jahre von Guido von Rossum als Skriptsprache entwickelt und 1994 in der Version 1.0 veröffentlicht. Mittlerweile hat Python zwar schon mehr als 25 Jahre auf dem Buckel, wird aber nicht altersschwach, sondern kontinuierlich gepflegt und weiterentwickelt. Beispielsweise hat die bereits 2008 erschienene Hauptversion Python 3 diverse Aktualisierungen erfahren und liegt im Sommer 2021 in Version 3.9.6 vor. Für Oktober 2021 ist dann Python 3.10 geplant.

Hinweis: Python 2

Tatsächlich findet man immer noch Projekte und Informationen zur Vorgängerversion Python 2. Das neuere Python 3 ist an einigen Stellen nicht rückwärtskompatibel, bietet aber modernere Konzepte und sollte für Neuentwicklungen bevorzugt werden.

In den letzten Jahren wurde Python immer beliebter und ist nun eine der populärsten Programmiersprachen. Mittlerweile (im August 2021) hat Python laut TIOBE-Popularitätsindex1 den 2. Platz erobert und damit Java als langjährigen Zweitplatzierten überholt. Python wird vielleicht auch bald den Spitzenreiter C überflügeln, wenn sich der Aufwärtstrend weiter so fortsetzt. Eine wichtige Rolle spielt vermutlich die freie Verfügbarkeit für alle relevanten Betriebssysteme. Zudem ist Python recht einfach zu erlernen (zum Einstieg deutlich einfacher als Java und insbesondere als C oder C++). Auch in der Forschung und Lehre wird Python zunehmend populärer und gewinnt an Bedeutung. Schließlich ermöglicht Python sowohl die objektorientierte als auch die funktionale Programmierung, sodass man je nach Einsatzzweck geeignet wählen kann.

Außerdem ist Programmieren ein wunderbares Hobby sowie ein faszinierender Beruf und es macht zudem noch jede Menge Freude, fördert die Kreativität und den Gestaltungswillen.

Wie Sie sehen, sprechen viele gute Gründe für einen Einstieg in die Programmierung mit Python. Das Wichtigste ist jedoch der Spaß am Programmieren, Tüfteln und Ausprobieren. Lassen Sie uns starten!

Bestandteile von Python-Programmen

Python als Programmiersprache besitzt wie eine natürliche Sprache auch eine Grammatik und feststehende Begriffe / Wörter. Man spricht dabei von Syntax und Schlüsselwörtern (vgl. Anhang A).

Python-Programme werden textuell verfasst. Das wird Sourcecode genannt. Schauen wir uns zum Einstieg zwei einfache Python-Programme an. Wir beginnen mit der skriptbasierten (Zeile für Zeile abgearbeiteten) Variante des kürzestmöglichen HelloWorld-Programms, der Ausgabe eines Grußes auf der Konsole:

print("Hello world!")

Diese Funktionalität lässt sich auch ein wenig komplizierter folgendermaßen im objektorientierten Stil mithilfe einer Klasse verfassen:

Keine Sorge, Sie müssen das Ganze noch nicht verstehen, wir werden das alles Stück für Stück erlernen. Hier ist zunächst nur wichtig, dass Sie elementare Bestandteile von Python-Programmen grob einordnen können. Dazu gehören die Schlüsselwörter, also Python-Befehle oder -Anweisungen, hier etwa class, def und Funktions- bzw. Methodenaufrufe wie print() und greet(). Ebenso wie die Begriffe in einer Sprache tragen diese reservierten Wörter eine besondere Bedeutung, ganz analog etwa zu Auto, Haus, Tür usw. im Deutschen.

Ebenso wie im Deutschen können (oder besser sollten) die Begriffe nicht einfach wahllos miteinander verknüpft werden, denn dann ergibt dies keinen Sinn. Um einen gültigen Satz zu formulieren, bedarf es der Einhaltung einiger Regeln. Diese werden als Grammatik bezeichnet. Auch in Python existiert eine solche. Damit wird etwa festgelegt, dass es def greet(), aber nicht greet() def heißen muss.

Zudem sehen wir Einrückungen. Diese kann man sich wie Absätze in einem Text vorstellen. In Python bündeln diese Einrückungen Anweisungen. Man spricht dann auch von Blöcken.

Zunehmende Popularität von Python

Wie schon angedeutet, wird Python immer populärer. Beleuchten wir ein paar Gründe für diesen Trend. Zwei wesentliche sind sicher das breite Einsatzspektrum sowie die recht flache Lernkurve beim Einstieg: Erste Experimente gehen oftmals schnell von der Hand. Dabei hilft die auf das Wesentliche reduzierte Syntax (die wenigen Schlüsselwörter und Anweisungen) in Kombination mit einigen eleganten Sprachfeatures. Zum einfachen Ausprobieren existiert ein interaktiver Modus. Diesen starten Sie von der Kommandozeile mit dem Aufruf python (Windows) bzw. python3 (MacOS). Dann sollte Python gestartet werden und dies in etwa wie folgt protokollieren:

Python 3.9.6 (default, Jun 29 2021, 06:20:32)

[Clang 12.0.0 (clang-1200.0.32.29)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>>

Die drei >>> zeigen an, dass Python nun auf Ihre Befehle wartet. In diesem Modus können Sie kleinere Programme Zeile für Zeile eingeben und direkt die Resultate sehen, etwa folgendermaßen:

>>> 7 * 6

42

>>> print("Willkommen zum Python-Buch")

Willkommen zum Python-Buch

Weitere Vorteile Die gut verständliche Formatierung und Gestaltung von Blöcken mit Einrückungen statt der in anderen Programmiersprachen üblichen geschweiften Klammern erleichtern den Einstieg. Neben dieser optischen Hilfe und Strukturierung besitzt Python nur eine überschaubare Anzahl an Befehlen (Schlüsselwörter genannt).

Damit eine Programmiersprache eine gewisse Popularität erreichen kann, muss sie fast zwangsläufig für alle gängigen Betriebssysteme wie Windows, MacOS und UNIX verfügbar sein. Das ist für Python gegeben.

Eine weitere Rolle spielt das sogenannte Ökosystem, also die Menge an Tools und Frameworks sowie Bibliotheken, die für eine Programmiersprache existieren. Lange Zeit war hier Java vorbildlich und extrem stark. Python holt diesbezüglich aber stetig auf und es gibt diverse gute Entwicklungstools und weitere Bibliotheken, viele vor allem im Bereich AI (Artificial Intelligence) und ML (Machine Learning).

Zwischenfazit

Genug der vielen Informationen. Nachfolgend werden wir die Dinge gründlich und detailliert besprechen und didaktisch immer ein neues Themengebiet ergründen, bis wir schließlich einen guten Einstieg in die Python-Programmierung vollzogen haben werden. Vorab werden wir aber erst einmal Python selbst und die IDE namens PyCharm installieren und erste Schritte ausführen, um für unsere weitere Entdeckungsreise gewappnet zu sein.

1.2Los geht’s – Installation

Im ersten Teil dieses Buchs wird ein Hands-on-Ansatz verfolgt, bei dem wir Dinge oftmals in Form kleinerer Python-Codeschnipsel direkt ausprobieren. Sie benötigen vorab keine tiefgreifenden Programmiererfahrungen, allerdings schaden diese natürlich nicht, ganz im Gegenteil. Hilfreich wäre allerdings, wenn Sie sich einigermaßen mit dem Installieren von Programmen und grundlegend mit der Kommandozeile auskennen.

Damit Sie die nachfolgend beschriebenen Python-Programme ausführen können, benötigen Sie eine aktuelle Python-Installation. Beginnen wir also damit.

1.2.1Python-Download

Auf der Webseite https://www.python.org/ ist die aktuelle Python-Version frei verfügbar.

Abbildung 1-1Python-Download-Seite

Nachdem Sie auf den Link zum Python-Download geklickt haben, startet der Download. Wenn dieser abgeschlossen ist, fahren Sie wie im Anschluss beschrieben fort.

1.2.2Installation von Python

Die Installation von Python wird nachfolgend für die weitverbreiteten Betriebssysteme Windows und MacOS beschrieben. Falls Sie ein Unix-Derivat nutzen, dann finden Sie dort oftmals schon eine aktuelle Version von Python vorinstalliert.

Python-Installation für Windows

Für Windows doppelklicken Sie bitte auf die .exe-Datei, die nach erfolgreicher Installation gelöscht werden kann. Führen Sie also das heruntergeladene Installationsprogramm aus (z. B. python-3.9.6-amd64.exe). Damit wird Python installiert. Akzeptieren Sie die Standardeinstellungen und befolgen Sie die Anweisungen während der Installation. In einem Schritt kann auch angeklickt werden, dass der Pfad gesetzt werden soll. Das sollten Sie unbedingt anklicken, um spätere Aktionen und Änderungen an den Systemeinstellungen zu vermeiden.

Abbildung 1-2Python-Installation für Windows

Python-Installation für MacOS

Unter MacOS doppelklicken Sie auf die .pkg-Datei, um die Installation zu starten. Folgen Sie den Aufforderungen. Möglicherweise müssen Sie das Administrator-Passwort eingeben, um fortzufahren. Nachdem die Installation abgeschlossen ist, können Sie die .pkg-Datei löschen, um Speicherplatz zu sparen.

1.2.3Nacharbeiten nach der Python-Installation

Damit Python bei Ihnen nach der Installation auch in der Konsole korrekt funktioniert, sind mitunter noch ein paar Nacharbeiten nötig. Dazu müssen wir Python zur leichteren Handhabung in den Pfad aufnehmen. Dies wird nachfolgend für die weitverbreiteten Betriebssysteme Windows und MacOS beschrieben. Falls Sie ein Unix-Derivat nutzen, dann finden Sie dort oftmals schon eine aktuelle Version von Python vorinstalliert.

Nacharbeiten für Windows

Sofern nicht bereits während der Installation angeklickt, muss noch das Installationsverzeichnis in die Umgebungsvariable PATH aufgenommen werden. Diese können Sie unter »Umgebungsvariablen« ändern. Drücken Sie die Win-Taste und geben Sie dann »umgeb« ein, bis »Umgebungsvariablen für dieses Konto bearbeiten« erscheint. Mit Enter öffnet sich der Dialog »Umgebungsvariablen«. Hier wählen Sie den Eintrag »Path« aus und klicken auf den Button »Bearbeiten«. In die nun erscheinende Liste fügen Sie das Installationsverzeichnis ein. Dazu klicken Sie rechts auf den Button »Neu« und fügen dort zwei Verzeichnisse hinzu: Zuerst das Installationsverzeichnis, das bei einer Standardinstallation ungefähr so aussieht: C:\Users\MINDEN\AppData\Local\Programs\Python\Python39. Für das Unterverzeichnis Scripts lautet es ungefähr wie folgt: C:\Users\MINDEN\AppData\Local\Programs\Python\Python39\Scripts. Nach dem Schließen des Dialogs mit »OK« sollte das Ganze dann in etwa so aussehen:

Abbildung 1-3Umgebungsvariablen bearbeiten

Beachten Sie bitte Folgendes: Bestätigen Sie die gesamten Dialoge bitte immer mit »OK«, sodass die Variablen gesetzt sind. Eventuell geöffnete Konsolen müssen geschlossen und neu geöffnet werden, um die geänderten Variablen wirksam werden zu lassen.

Weitere Informationen finden Sie unter https://docs.python.org/3/using/windows.html.

Nacharbeiten für MacOS

Auch unter MacOS empfiehlt es sich, einen Verweis auf Python im Pfad in der jeweiligen Shell (dem Terminal) passend zu setzen. Normalerweise geschieht dies bei einer Installation automatisch. Ansonsten können Sie dies von Hand ausführen bzw. in das Startskript Ihrer Shell eintragen, etwa ~/.bash_profile oder neuer ~/.zshrc:

export PYTHON_HOME=/Library/Frameworks/Python.framework/Versions/3.9/

export PATH=$PYTHON_HOME/bin:$PATH

1.2.4Python-Installation prüfen

Nachdem Sie die obigen Schritte ausgeführt haben, sollte Python auf Ihrem Rechner installiert und von der Konsole startbar sein und Sie damit bereit sein für die nächsten Schritte.

Öffnen Sie eine Konsole und geben Sie das unten stehende Kommando ein – im folgenden Text nutze ich immer $ zur Kennzeichnung von Eingaben auf der Konsole, also der Windows-Eingabeaufforderung (python) und dem Terminal bei MacOS (python3) wie folgt:

$ python3

Python 3.9.6 (default, Jun 29 2021, 06:20:32)

[Clang 12.0.0 (clang-1200.0.32.29)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

Sofern Sie ähnliche Meldungen erhalten (möglicherweise mit kleinen Abweichungen bei den Versionsangaben), können wir uns auf die Entdeckungsreise zur Python-Programmierung machen. Wir beenden den interaktiven Modus wie folgt, um noch die skriptbasierte Ausführung kurz kennenzulernen.

>>> exit()

1.2.5Python-Programm als Skript ausführen

Wie schon erwähnt, kann man Python-Programme auch Zeile für Zeile ausführen lassen. Dazu kann man die Python-Anweisungen zunächst mit einem Texteditor eingeben, beispielsweise folgende Anweisungen:

print("Herzlich Willkommen zu 'Einfach Python'")

print("Viel Spaß wünscht Ihnen Michael Inden")

Speichern Sie dies als welcome.py ab. Danach können Sie die Anweisungen folgendermaßen starten:

$ python3 welcome.py

Python lädt und analysiert das Programm aus der Datei welcome.py und gibt als Folge diese Meldungen aus:

Herzlich Willkommen zu 'Einfach Python'

Viel Spaß wünscht Ihnen Michael Inden

1.3Entwicklungsumgebungen

Zum Schreiben von umfangreicheren Python-Programmen (also zum Bearbeiten von viel Sourcecode) empfehle ich den Einsatz einer IDE anstelle von Texteditoren oder anstatt rein auf der Konsole zu arbeiten. Für kleine Experimente ist aber gerade der Python-Kommandozeileninterpreter ein wunderbares Hilfsmittel.

Für Änderungen an größeren Python-Programmen kann man zwar auch mal einen Texteditor nutzen, aber dieser bietet nicht die Annehmlichkeiten einer IDE: In IDEs laufen verschiedene Aktionen und Sourcecode-Analysen automatisch und im Hintergrund ab, wodurch gewisse Softwaredefekte direkt noch während des Editierens erkannt und angezeigt werden können, etwa in einer To-do-/Task-Liste. IDEs bereiten zudem vielfältige Informationen auf. Des Weiteren werden diverse Annehmlichkeiten wie Quick Fixes zur Korrektur kleinerer Probleme sowie automatische Transformationen und Änderungen von Sourcecode, sogenannte Refactorings, unterstützt.

Für Python existieren verschiedene IDEs. Momentan besitzt PyCharm ganz klar eine Vorreiterrolle. Es basiert auf dem für Java populären IntelliJ IDEA. Praktischerweise gibt es PyCharm als kostenlose Community Edition sowie als kostenpflichtige Ultimate Edition. Mehr Informationen zu PyCharm sowie zum Download finden Sie im Anschluss und unter https://www.jetbrains.com/pycharm/.

Wenn Sie bereits etwas Erfahrung haben, dann sind Sie natürlich frei, sich andere IDEs anzuschauen und diese auszuprobieren. Vieles geht über persönliche Präferenzen.

1.3.1Installation von PyCharm

Gehen Sie auf die Seite https://www.jetbrains.com/pycharm/. Diese präsentiert sich ähnlich zur folgenden Abbildung. Dort finden Sie oben rechts einen Download-Button, den Sie bitte drücken.

Abbildung 1-4PyCharm-Hauptseite zum Download

Hinweis: Möglicherweise leicht abweichende Screenshots

Denken Sie bitte daran: Bei Ihnen können die nachfolgend gezeigten Abbildungen leicht abweichen, insbesondere, wenn Sie Windows verwenden. Die Screenshots wurden unter MacOS Big Sur erstellt.

Dadurch wird die Download-Seite mit ein paar Auswahlmöglichkeiten geöffnet. Hier können Sie unter anderem die Version für das gewünschte Betriebssystem sowie die kostenlose Community Edition oder die kostenpflichtige Ultimate Edition auswählen. Ein Klick auf den jeweiligen Download-Button startet dann den Download.

Abbildung 1-5PyCharm-Hauptseite zum Download (Fortsetzung)

Nachdem der Download abgeschlossen ist, entpacken oder starten Sie bitte das jeweilige heruntergeladene ZIP, DMG oder die Datei im jeweiligen Linux-Format. Für MacOS wird ein Fenster geöffnet, wo Sie das Programm per Drag and Drop in den Programme-Ordner verschieben können. Im Falle von Windows installieren Sie PyCharm bitte über die .exe-Datei. Der Einfachheit halber klicken Sie alle Optionen unter »Installation Options« an (64-bit launcher, add launchers dir to the PATH etc.). Ansonsten können Sie die vorgeschlagenen Werte übernehmen. Nach der Installation (und einem Reboot) können Sie PyCharm über das Startmenü oder das Desktop-Icon öffnen.

1.3.2PyCharm starten

Nach den beschriebenen Installationsschritten sollte Ihnen nun PyCharm als Programm im Startmenü bzw. der Programmauswahl zur Verfügung stehen. Starten Sie es bitte, etwa durch einen Doppelklick auf das Programm-Icon.

Bei MacOS erhalten Sie gegebenenfalls noch einen Warnhinweis, dass es sich um ein aus dem Internet heruntergeladenes Programm handelt. Dies können Sie ignorieren und durch einen Klick auf Öffnen fortfahren.

Abbildung 1-6Warnmeldung (MacOS)

Als Nächstes öffnet sich der Startbildschirm von PyCharm, der sich je nach Version leicht unterschiedlich präsentiert. Hier werden verschiedene Optionen angeboten, etwa das Anlegen neuer Projekte oder das Öffnen bestehender:

Abbildung 1-7Projekt anlegen oder öffnen

Das Importieren wird separat in der Beschreibung zum Download der Sourcen zu diesem Buch thematisiert. Wir schauen uns nachfolgend das Anlegen eines Projekts mitsamt einer einfachen Klasse sowie deren Start an.

Wenn Sie bereits Projekte erstellt oder importiert haben, dann sehen Sie in etwa folgende Darstellung:

Abbildung 1-8Projektliste mit Auswahl zum Projekt anlegen oder öffnen

Nun wollen wir uns dem Anlegen eines Projekts und eines ersten Python-Moduls sowie einer ersten Klasse widmen, um die Abläufe exemplarisch einmal durchzuspielen, die für spätere Aktionen notwendig sind. Keine Sorge, Sie müssen diese Schritte nicht im Detail verstehen. Es baut sich aber ein erstes Verständnis auf, das sich dann weiter vertieft, wenn Sie dies häufiger machen.

Beginnen wir mit dem Anlegen eines Python-Projekts. Klicken wir zunächst auf den Button New Project.

1.3.3Erstes Projekt in PyCharm

Zum Anlegen eines Projekts öffnet sich folgender Dialog, in dem Sie unter Location am Ende den gewünschten Namen des Projekts, hier MyFirstPythonProject, eintragen. Zudem müssen Sie noch die zu verwendende Python-Installation angeben und dazu gegebenenfalls das passende Installationsverzeichnis wählen. Zum Schluss empfiehlt es sich, für erste Experimente noch das Erzeugen eines initialen Python-Moduls main.py per Checkbox zu aktivieren. All dies ist durch Pfeile in der Abbildung gekennzeichnet.

Abbildung 1-9Dialog »New Project«

1.3.4Erstes Modul in PyCharm

Unser erstes Python-Projekt ist jetzt angelegt und ist bereit, um mit Leben in Form von Modulen und Klassen gefüllt zu werden. PyCharm sollte sich in etwa wie folgt präsentieren. Praktischerweise findet sich schon ein einfaches Grundgerüst als Datei main.py, wo Sie mit ersten Experimenten beginnen können.

Abbildung 1-10Neu angelegtes Projekt

Neues Modul anlegen

Ausgangspunkt zum Anlegen eines neuen Moduls ist die Baumdarstellung auf der linken Seite im Project Explorer. Dort öffnet man (durch einen Rechtsklick oder Ctrl + Klick) ein Kontextmenü unter anderem mit dem Eintrag New > Python File.

Abbildung 1-11Kontextmenü zum Anlegen einer Python-Datei

Durch Auswahl des Kontextmenüs öffnet sich folgender Dialog zum Erzeugen einer neuen Python-Datei.

Abbildung 1-12Dialog zum Erstellen einer neuen Python-Datei

Im Dialog muss man den gewünschten Dateiname eingeben, woraufhin diese Datei dann erzeugt wird. Wir nutzen myfirstpythonmodul als Namen.

Sourcecode editieren

Nachdem das Grundgerüst steht, können Sie dann den Sourcecode aus den Beispielen im Editor einfügen bzw. abtippen. Generell können Sie viele der hier gezeigten Aktionen auch zum Nachvollziehen der für den Python-Kommandozeileninterpreter gezeigten Programmschnipsel nutzen, indem Sie die Programmzeilen einfach im Editorfenster eintippen.

Abbildung 1-13Sourcecode editieren

Klasse ausführen

Schließlich wollen Sie sicherlich das so entstandene Python-Programm auch mal in Aktion erleben. Dazu ist eine main()-Funktion hilfreich, wie sie im vorherigen Beispiel zu sehen war. Die main()-Funktion ist jedoch optional. Wird diese nicht definiert, so werden die Python-Anweisungen im bereits vorgestellten Skriptmodus Zeile für Zeile ausgeführt.

Mithilfe des Kontextmenüs oder des grünen Play-Pfeils kann man die Ausführung in beiden Varianten starten. Allerdings muss beim ersten Mal immer über das Kontextmenü gestartet werden, weil dann eine Startkonfiguration angelegt wird. Diese erlaubt es, danach auch über den grünen Pfeil zu starten.

Abbildung 1-14Programm ausführen

2Schnelleinstieg

2.1Hallo Welt (Hello World)

Wir beginnen das Kennenlernen von Python mit einem simplen Programm, nämlich wie traditionell in den allermeisten Büchern mit HelloWorld, der Ausgabe eines Grußes auf der Konsole. Das haben wir schon in etwas komplizierterer Form in der Einleitung gesehen. Wir wollen es aber weiter vereinfachen und damit unsere Entdeckungsreise starten.

Weil Python einen interaktiven Kommandozeileninterpreter, auch Read-Eval-Print-Loop (REPL) genannt, bietet, beginnen wir unsere Experimente dort: Der interaktive Kommandozeileninterpreter erlaubt es uns, kleinere Python-Codeschnipsel auszuprobieren. Das erleichtert das schrittweise Erlernen.

Wir starten den interaktiven Kommandozeileninterpreter mit dem Kommando python (Windows) bzw. python3 (MacOS) wie folgt:

$ python3

Python 3.9.6 (default, Jun 29 2021, 06:20:32)

[Clang 12.0.0 (clang-1200.0.32.29)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>>

Neben dem Hinweis auf die Version zeigt der Prompt >>> an, dass wir nun Python-Befehle eingeben können. Probieren wir es gleich einmal aus:

>>> print("Hello World from Python!")

Hello World from Python!

Herzlichen Glückwunsch zur ersten Programmausgabe mit Python. Die eingebaute Funktionalität print() ermöglicht Ausgaben auf der Konsole. Derartige Aktionen werden durch sogenannte Funktionen bereitgestellt, in diesem Fall durch die Funktion print(), der man in runden Klammern einen Text eingerahmt von Anführungszeichen übergibt.

Selbst wenn es im Verlaufe dieses Schnelleinstieg-Kapitels ein klein wenig anspruchsvoller wird, keine Sorge, Sie müssen noch nicht alle Details verstehen – wir werden diese im Verlaufe dieses Buchs noch ausführlich besprechen. Jetzt geht es zunächst um die ersten Schritte und ein initiales Gespür. Tippen Sie die Beispiele einfach ab und wenn Sie sich sicher fühlen, dann variieren Sie diese auch gerne ein wenig.

Wir haben bereits einen netten Gruß auf der Konsole ausgeben können. Das war schon ein recht guter Anfang. Allerdings wäre es etwas eintönig, nur Texte ohne Variation auszugeben. Um den Gruß anzupassen oder Berechnungen ausführen zu können, lernen wir nun Variablen kennen.

Übrigens hätte man die Ausgabe sogar noch etwas kürzer erhalten können – allerdings ohne die wichtige Funktion print() kennenzulernen:

>>> "Hello World from Python!"

'Hello World from Python!'

2.2Variablen und Datentypen

Variablen dienen zum Speichern und Verwalten von Werten. Dabei gibt es unterschiedliche Typen (auch Datentypen genannt), etwa für Texte, Zahlen und Wahrheitswerte. Wir schauen uns dies zunächst einmal einführend an und erweitern dann unser Wissen Schritt für Schritt, beispielsweise um ergänzende Infos oder Aktionen mit den Variablen. Zum Einstieg betrachten und nutzen wir folgende Typen:

str

– Textuelle Informationen, wie z. B. "Hallo". Stringwerte sind von doppelten oder einfachen Anführungszeichen eingeschlossen.

int

– Ganzzahlen, wie 123, oder − 4711.

float

– Gleitkommazahlen mit Vor- und Nachkommastellen, wie 72,71 oder −1,357. Achtung: Weil Python die amerikanische Notation nutzt, werden als Dezimaltrenner Punkte statt Kommata verwendet. Somit muss es im Python-Programm

72.71

oder

-1.357

heißen.

bool

– Wahrheitswerte als wahr oder falsch, in Python:

True

oder

False

.

2.2.1Definition von Variablen

In Python erzeugen wir eine Variable, indem wir zunächst den Namen und danach eine Wertzuweisung nach folgendem Muster (auch Syntax genannt) nutzen:

Schauen wir uns ein paar Beispiele an:

Für das Beispiel mit einer Million sehen wir die Angabe von Unterstrichen, die sich gut zur Separierung, hier von Tausendersegmenten, eignen. Zwar habe ich es für the_answer gerade nur angedeutet, aber einer Variablen kann durchaus mehrmals im Programmverlauf an unterschiedlicher Stelle ein anderer Wert zugewiesen werden.

Den aktuellen Wert fragen wir durch Eingabe des Namens in der Konsole ab:

>>> age

18

>>> name

'Michael'

>>> one_million

1000000

Alternativ können wir die bereits kurz vorgestellte Funktion print() nutzen:

>>> print("Hello " + name)

Hello Michael

Manchmal soll kein automatischer Zeilenumbruch am Ende erfolgen, nämlich etwa dann, wenn man mehrere Ausgaben in einem Programm hintereinander in einer Zeile darstellen möchte. Dazu kann man print() mit Angabe eines leeren Endezeichens in Form von end="" verwenden – auch auf der Konsole erfolgt kein Zeilenumbruch:

>>> print("Hello " + name, end="")

Hello Michael>>>

Schließlich wollen wir die meisten der Variablen in eine Konsolenausgabe integrieren:

>>> print("Hello", name, "the answer is", the_answer, "and not", age)

Hello Michael the answer is 42 and not 18

Aber Moment: Wo sind denn die anfangs erwähnten Typen? Darauf kommen wir zurück, nachdem wir uns die Konsolenausgabe etwas genauer angeschaut haben.

Varianten der formatierten Ausgabe

Zur Ausgabe von Werten mit print() müssen diese in eine textuelle Form überführt werden. Das geschieht automatisch, wenn man die zuvor gezeigte kommaseparierte Variante nutzt. Alternativ kann man die Bestandteile durch einen Aufruf von str() in einen String wandeln und dann mit + verknüpfen. Dabei muss man aber auf die korrekte Angabe der Leerzeichen zum Abstand achten:

>>> print("Hello " + name + " the answer is " + str(the_answer) + " and not" + str(age))

Hello Michael the answer is 42 and not 18

Darüber hinaus gibt es noch diverse Varianten der Formatierung:

>>> print("Hello %s the answer is %d and not %d" % (name, the_answer, age))

>>> print("Hello {} the answer is {} and not {}".format(name, the_answer, age))

>>> print(f"Hello {name} the answer is {the_answer} and not {age}")

Zunächst sehen wir die Variante mit %, dann {} in Kombination mit format() sowie schließlich die sogenannten f-Strings, wo man benannte Platzhalter in einem String nutzt, dem ein f vorangestellt ist – Details zu diesen Möglichkeiten folgen später.

2.2.2Variablen und Typen

Tatsächlich sind die Typen von Variablen in Python nicht direkt sichtbar, aber sie lassen sich mit der eingebauten Funktion type() folgendermaßen abfragen:

>>> type(age)

<class 'int'>

>>> type(simple_pi)

<class 'float'>

>>> type(name)

<class 'str'>

>>> type(is_valid)

<class 'bool'>

Neben den kurz erwähnten Typnamen sehen wir weitere Informationen wie class, die hier nicht relevant sind und erst später in Kapitel 4 besprochen werden.

Zudem ist Python eine sogenannte dynamisch typisierte Sprache. Das bedeutet, dass sich zum einen der Typ ausgehend vom Wert ergibt und sich der Typ zum anderen sogar im Programmverlauf ändern kann, etwa wie folgt von float auf str:

Allerdings ist eine derartige Wiederverwendung kein guter Stil und kann zu Missverständnissen und Fehlverwendungen führen. Das gilt insbesondere, wenn im zeitlichen Verlauf statt einer Zahl ein Text gespeichert wird und somit der Typ wechselt:

Typumwandlung (Cast)

Gelegentlich sind Ganzzahlen statt Gleitkommazahlen als Ergebnis gewünscht. Liefert eine Funktion jedoch Gleitkommazahlen, so können wir mit dem sogenannten Casting arbeiten: Durch die Angabe typ(wert), wobei typ für str, int usw. steht, lässt sich ein Wert in den angegebenen Typ umwandeln. Nachfolgend nutzen wir int, um eine Gleitkommazahl in eine Ganzzahl zu verwandeln, wodurch die Nachkommastellen wie gewünscht abgeschnitten werden. Somit wird aus 3.1415 der Wert 3:

>>> int(3.1415)

3

Bei diesen Casts ändert sich insbesondere der Typ. In unserem Beispiel war das Abschneiden der Nachkommastellen ein schöner und gewünschter Nebeneffekt.

2.2.3Bezeichner (Variablennamen)

Ohne es explizit zu erwähnen, haben wir uns bei der Benennung von Variablen an ein paar Regeln gehalten. Zunächst einmal muss jede Variable (und auch die später vorgestellten Funktionen, Methoden und Klassen) durch einen eindeutigen Namen, auch Identifier oder Bezeichner genannt, gekennzeichnet werden.

Bei der Benennung sollte man folgende Regeln und Hinweise beachten:

Namen sollten mit einem Buchstaben beginnen

1

– Ziffern sind als erstes Zeichen eines Variablennamens nicht erlaubt.

Namen können danach aus einem beliebigen Mix aus Buchstaben (auch Umlauten), Ziffern und _ bestehen, dürfen aber keine Leerzeichen enthalten.

Enthalten Namen mehrere Wörter, dann ist es guter Stil, die sogenannte SnakeCaseSchreibweise zu verwenden, bei der jedes neue Wort getrennt durch

_

startet, etwa

arrival_time

,

estimated_duration

oder

short_description

.

Die Groß- und Kleinschreibung von Namen spielt eine Rolle:

arrival_Time

und

arrival_time

bezeichnen unterschiedliche Variablen.

Namen dürfen nicht mit den in Python vordefinierten und im Anhang aufgelisteten Schlüsselwörtern übereinstimmen, demzufolge sind

class

,

True

oder

int

keine gültigen Namen –

public_transport

oder

winter

hingegen sind erlaubt.

Übrigens spielt es für Python keine Rolle, ob Sie sehr kurze (i, m, p), kryptische (dpy,