Routineaufgaben mit Python automatisieren - Al Sweigart - E-Book

Routineaufgaben mit Python automatisieren E-Book

Al Sweigart

0,0

Beschreibung

US-Besteseller: Gegen stumpfsinnige Computeraufgaben!

  • Neuauflage auf Python 3 aktualisiert
  • Lernen Sie, Python-Programme zu schreiben, die Ihnen automatisch alle möglichen Aufgaben abnehmen
  • Mit Schritt-für-Schritt-Anleitungen zu jedem Programm

Wenn Sie jemals Stunden damit verbracht haben, Dateien umzubenennen oder Hunderte von Tabelleneinträgen zu aktualisieren, dann wissen Sie, wie stumpfsinnig manche Tätigkeiten sein können. Wie wäre es, den Computer dazu zu bringen, diese Arbeiten zu übernehmen?

In diesem Buch lernen Sie, wie Sie mit Python Aufgaben in Sekundenschnelle erledigen können, die sonst viel Zeit in Anspruch nehmen würden. Programmiererfahrung brauchen Sie dazu nicht: Wenn Sie einmal die Grundlagen gemeistert haben, werden Sie Python-Programme schreiben, die automatisch alle möglichen praktischen Aufgaben für Sie abarbeiten:

- eine oder eine Vielzahl von Dateien nach Texten durchsuchen
- Dateien und Ordner erzeugen, aktualisieren, verschieben und umbenennen
- das Web durchsuchen und Inhalte herunterladen
- Excel-Dateien aktualisieren und formatieren
- PDF-Dateien teilen, zusammenfügen, mit Wasserzeichen versehen und verschlüsseln
- Erinnerungsmails und Textnachrichten verschicken
- Online-Formulare ausfüllen

Schritt-für-Schritt-Anleitungen führen Sie durch jedes Programm und Übungsaufgaben am Ende jedes Kapitels fordern Sie dazu auf, die Programme zu verbessern und Ihre Fähigkeiten auf ähnliche Problemstellungen zu richten.

Verschwenden Sie nicht Ihre Zeit mit Aufgaben, die auch ein gut dressierter Affe erledigen könnte. Bringen Sie Ihren Computer dazu, die langweilige Arbeit zu machen!

"The best part of programming is the triumph of seeing the machine do something useful. (This book) frames all of programming as these small triumphs; it makes the boring fun."
Hilary Mason

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

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 835

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.



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

Al Sweigart

Routineaufgaben mitPython automatisieren

Praktische Programmierlösungen für Einsteiger

2., aktualisierte und erweiterte Auflage

Al Sweigart

Lektorat: Dr. Michael Barabas

Lektoratsassitenz: Anja Weimer

Fachgutachter/in: Ari Lacenski und Philip James

Übersetzung & Satz: G&U Language & Publishing Services GmbH, www.gundu.com

Copy-Editing: Ursula Zimpfer, Herrenberg

Herstellung: Stefanie Weidner

Umschlaggestaltung: Helmut Kraus, www.exclam.de

nach der Originalvorlage von No Starch Press

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-753-1

PDF    978-3-96088-956-4

ePub   978-3-96088-957-1

mobi   978-3-96088-958-8

2., aktualisierte und erweiterte Auflage 2020

Copyright © 2020 dpunkt.verlag GmbH

Wieblinger Weg 17

69123 Heidelberg

Copyright © 2020 by Al Sweigart. Title of English-language original: Automate the Boring Stuff with Python, 2th Edition: Practical Programming for Total Beginners, ISBN 978-1-59327-992-9, published by No Starch Press. German-language edition copyright © 2020 by dpunkt.verlag. All rights reserved.

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 noch Übersetzer 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

Inhalt

Der Autor

Der Fachgutachter

Danksagung

Einleitung

Für wen ist dieses Buch gedacht?

Programmierstil

Was ist Programmierung?

Was ist Python?

Programmierer müssen nicht viel Mathe können

Sie sind nie zu alt, um programmieren zu lernen

Programmierung ist kreativ

Der Aufbau dieses Buchs

Python herunterladen und installieren

Mu herunterladen und installieren

Mu starten

IDLE starten

Die interaktive Shell

Drittanbietermodule installieren

Hilfe finden

Sinnvolle Fragen stellen

Zusammenfassung

Teil 1Grundlagen der Python-Programmierung

 

1Grundlagen von Python

Ausdrücke in die interaktive Shell eingeben

Die Datentypen für ganze Zahlen, Fließkommazahlen und Strings

Stringverkettung und -wiederholung

Werte in Variablen speichern

Zuweisungsanweisungen

Variablennamen

Ihr erstes Programm

Analyse des Programms

Kommentare

Die Funktion print()

Die Funktion input()

Den Benutzernamen ausgeben

Die Funktion len()

Die Funktionen str(), int() und float()

Zusammenfassung

Wiederholungsfragen

2Flusssteuerung

Boolesche Werte

Vergleichsoperatoren

Boolesche Operatoren

Binäre boolesche Operatoren

Der Operator not

Kombinierte Verwendung von booleschen und Vergleichsoperatoren

Elemente zur Flusssteuerung

Bedingungen

Codeblöcke

Programmausführung

Flusssteuerungsanweisungen

If-Anweisungen

Else-Anweisungen

Elif-Anweisungen

While-Schleifen

Break-Anweisungen

Continue-Anweisungen

For-Schleifen und die Funktion range()

Module importieren

From-import-Anweisungen

Programme mit sys.exit() vorzeitig beenden

Ein kurzes Programm: Zahlen raten

Ein kurzes Programm: Stein, Schere, Papier

Zusammenfassung

Wiederholungsfragen

3Funktionen

Def-Anweisungen mit Parametern

Terminologie

Rückgabewerte und die Anweisung return

Der Wert None

Schlüsselwortargumente und print()

Der Aufrufstack

Lokaler und globaler Gültigkeitsbereich

Lokale Variablen können im globalen Gültigkeitsbereich nicht verwendet werden

Lokale Gültigkeitsbereiche können keine Variablen aus anderen lokalen Gültigkeitsbereichen verwenden

Globale Variablen können von einem lokalen Gültigkeitsbereich aus gelesen werden

Lokale und globale Variablen mit demselben Namen

Die Anweisung global

Ausnahmebehandlung

Ein kurzes Programm: Zickzackmuster

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Die Collatz-Folge

Eingabevalidierung

4Listen

Der Datentyp für Listen

Einzelne Elemente einer Liste mithilfe des Index abrufen

Negative Indizes

Teillisten mithilfe von Slices abrufen

Die Länge einer Liste mit len() abrufen

Werte in einer Liste mithilfe des Index ändern

Listenverkettung und -wiederholung

Elemente mit del aus einer Liste entfernen

Listen verwenden

Listen in for-Schleifen

Die Operatoren in und not in

Der Trick mit der Mehrfachzuweisung

Die Funktion enumerate() für Listen

Die Funktionen random.choice() und random.shuffle() für Listen

Erweiterte Zuweisungsoperatoren

Methoden

Elemente in einer Liste mit der Methode index() finden

Elemente mit den Methoden append() und insert() zu Listen hinzufügen

Elemente mit remove() aus Listen entfernen

Elemente in einer Liste mit sort() sortieren

Reihenfolge der Listeneinträge mit reverse() umkehren

Beispielprogramm: Magic 8 Ball mithilfe einer Liste

Sequenzielle Datentypen

Veränderbare und unveränderbare Datentypen

Der Datentyp für Tupel

Typen mit den Funktionen list() und tuple() umwandeln

Verweise

Identität und die Funktion id()

Verweise übergeben

Die Funktionen copy() und deepcopy() des Moduls copy

Ein kurzes Programm: Conways Spiel des Lebens

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Kommacode

Münzwurffolgen

Zeichenbildraster

5Dictionaries und Datenstrukturen

Der Datentyp für Dictionaries

Dictionaries und Listen im Vergleich

Die Methoden keys(), values() und items()

Das Vorhandensein eines Schlüssels oder Wertes im Dictionary ermitteln

Die Methode get()

Die Methode setdefault()

Saubere Ausgabe

Datenstrukturen zur Modellierung realer Objekte

Ein Tic-Tac-Toe-Brett

Verschachtelte Dictionaries und Listen

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Validierer für Schach-Dictionary

Inventar für ein Fantasyspiel

Eine Funktion zum Hinzufügen von Listeninhalten zum Inventar-Dictionary

6Stringbearbeitung

Umgang mit Strings

Stringliterale

Strings indizieren und Slices entnehmen

Die Operatoren in und not in für Strings

Strings in andere Strings einfügen

Nützliche Stringmethoden

Die Stringmethoden upper(), lower(), isupper() und islower()

Die isX-Stringmethoden

Die Stringmethoden startswith() und endswith()

Die Methoden join() und split()

Strings mit der Methode partition() aufteilen

Text mit rjust(), ljust() und center() ausrichten

Weißraum mit strip(), rstrip() und lstrip() entfernen

Die Funktionen ord() und chr() für numerische Zeichenwerte

Strings mit dem Modul pyperclip kopieren und einfügen

Projekt: Automatisierte Nachrichten mithilfe einer Mehrfach-Zwischenablage

Schritt 1: Programmdesign und Datenstrukturen

Schritt 2: Befehlszeilenargumente verarbeiten

Schritt 3: Die richtige Antwort kopieren

Projekt: Aufzählungspunkte zu einem Wiki-Markup hinzufügen

Schritt 1: Text von und zur Zwischenablage übertragen

Schritt 2: Textzeilen trennen und Sternchen hinzufügen

Schritt 3: Die veränderten Zeilen zusammenfügen

Ein kurzes Programm: Pig Latin

Zusammenfassung

Wiederholungsfragen

Übungsprojekt

Tabellenausgabe

Bots für Zombie Dice

Teil 2Aufgaben automatisieren

 

7Mustervergleich mit regulären Ausdrücken

Textmuster ohne reguläre Ausdrücke finden

Textmuster mithilfe regulärer Ausdrücke finden

Regex-Objekte erstellen

Vergleiche mit einem Regex-Objekt

Zusammenfassung: Mustervergleich mit regulären Ausdrücken

Weitere Möglichkeiten für den Mustervergleich mithilfe regulärer Ausdrücke

Gruppierung durch Klammern

Mithilfe der Pipe nach Übereinstimmungen mit mehreren Gruppen suchen

Optionale Übereinstimmung mit dem Fragezeichen

Mit dem Sternchen nach null oder mehr Übereinstimmungen suchen

Mit dem Pluszeichen nach einer oder mehr Übereinstimmungen suchen

Mit geschweiften Klammern nach einer genauen Zahl von Wiederholungen suchen

Gieriger und nicht gieriger Mustervergleich

Die Methode findall()

Zeichenklassen

Eigene Zeichenklassen bilden

Zirkumflex und Dollarzeichen

Das Jokerzeichen

Beliebige Übereinstimmungen mit Punkt-Stern finden

Zeilenumbrüche mit dem Punktsymbol finden

Übersicht über Regex-Symbole

Übereinstimmungen ohne Berücksichtigung der Groß- und Kleinschreibung

Strings mit der Methode sub() ersetzen

Umgang mit komplizierten regulären Ausdrücken

Die Variablen re.IGNORECASE, re.DOTALL und re.VERBOSE kombinieren

Projekt: Extraktionsprogramm für Telefonnummern und E-Mail-Adressen

Schritt 1: Einen regulären Ausdruck für Telefonnummern erstellen

Schritt 2: Einen regulären Ausdruck für E-Mail-Adressen erstellen

Schritt 3: Alle Überstimmungen im Inhalt der Zwischenablage finden

Schritt 4: Die gefundenen Übereinstimmungen zu einem String kombinieren

Das Programm ausführen

Ideen für ähnliche Programme

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Datumserkennung

Passwortstärke ermitteln

Regex-Version von strip()

8Eingabevalidierung

Das Modul PyInputPlus

Die Schlüsselwortargumente min, max, greaterThan und lessThan

Das Schlüsselwortargument blank

Die Schlüsselwortargumente limit, timeout und default

Die Schlüsselwortargumente allowRegexes und blockRegexes

Eine eigene Validierungsfunktion an inputCustom() übergeben

Projekt: Einen Trottel stundenlang beschäftigen

Projekt: Multiplikationstest

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Sandwichzubereiter

Ein eigenes Programm für den Multiplikationstest

9Dateien lesen und schreiben

Dateien und Dateipfade

Backslash unter Windows und Schrägstrich unter macOS und Linux

Pfade mit dem Operator / zusammenfügen

Das aktuelle Arbeitsverzeichnis

Das Benutzerverzeichnis

Absolute und relative Pfade

Neue Ordner mit os.makedirs() erstellen

Absolute und relative Pfade verwenden

Die Komponenten eines Dateipfads abrufen

Dateigrößen und Ordnerinhalte ermitteln

Eine Dateiliste mit Glob-Mustern bearbeiten

Die Gültigkeit von Pfaden prüfen

Dateien lesen und schreiben

Dateien mit der Funktion open() öffnen

Die Inhalte einer Datei lesen

Dateien schreiben

Variablen mit dem Modul shelve speichern

Variablen mit der Funktion pprint.pformat() speichern

Projekt: Zufallsgenerator für Tests

Schritt 1: Die Daten für den Test in einem Dictionary speichern

Schritt 2: Die Fragebogendatei erstellen und die Fragen mischen

Schritt 3: Die Auswahl der möglichen Antworten zusammenstellen

Schritt 4: Den Inhalt der Dateien für die Frage- und Lösungsbogen schreiben

Projekt: Aktualisierbare Mehrfach-Zwischenablage

Schritt 1: Kommentare und Vorbereitungen für die Shelf-Daten

Schritt 2: Den Inhalt der Zwischenablage unter einem Schlüsselwort speichern

Schritt 3: Schlüsselwörter auflisten und Inhalte laden

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Erweiterte Mehrfach-Zwischenablage

Lückentextspiel

Regex-Suche

10Dateien verwalten

Das Modul shutil

Dateien und Ordner kopieren

Dateien und Ordner verschieben und umbenennen

Dateien und Ordner unwiederbringlich löschen

Sicheres Löschen mit dem Modul send2trash

Einen Verzeichnisbaum durchlaufen

Dateien mit dem Modul zipfile komprimieren

ZIP-Dateien lesen

ZIP-Dateien entpacken

ZIP-Dateien erstellen und Inhalte hinzufügen

Projekt: Amerikanische Datumsangaben in Dateinamen in europäische Datumsangaben ändern

Projekt: Amerikanische Datumsangaben in Dateinamen in …

Schritt 1: Einen regulären Ausdruck für amerikanische Datumsangaben definieren

Schritt 2: Die einzelnen Teile der Datumsangabe in den Dateinamen ermitteln

Schritt 3: Die neuen Dateinamen zusammenstellen und die Dateien umbenennen

Vorschläge für ähnliche Programme

Projekt: Einen Ordner in einer ZIP-Datei sichern

Schritt 1: Den Namen der ZIP-Datei bestimmen

Schritt 2: Die neue ZIP-Datei erstellen

Schritt 3: Den Verzeichnisbaum durchlaufen und Inhalte zur ZIP-Datei hinzufügen

Vorschläge für ähnliche Programme

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Selektives Kopieren

Nicht mehr benötigte Dateien löschen

Lücken entfernen

11Debugging

Ausnahmen auslösen

Traceback als String abrufen

Zusicherungen (Assertions)

Zusicherungen in einem Ampelsimulator

Protokollierung

Das Modul logging verwenden

Kein Debugging mit print()

Protokolliergrade

Die Protokollierung deaktivieren

Protokollierung in eine Datei

Der Debugger von Mu

Continue

Step In

Step Over

Step Out

Stop

Debugging eines Additionsprogramms

Haltepunkte

Zusammenfassung

Wiederholungsfragen

Übungsprojekt

Münzwurfprogramm

12Web Scraping

Projekt: mapIt.py mit dem Modul webbrowser

Schritt 1: Die URL herausfinden

Schritt 2: Befehlszeilenargumente verarbeiten

Schritt 3: Den Inhalt der Zwischenablage verarbeiten und den Browser starten

Vorschläge für ähnliche Programme

Dateien mithilfe des Moduls requests aus dem Web herunterladen

Eine Webseite mit der Funktion requests.get() herunterladen

Auf Fehler prüfen

Heruntergeladene Dateien auf der Festplatte speichern

HTML

Quellen zu HTML

Ein kleiner Auffrischungskurs

Den HTML-Quellcode einer Webseite einsehen

Die Entwicklertools des Browsers öffnen

HTML-Elemente mithilfe der Entwicklertools finden

HTML mit dem Modul bs4 durchsuchen

Ein BeautifulSoup-Objekt aus dem HTML-Text erstellen

Elemente mit der Methode select() finden

Daten aus den Attributen eines Elements abrufen

Projekt: Alle Suchergebnisse öffnen

Schritt 1: Die Befehlszeilenargumente abrufen und die Suchergebnisseite anfordern

Schritt 2: Alle Ergebnisse finden

Schritt 3: Browsertabs für jedes Suchergebnis öffnen

Vorschläge für ähnliche Programme

Projekt: Alle XKCD-Comics herunterladen

Schritt 1: Den Aufbau des Programms festlegen

Schritt 2: Die Webseite herunterladen

Schritt 3: Das Bild des Comics finden und herunterladen

Schritt 4: Das Bild speichern und den vorherigen Comic suchen

Vorschläge für ähnliche Programme

Den Browser mit dem Modul selenium steuern

Einen seleniumgesteuerten Browser starten

Elemente auf der Seite finden

Auf Elemente klicken

Formulare ausfüllen und absenden

Die Betätigung von Sondertasten simulieren

Auf Browserschaltflächen klicken

Weitere Informationen über Selenium

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

E-Mail-Programm für die Befehlszeile

Downloadprogramm für Fotowebsites

2048

Linküberprüfung

13Excel-Arbeitsblätter

Excel-Dokumente

Das Modul openpyxl installieren

Excel-Dokumente lesen

Excel-Dokumente mit OpenPyXL öffnen

Arbeitsblätter aus der Arbeitsmappe abrufen

Zellen eines Arbeitsblatts abrufen

Umrechnen zwischen Kennbuchstaben und Nummern

Zeilen und Spalten eines Arbeitsblatts abrufen

Arbeitsmappen, Arbeitsblätter und Zellen

Projekt: Daten in einer Arbeitsmappe lesen

Schritt 1: Die Daten der Arbeitsmappe lesen

Schritt 2: Die Datenstruktur füllen

Schritt 3: Die Ergebnisse in eine Datei schreiben

Vorschläge für ähnliche Programme

Excel-Dokumente schreiben

Excel-Dokumente erstellen und speichern

Arbeitsblätter erstellen und entfernen

Werte in Zellen schreiben

Projekt: Ein Arbeitsblatt aktualisieren

Schritt 1: Eine Datenstruktur mit den neuen Informationen einrichten

Schritt 2: Alle Zeilen prüfen und die falschen Preise korrigieren

Vorschläge für ähnliche Programme

Die Schrift in den Zellen gestalten

Font-Objekte

Formeln

Das Erscheinungsbild von Zeilen und Spalten festlegen

Zeilenhöhe und Spaltenbreite festlegen

Zellen verbinden und aufteilen

Bereiche fixieren

Diagramme

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Multiplikationstabellen erstellen

Leere Zeilen einfügen

Zellen transponieren

Textdateien in Arbeitsblätter umwandeln

Arbeitsblätter in Textdateien umwandeln

14Google Tabellen

EZSheets installieren und einrichten

Anmeldeinformationen und Tokendateien beziehen

Die Datei mit den Anmeldeinformationen widerrufen

Spreadsheet-Objekte

Tabellen erstellen, hochladen und auflisten

Tabellenattribute

Tabellen hoch- und herunterladen

Tabellen löschen

Sheet-Objekte

Daten lesen und schreiben

Tabellenblätter erstellen und löschen

Tabellenblätter kopieren

Grenzwerte für Google Tabellen

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Daten von Google Formulare herunterladen

Tabellen in andere Formate umwandeln

Fehler in einer Tabelle finden

15PDF- und Word-Dokumente

PDF-Dokumente

Text aus PDFs entnehmen

PDFs entschlüsseln

PDFs erstellen

Projekt: Ausgewählte Seiten aus mehreren PDFs kombinieren

Schritt 1: Alle PDF-Dateien finden

Schritt 2: Die einzelnen PDFs öffnen

Schritt 3: Die einzelnen Seiten hinzufügen

Schritt 4: Die Ergebnisse speichern

Vorschläge für ähnliche Programme

Word-Dokumente

Word-Dokumente lesen

Den kompletten Text einer .docx-Datei abrufen

Absätze und Run-Objekte formatieren

Word-Dokumente mit anderen als den Standardformaten erstellen

Run-Attribute

Word-Dokumente schreiben

Überschriften hinzufügen

Zeilenwechsel und Seitenumbrüche hinzufügen

Bilder einfügen

PDF-Dateien aus Word-Dokumenten erstellen

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

PDF-Paranoia

Personalisierte Einladungen als Word-Dokument

Brute-Force-Passwortknacker für PDFs

16CSV-Dateien und JSON-Daten

Das Modul csv

Reader-Objekte

Daten in einer for-Schleife aus reader-Objekten lesen

Writer-Objekte

Die Schlüsselwortargumente delimiter und lineterminator

DictReader- und DictWriter-Objekte

Projekt: Kopfzeilen aus CSV-Dateien entfernen

Schritt 1: Alle CSV-Dateien durchlaufen

Schritt 2: Die CSV-Datei lesen

Schritt 3: Die CSV-Datei ohne die erste Zeile schreiben

Vorschläge für ähnliche Programme

JSON und APIs

Das Modul json

JSON-Daten mit der Funktion loads() laden

JSON-Daten mit der Funktion dumps() schreiben

Projekt: Die aktuellen Wetterdaten abrufen

Schritt 1: Den Standort aus dem Befehlszeilenargument entnehmen

Schritt 2: Die JSON-Daten herunterladen

Schritt 3: JSON-Daten laden und die Wettervorhersage ausgeben

Vorschläge für ähnliche Programme

Zusammenfassung

Wiederholungsfragen

Übungsprojekt

Excel-in-CSV-Konverter

17Zeit und Aufgabenplanung

Das Modul time

Die Funktion time.time()

Die Funktion time.sleep()

Zahlen runden

Projekt: Superstoppuhr

Schritt 1: Das Programm auf die Zeitmessung vorbereiten

Schritt 2: Intervalldauern messen und anzeigen

Vorschläge für ähnliche Programme

Das Modul datetime

Der Datentyp timedelta

Anhalten bis zu einem bestimmten Zeitpunkt

datetime-Objekte in Strings umwandeln

Strings in datetime-Objekte umwandeln

Die Zeitfunktionen von Python im Überblick

Multithreading

Argumente an die Zielfunktion eines Threads übergeben

Probleme der Nebenläufigkeit

Projekt: Multithread-Version des XKCD-Downloadprogramms

Schritt 1: Eine Funktion für den Download verwenden

Schritt 2: Threads erstellen und starten

Schritt 3: Auf das Ende aller Threads warten

Andere Programme von Python aus starten

Befehlszeilenargumente an Popen() übergeben

Taskplaner, launchd und cron

Websites mit Python aufrufen

Andere Python-Skripte ausführen

Dateien in ihren Standardanwendungen öffnen

Projekt: Ein einfaches Countdown-Programm

Schritt 1: Der Countdown

Schritt 2: Die Klangdatei abspielen

Vorschläge für ähnliche Programme

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Elegantere Stoppuhr

Webcomic-Downloadprogramm mit Zeitplanung

18E-Mails und Textnachrichten

E-Mails mit der Gmail-API senden und empfangen

Die Gmail-API aktivieren

E-Mails von einem Gmail-Konto senden

E-Mails in einem Gmail-Konto lesen

E-Mails in einem Gmail-Konto suchen

Anhänge von einem Gmail-Konto herunterladen

SMTP

E-Mails senden

Verbindung mit einem SMTP-Server aufnehmen

Die »Hallo«-Nachricht an den SMTP-Server senden

Die TLS-Verschlüsselung einleiten

Am SMTP-Server anmelden

Eine E-Mail senden

Die Verbindung zum SMTP-Server trennen

IMAP

E-Mails mit IMAP abrufen und löschen

Verbindung mit einem IMAP-Server aufnehmen

Am IMAP-Server anmelden

Nach E-Mails suchen

E-Mails abrufen und als gelesen markieren

E-Mail-Adressen aus einer Rohnachricht gewinnen

Den Rumpf aus einer Rohnachricht gewinnen

E-Mails löschen

Die Verbindung zum IMAP-Server trennen

Projekt: E-Mails über ausstehende Mitgliedsbeiträge senden

Schritt 1: Die Excel-Datei öffnen

Schritt 2: Alle säumigen Mitglieder finden

Schritt 3: Personalisierte E-Mail-Mahnungen senden

Textnachrichten über SMS-E-Mail-Gateways senden

Textnachrichten mit Twilio senden

Ein Twilio-Konto einrichten

Textnachrichten senden

Projekt: Das Modul »Just Text Me«

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Zufällige Zuweisung von Arbeiten

Regenschirmhinweis

Automatischer Entregistrierer

Den Computer per E-Mail steuern

19Bildbearbeitung

Grundlagen zur Bilddarstellung auf Computern

Farben und RGBA-Werte

Koordinaten und Rechtecktupel

Bildbearbeitung mit Pillow

Mit dem Datentyp Image arbeiten

Bilder beschneiden

Bilder kopieren und in andere Bilder einfügen

Die Bildgröße ändern

Bilder drehen und spiegeln

Einzelne Pixel ändern

Projekt: Ein Logo hinzufügen

Schritt 1: Das Logobild öffnen

Schritt 2: Alle Dateien durchlaufen und die Bilder öffnen

Schritt 3: Die Bildgröße ändern

Schritt 4: Logo hinzufügen und Änderungen speichern

Vorschläge für ähnliche Programme

Bilder zeichnen

Formen zeichnen

Text zeichnen

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Das Logoprogramm erweitern und verbessern

Fotoordner auf der Festplatte finden

Personalisierte Tischkarten

20GUI-Automatisierung

Das Modul PyAutoGUI installieren

Zugriff auf macOS erlauben

Kleine Probleme beheben

Die PyAutoGUI-Notfallsicherung

Beenden durch Abmelden

Den Mauszeiger steuern

Den Mauszeiger bewegen

Die Position des Mauszeigers abrufen

Mausinteraktionen

Klicken

Ziehen

Scrollen

Mausbewegungen planen

Auf dem Bildschirm arbeiten

Einen Screenshot aufnehmen

Einen Screenshot analysieren

Bilderkennung

Informationen über das Fenster abrufen

Das aktive Fenster abrufen

Andere Möglichkeiten zum Abrufen von Fenstern

Fenster bearbeiten

Die Tastatur steuern

Strings von der Tastatur senden

Tastennamen

Tasten drücken und loslassen

Tastenkombinationen

GUI-Automatisierungsskripte einrichten

Übersicht über die Funktionen von PyAutoGUI

Projekt: Formulare automatisch ausfüllen

Schritt 1: Den Ablauf herausfinden

Schritt 2: Die Koordinaten ermitteln

Schritt 3: Daten eingeben

Schritt 4: Auswahllisten und Optionsschalter

Schritt 5: Das Formular absenden und warten

Dialogfelder anzeigen

Zusammenfassung

Wiederholungsfragen

Übungsprojekte

Beschäftigung vortäuschen

Textfelder über Zwischenablage lesen

Instant-Messenger-Bot

Tutorial für einen Spiele-Bot

Anhang

 

A Drittanbietermodule installieren

Pip

Drittanbietermodule installieren

Module für Mu installieren

B Programme ausführen

Programme im Terminalfenster ausführen

Python-Programme unter Windows ausführen

Python-Programme unter macOS ausführen

Programme unter Ubuntu Linux ausführen

Python-Programme mit ausgeschalteten Zusicherungen ausführen

C Antworten auf die Wiederholungsfragen

Kapitel 1

Kapitel 2

Kapitel 3

Kapitel 4

Kapitel 5

Kapitel 6

Kapitel 7

Kapitel 8

Kapitel 9

Kapitel 10

Kapitel 11

Kapitel 12

Kapitel 13

Kapitel 14

Kapitel 15

Kapitel 16

Kapitel 17

Kapitel 18

Kapitel 19

Kapitel 20

Stichwortverzeichnis

Für meinen Neffen Jack

Der Autor

Al Sweigart ist Softwareentwickler und Fachbuchautor. Seine Lieblingsprogrammiersprache ist Python und er hat bereits mehrere Open-Source-Module dafür entwickelt. Seine anderen Bücher sind auf seiner Website http://www.inventwithpython.com/ unter einer Creative-Commons-Lizenz kostenlos erhältlich. Seine Katze wiegt 11 Pfund.

Der Fachgutachter

Philip James arbeitet schon mehr als zehn Jahre mit Python und tritt in der Python-Community häufig als Redner zu unterschiedlichen Themen von Unix-Grundlagen bis zu Social Media auf Open-Source-Basis auf. Er ist einer der Hauptbeteiligten am BeeWare-Projekt und lebt mit seiner Partnerin Nic und deren Katze River in der Bay Area von San Francisco.

Danksagung

Es ist irreführend, dass nur mein Name auf dem Umschlag steht, denn um dieses Buch schreiben zu können, habe ich die Hilfe vieler Menschen benötigt. Ich möchte meinem Herausgeber Bill Pollock, meinen Lektoren Laurel Chun, Leslie Shen, Greg Poulos, Jennifer Griffith-Delgado und Frances Saux sowie allen anderen Mitarbeitern bei No Starch Press für ihre unschätzbare Hilfe danken. Ein Dank geht auch an meine Fachgutachter Ari Lacenski und Philip James für ihre hervorragenden Vorschläge und Verbesserungen sowie für ihre Unterstützung.

Vielen Dank auch allen Mitgliedern der Python Software Foundation für ihre großartige Arbeit. Die Python-Community ist die beste, die ich in der IT-Branche gefunden habe.

Schließlich möchte ich noch meiner Familie, meinen Freunden und der Clique bei Shotwell’s danken, weil sie es mir nicht übel genommen haben, dass ich während des Schreibens an diesem Buch dauernd beschäftigt war. Dankeschön!

Einleitung

»Du hast gerade in zwei Stunden das erledigt, woran wir drei sonst zwei Tage lang sitzen!«

Mein Mitbewohner in den frühen 2000er-Jahren arbeitete bei einem Elektronikhändler, bei dem gelegentlich eine Tabelle mit Tausenden von Produktpreisen anderer Läden auftauchte. Drei Mitarbeiter druckten diese Tabelle dann auf einem dicken Stapel Papier aus und teilten diesen unter sich auf. Für jeden Produktpreis schlugen sie den Preis ihres eigenen Arbeitgebers nach und notierten alle Produkte, die die Konkurrenz billiger anbot. Damit waren sie gewöhnlich zwei Tage beschäftigt.

»Wenn ich die Originaldatei bekomme, kann ich ein Programm schreiben, das die Arbeit für euch erledigt«, schlug mein Mitbewohner ihnen vor, als er sah, wie sie inmitten eines Riesenhaufens Papier auf dem Fußboden hockten.

Nach ein paar Stunden hatte er ein kurzes Programm geschrieben, das die Preisliste der Konkurrenten aus der Datei auslas, die Produkte in der Datenbank des Elektronikladens nachschlug und einen Vermerk machte, wenn die Konkurrenz billiger war. Er war immer noch ein Anfänger in Sachen Programmierung und hatte den Großteil dieser Stunden damit zugebracht, die Dokumentation in einem Programmierbuch nachzuschlagen. Die Ausführung des fertigen Programms dauerte nur wenige Sekunden. An dem Tag gönnten sich mein Mitbewohner und seine Kollegen eine besonders lange Mittagspause.

Das zeigt das Potenzial der Programmierung. Ein Computer ist wie ein Schweizer Messer und lässt sich für zahllose Aufgaben einrichten. Viele Leute bringen Stunden mit Klicken und Tippen zu, um monotone Aufgaben auszuführen, ohne zu ahnen, dass der Computer diese Arbeit in wenigen Sekunden erledigen könnte, wenn er nur die richtigen Anweisungen dafür bekäme.

Für wen ist dieses Buch gedacht?

Software bildet die Grundlage vieler unserer Geräte, die wir für die Arbeit und in der Freizeit verwenden: Fast jeder nutzt soziale Netzwerke zur Kommunikation, die Telefone vieler Menschen enthalten Computer mit Internetzugriff und für die meisten Büroarbeiten ist Computerarbeit erforderlich. Daher ist die Nachfrage nach Personen, die programmieren können, sprunghaft angestiegen. Unzählige Bücher, interaktive Webtutorials und Schulungen für Entwickler werden mit dem Versprechen beworben, ehrgeizige Anfänger zu Softwareingenieuren zu machen, die sechsstellige Gehälter verlangen können.

Dieses Buch ist jedoch nicht für diese Leute gedacht, sondern für alle anderen.

Mit diesem Buch allein können Sie nicht zu einem professionellen Softwareentwickler werden, genauso wenig, wie ein paar Gitarrenstunden Sie zu einem Rockstar machen. Wenn Sie aber Büroangestellter, Administrator oder Akademiker sind oder auch nur zur Arbeit oder zum Vergnügen einen Computer benutzen, so werden Sie hier die Grundlagen der Programmierung kennenlernen, um einfache Aufgaben wie die folgenden zu automatisieren:

Tausende von Dateien verschieben und umbenennen und in Ordner sortieren

Onlineformulare ausfüllen, ohne Text eingeben zu müssen

Dateien von einer Website herunterladen oder Texte von dort kopieren, sobald dort neues Material bereitgestellt wird

Sich von Ihrem Computer per SMS benachrichtigen lassen

Excel-Arbeitsblätter bearbeiten und formatieren

Nach neuen E-Mails suchen und vorformulierte Antworten senden

Diese Aufgaben sind einfach, aber zeitraubend, und sie sind häufig so trivial oder so spezifisch, dass es keine fertige Software dafür gibt. Mit einigen Programmierkenntnissen können Sie Ihren Computer diese Aufgaben für Sie erledigen lassen.

Programmierstil

Dieses Buch ist nicht als Nachschlagewerk gedacht, sondern als Anleitung für Anfänger. Der Programmierstil verstößt manchmal gegen die üblichen Richtlinien (beispielsweise werden in einigen Programmen globale Variablen verwendet), aber das ist ein Kompromiss, um das Lernen zu erleichtern. In diesem Buch lernen Sie, Wegwerfcode für einmalige Aufgaben zu schreiben, weshalb wir nicht viel Mühe auf Stil und Eleganz verwenden. Auch anspruchsvolle Programmierkonzepte wie Objektorientierung, Listenabstraktion und Generatoren werden hier aufgrund ihrer Kompliziertheit nicht behandelt. Altgediente Programmierer werden den Code sicherlich ändern wollen, um die Effizienz zu erhöhen, aber in diesem Buch geht es darum, Programme mit so wenig Aufwand wie möglich zum Laufen zu bekommen.

Was ist Programmierung?

In Filmen und Fernsehserien werden Programmierer oft als Leute dargestellt, die rasend schnell auf einer Tastatur herumtippen, um kryptische Folgen von Nullen und Einsen auf leuchtenden Bildschirmen erscheinen zu lassen. In Wirklichkeit ist moderne Programmierung aber nicht so geheimnisvoll. Programmierung ist einfach die Eingabe von Anweisungen, die der Computer ausführen soll. Diese Anweisungen können dazu dienen, mit Zahlen zu rechnen, Text zu ändern, Informationen in Dateien nachzuschlagen oder über das Internet mit anderen Computern zu kommunizieren.

Alle Programme bestehen aus einfachen Anweisungen, die die Grundbausteine darstellen. Einige der gebräuchlichsten dieser Anweisungen besagen, auf Deutsch übersetzt, Folgendes:

»Mach dies; dann mach das.«

»Wenn diese Bedingung wahr ist, dann führe diese Aktion aus; anderenfalls jene Aktion.«

»Mach dies genau 27 Mal.«

»Mach dies, solange die Bedingung wahr ist.«

Diese Bausteine können Sie kombinieren, um auch kompliziertere Entscheidungen zu treffen. Im folgenden Beispiel sehen Sie die Programmieranweisungen – den Quellcode – für ein einfaches Programm in der Programmiersprache Python. Die Software Python führt die einzelnen Codezeilen vom Anfang bis zum Ende aus. (Manche Zeilen werden nur ausgeführt, wenn (if) eine Bedingung wahr ist (true); anderenfalls (else) führt Python eine andere Zeile aus.)

Auch wenn Sie noch nicht viel von Programmierung verstehen, können Sie vielleicht schon erraten, was der vorstehende Code bewirkt. Als Erstes wird die Datei SecretPasswordFile.txt geöffnet () und das geheime Passwort gelesen (). Danach wird der Benutzer aufgefordert, ein Passwort einzugeben (über die Tastatur) (). Die beiden Passwörter werden verglichen (), und wenn sie identisch sind, gibt das Programm auf dem Bildschirm die Meldung Access granted (»Zugriff gewährt«) aus (). Danach prüft das Programm, ob das Passwort 12345 lautet (). Wenn ja, gibt es dem Benutzer den dezenten Hinweis, dass dies nicht gerade die ideale Wahl für ein Passwort ist (). Sind die Passwörter nicht identisch, gibt das Programm Access denied (»Zugriff verweigert«) aus ().

Was ist Python?

Der Begriff Python bezeichnet die Programmiersprache Python (deren Syntaxregeln festlegen, was als gültiger Python-Code angesehen wird) und den Python-Interpreter, eine Software, die den (in der Sprache Python geschriebenen) Code liest und dessen Anweisungen ausführt. Den Python-Interpreter können Sie kostenlos von https://python.org/ herunterladen, wobei es Versionen für Linux, macOS und Windows gibt.

Der Name Python ist übrigens nicht von der Schlange abgeleitet, sondern von der surrealistischen britischen Komikergruppe Monty Python. Python-Programmierer werden liebevoll »Pythonistas« genannt, und Tutorials sowie die Dokumentation zu Python stecken voller Anspielungen sowohl auf Monty Python als auch auf Schlangen.

Programmierer müssen nicht viel Mathe können

Wenn mir jemand erklärt, warum er Angst davor hat, Programmieren zu lernen, geht es meistens darum, dass er glaubt, dazu müsste man sehr gut in Mathematik sein. In Wirklichkeit ist zur Programmierung meistens nicht mehr Mathe als einfache Grundrechenarten erforderlich. Programmieren lässt sich in diesem Punkt sogar mit dem Lösen von Sudoku-Rätseln vergleichen. Dazu müssen Sie in jede Zeile, jede Spalte und jedes innere 3x3-Quadrat des 9x9-Feldes die Zahlen von 1 bis 9 einfügen, wobei bereits einige Zahlen vorgegeben sind. Aus diesen Zahlen leiten Sie die Lösung durch Deduktion und Logik ab. In der Aufgabe in Abb. E–1 kommt beispielsweise eine 5 sowohl in der ersten als auch in der zweiten Zeile vor. Daher muss die 5 im oberen rechten Quadrat in der dritten Zeile stehen. Da sich auch schon eine 5 in der letzten Spalte befindet, kann die 5 in der dritten Zeile nicht rechts neben der 6 stehen. Damit bleibt nur der Platz links von der 6 übrig. Jede Zeile, jede Spalte und jedes Quadrat, das Sie lösen, gibt Ihnen weitere Hinweise für den Rest des Rätsels. Mit jeder Gruppe der Zahlen von 1 bis 9, die Sie vervollständigen, nähern Sie sich der Lösung des gesamten Rätsels.

Abb. 2–1Ein Sudoku-Rätsel (links) und die Lösung (rechts). Beim Sudoku geht es zwar um Zahlen, doch ist dafür keine Mathematik erforderlich. (Bilder (c) Wikimedia Commons)

Nur weil es bei Sudoku um Zahlen geht, heißt das noch lange nicht, dass man gut in Mathe sein muss, um die Lösung auszuknobeln. Das Gleiche gilt auch fürs Programmieren. Wie beim Sudoku müssen Sie auch beim Programmieren das Problem in einzelne Schritte zerlegen. Beim Debuggen von Programmen (also beim Aufspüren und Beheben von Fehlern) müssen Sie geduldig beobachten, was das Programm macht, und die Ursachen von Fehlern herausfinden. Wie bei allen anderen Fähigkeiten werden Sie auch beim Programmieren umso besser, je mehr Erfahrung Sie haben.

Sie sind nie zu alt, um programmieren zu lernen

Den zweithäufigsten Einwand, den ich im Zusammenhang mit Programmierung zu hören bekomme, ist, dass jemand glaubt, zu alt zu sein, um diese Tätigkeit noch zu erlernen. Im Internet musste ich schon viele Kommentare von Leuten lesen, die meinten, sie seien mit sage und schreibe 23 Jahren (!) schon zu alt dafür. Das ist ganz sicher nicht »zu alt«, um programmieren zu lernen. Viele Menschen eignen sich in viel höherem Alter neue Fähigkeiten an.

Man muss nicht als Kind anfangen, um ein fähiger Programmierer zu werden. Die Vorstellung von Programmierern als Wunderkindern ist aber nicht totzukriegen. Leider habe ich selbst zu der Legende beigetragen, weil ich erzählt habe, dass ich bereits in der Grundschule mit dem Programmieren angefangen habe.

Programmieren lässt sich heutzutage leichter lernen als in den 90ern, denn heute gibt es viel mehr Bücher, bessere Suchmaschinen und viel mehr Websites, auf denen Sie Antworten auf Ihre Fragen bekommen. Vor allem aber sind die Programmiersprachen selbst viel benutzerfreundlicher geworden. Daher können Sie sich heute alles, was ich zwischen Grundschule und High-School-Abschluss über Programmierung gelernt habe, an ungefähr einem Dutzend Wochenenden erarbeiten. Mein Vorsprung war in Wirklichkeit gar kein so großer Vorsprung.

Programmieren lernt man nur durch Übung. Wir werden nicht als Programmierer geboren, und noch nicht programmieren zu können, heißt nicht, dass man niemals ein Experte auf diesem Gebiet werden könnte.

Programmierung ist kreativ

Programmieren ist eine ebenso kreative Tätigkeit wie Malen, Schreiben, Stricken und das Bauen mit Lego-Steinen. Genauso wie das Malen auf einer leeren Leinwand ist die Entwicklung von Software zwar gewissen Einschränkungen unterworfen, bietet aber auch unendlich viele Möglichkeiten.

Der Unterschied zwischen Programmierung und anderen kreativen Tätigkeiten besteht darin, dass Sie beim Programmieren das gesamte erforderliche Rohmaterial in Ihrem Computer haben. Sie müssen keine Leinwand, keine Farbe, keinen Film, kein Garn, keine Lego-Steine oder elektronischen Bauteile kaufen. Ein zehn Jahre alter Computer ist mehr als leistungsfähig genug, um damit Programme zu schreiben. Ein fertiges Programm können Sie beliebig oft kopieren. Während ein gestrickter Pullover immer nur von einer einzigen Person auf einmal getragen werden kann, lässt sich ein nützliches Programm auf einfache Weise der ganzen Welt online zur Verfügung stellen.

Der Aufbau dieses Buchs

Der erste Teil dieses Buchs behandelt die Grundlagen der Python-Programmierung. Im zweiten Teil sehen wir uns dann verschiedene Aufgaben an, die Sie automatisieren können. In jedem Kapitel des zweiten Teils gibt es Übungsprojekte. Die folgende Übersicht zeigt, was Sie in den einzelnen Kapiteln erwartet:

Teil I: Grundlagen der Python-Programmierung

Kapitel 1: Grundlagen von PythonHier werden Ausdrücke vorgestellt, die grundlegendste Art von Python-Anweisungen. Außerdem erfahren Sie, wie Sie die interaktive Shell von Python verwenden, um Code auszuprobieren.

Kapitel 2: FlusssteuerungIn diesem Kapitel erfahren Sie, wie Ihre Programme entscheiden können, welcher Code in einer bestimmten Situation ausgeführt werden soll. Dadurch können Sie auf unterschiedliche Bedingungen reagieren.

Kapitel 3: FunktionenDieses Kapitel zeigt Ihnen, wie Sie eigene Funktionen definieren, um Ihren Code in besser handhabbare Abschnitte zu gliedern.

Kapitel 4: ListenHier erhalten Sie eine Einführung in den Datentyp der Listen und erfahren, wie Sie damit Daten gliedern können.

Kapitel 5: Dictionaries und DatenstrukturenDieses Kapitel gibt eine Einführung in den Datentyp der Dictionaries und führt noch weitere Möglichkeiten auf, um Daten zu gliedern.

Kapitel 6: StringbearbeitungHier geht es um die Arbeit mit Textdaten (die in Python Strings genannt werden).

Teil II: Aufgaben automatisieren

Kapitel 7: Mustervergleich mit regulären AusdrückenHier erfahren Sie, wie Sie mit regulären Ausdrücken nach Textmustern suchen können.

Kapitel 8: EingabevalidierungHier wird erläutert, wie Ihr Programm die von Benutzern eingegebenen Informationen überprüfen kann, damit die Daten nicht in einer Form vorliegen, die im weiteren Verlauf des Programms Fehler verursachen kann.

Kapitel 9: Dateien lesen und schreibenDieses Kapitel erklärt, wie Ihre Programme den Inhalt von Textdateien lesen und selbst Informationen in Dateien auf der Festplatte speichern können.

Kapitel 10: Dateien verwaltenSie erfahren hier, wie Python große Mengen von Dateien kopieren, verschieben, umbenennen und löschen kann, und zwar viel schneller, als ein menschlicher Bearbeiter es tun könnte. Außerdem werden das Komprimieren und Entpacken von Dateien erklärt.

Kapitel 11: DebuggingHier werden die verschiedenen Instrumente vorgestellt, die in Python zur Verfügung stehen, um Fehler (Bugs) zu finden und zu beheben.

Kapitel 12: Web ScrapingDieses Kapitel zeigt Ihnen, wie Sie Programme schreiben, die automatisch Webseiten herunterladen und nach Informationen durchforsten. Dieser Vorgang wird Web Scraping genannt.

Kapitel 13: Excel-ArbeitsblätterHier geht es darum, wie Sie Excel-Arbeitsblätter programmgesteuert bearbeiten, sodass Sie das nicht manuell tun müssen. Das ist besonders praktisch, wenn die Anzahl der Dokumente, die Sie analysieren müssen, in die Hunderte oder gar in die Tausende geht.

Kapitel 14: Google TabellenIn diesem Kapitel erfahren Sie, wie Sie mit Python Daten in der häufig genutzten Online-Tabellenkalkulationsanwendung Google Tabellen lesen und bearbeiten.

Kapitel 15: PDF- und Word-DokumenteDieses Kapitel behandelt das programmgesteuerte Lesen von Word- und PDF-Dokumenten.

Kapitel 16: CSV-Dateien und JSON-DatenDie Erklärung der programmgesteuerten Bearbeitung von Dokumenten wird hier für CSV- und JSON-Dateien fortgesetzt.

Kapitel 17: Zeit und AufgabenplanungHier lernen Sie, wie Python Uhrzeiten und Kalenderdaten handhabt und wie Sie dafür sorgen, dass Ihr Computer Aufgaben zu einem bestimmten Zeitpunkt ausführt. Außerdem erfahren Sie, wie Sie von Python-Programmen aus andere Programme starten.

Kapitel 18: E-Mails und TextnachrichtenIn diesem Kapitel geht es darum, Programme zu schreiben, die an Ihrer Stelle E-Mails und Textnachrichten senden.

Kapitel 19: BildbearbeitungDieses Kapitel erklärt, wie Sie Bilder, z. B. JPEG- oder PNG-Dateien, in Ihren Programmen bearbeiten können.

Kapitel 20: GUI-AutomatisierungHier lernen Sie, wie Sie mit einem Programm die Maus und die Tastatur steuern, um Mausklicks und Tastenbetätigungen zu simulieren.

Anhang A: Drittanbietermodule installierenDieser Anhang zeigt, wie Sie Python mithilfe von nützlichen Modulen erweitern können.

Anhang B:Programme ausführenHier erfahren Sie, wie Sie Python-Programme unter Windows, macOS und Linux außerhalb des Codeeditors ausführen.

Anhang C:Antworten auf die WiederholungsfragenHier finden Sie die Lösungen sowie einige zusätzliche Erklärungen zu den Wiederholungsfragen, die am Ende jedes Kapitels stehen.

Python herunterladen und installieren

Python können Sie kostenlos für Windows, macOS und Linux von https://python.org/downloads/ herunterladen. Wenn Sie die neueste Version verwenden, die auf der Website angeboten wird, sollten alle Programme in diesem Buch funktionieren.

Warnung

Achten Sie darauf, eine Version von Python 3 herunterzuladen (z. B. 3.8.0). Die Programme in diesem Buch sind für Python 3 geschrieben. Auf Python 2 funktionieren sie unter Umständen gar nicht oder zumindest nicht korrekt.

Auf der Downloadseite finden Sie Installer für die verschiedenen Betriebssysteme und dabei wiederum jeweils für 64- und für 32-Bit-Computer. Als Erstes müssen Sie daher herausfinden, welchen Installer Sie brauchen. Wenn Sie Ihren Computer 2007 oder später gekauft haben, handelt es sich sehr wahrscheinlich um ein 64-Bit-System, anderenfalls eher um einen 32-Bit-Rechner. Genau herausfinden können Sie das wie folgt:

Auf Windows wählen Sie

Start > Systemsteuerung > System

und schauen nach, ob als Systemtyp 64 Bit oder 32 Bit angegeben wird.

Auf macOS wählen Sie im Apfelmenü

Über diesen Mac > Weitere Informationen > Systembericht > Hardware

. Schauen Sie sich in der

Hardware-Übersicht

den Eintrag unter

Prozessortyp

an. Wenn dort

Intel Core Solo

oder

Intel Core Duo

steht, haben Sie einen 32-Bit-Rechner. Bei allen anderen Einträgen (auch

Intel Core 2 Duo

) handelt es sich um einen 64-Bit-Computer.

Auf Ubuntu Linux geben Sie in einem Terminalfenster den Befehl

uname -m

ein. Die Antwort

i686

bedeutet, dass Sie einen 32-Bit-Computer haben. Bei einem 64-Bit-Rechner lautet die Antwort

x86_64

.

Laden Sie auf Windows den Python-Installer (mit der Endung .msi) herunter und doppelklicken Sie darauf. Befolgen Sie die Anweisungen, die auf dem Bildschirm angezeigt werden. Der Vorgang läuft wie folgt ab:

Wählen Sie

Install for All Users

und dann

Weiter

.

Akzeptieren Sie in den nächsten Fenstern jeweils die Standardoptionen, indem Sie auf

Weiter

klicken.

Auf macOS laden Sie die passende .dmg-Datei für Ihre Version des Betriebssystems herunter und doppelklicken darauf. Befolgen Sie die Anweisungen, die auf dem Bildschirm angezeigt werden. Der Vorgang läuft wie folgt ab:

Wenn das DMG-Paket in einem neuen Fenster geöffnet wird, doppelklicken Sie auf die Datei

Python.mpkg

. Möglicherweise müssen Sie Ihr Administratorpasswort eingeben.

Akzeptieren Sie in den nächsten Fenstern jeweils die Standardoptionen, indem Sie auf

Weiter

klicken, und klicken Sie auf

Agree

, um die Lizenzbedingungen zu akzeptieren.

Klicken Sie im letzten Fenster auf

Install

.

Auf Ubuntu können Sie Python wie folgt im Terminal installieren:

Öffnen Sie ein Terminalfenster.

Geben Sie

sudo apt-get install python3

ein.

Geben Sie

sudo apt-get install idle3

ein.

Geben Sie

sudo apt-get install python3-pip

ein.

Mu herunterladen und installieren

Der Python-Interpreter ist die Software, die Ihre Python-Programme ausführt. Die Eingabe der Programme dagegen erfolgt im Editor Mu ähnlich wie in einer Textverarbeitung. Mu können Sie von https://codewith.mu/ herunterladen.

Auf Windows und macOS laden Sie die Installerdatei für Ihr Betriebssystem herunter und führen sie aus, indem Sie darauf doppelklicken. Auf macOS wird dadurch ein Fenster geöffnet, in dem Sie das Mu-Symbol in den Ordner Programm ziehen müssen, um mit der Installation fortzufahren. Auf Ubuntu installieren Sie Mu als Python-Paket. Klicken Sie dazu auf der Downloadseite im Abschnitt Python Package auf die Schaltfläche Instructions.

Mu starten

Um Mu zu starten, gehen Sie wie folgt vor:

Auf Windows 7 und höher klicken Sie auf das Startsymbol in der linken unteren Ecke, geben

Mu

in das Suchfeld ein und wählen die Anwendung aus.

Auf macOS öffnen Sie ein Finder-Fenster, klicken auf

Programme

und dann auf

mu-editor

.

Auf Ubuntu wählen Sie

Anwendungen > Zubehör > Terminal

und geben dann

python3 -m mu

ein.

Wenn Sie Mu zum ersten Mal ausführen, erscheint das Fenster Select Mode mit den Optionen Adafruit CircuitPython, BBC micro:bit, Pygame Zero und Python 3. Wählen Sie hier Python 3. Bei Bedarf können Sie den Modus später wieder ändern. Klicken Sie dazu auf die Schaltfläche Mode oben im Editorfenster.

Hinweis

Um die in diesem Buch verwendeten Drittanbietermodule installieren zu können, brauchen Sie Mu in der Version 1.1.0. Sie steht zurzeit als Alpha-Release unter einem eigenen Link getrennt von den anderen Downloadlinks zur Verfügung.

IDLE starten

In diesem Buch verwenden wir Mu als Editor und als interaktive Shell. Um Python-Code zu schreiben, können Sie jedoch auch beliebige andere Editoren verwenden. Zusammen mit Python wird die Software IDLE (Integrated Development and Learning Environment) installiert, die Sie ebenfalls als Editor verwenden können, wenn Sie Mu aus irgendeinem Grunde nicht installieren oder zum Laufen bekommen können. Um IDLE zu starten, gehen Sie wie folgt vor:

Auf Windows 7 und höher klicken Sie auf das Startsymbol in der linken unteren Ecke, geben

IDLE

in das Suchfeld ein und wählen

IDLE (Python GUI)

aus.

Auf macOS öffnen Sie ein Finder-Fenster, klicken auf

Programme

, dann auf

Python 3.8

und schließlich auf das IDLE-Symbol.

Auf Ubuntu wählen Sie

Anwendungen > Zubehör > Terminal

und geben dann

idle3

ein. (Möglicherweise können Sie auch oben auf dem Bildschirm auf

Anwendungen

klicken, dann

Programming

auswählen und auf

IDLE3

klicken.)

Die interaktive Shell

Wenn Sie Mu ausführen, sehen Sie normalerweise das Editorfenster. Sie können in Mu allerdings auch eine interaktive Shell öffnen, indem Sie auf die Schaltfläche REPL klicken. Eine Shell ist ein Programm, in das Sie Anweisungen für den Computer eingeben können, ähnlich wie im Terminal von macOS oder an der Eingabeaufforderung von Windows. In die interaktive Python-Shell geben Sie die Anweisungen ein, die der Python-Interpreter ausführen soll. Der Computer liest diese Anweisungen und setzt sie sofort um.

In Mu ist die interaktive Shell ein Bereich in der unteren Hälfte des Fensters. Dort wird folgender Text angezeigt:

Jupyter QtConsole 4.3.1

Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit

(AMD64)]

Type 'copyright', 'credits' or 'license' for more information

IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Wenn Sie IDLE verwenden, erscheint als erstes Fenster die interaktive Shell. Sie ist bis auf den folgenden Text größtenteils leer:

Python 3.8.0b1 (tags/v3.8.0b1:3b5deb0116, Jun 4 2019, 19:52:55) [MSC v.1916

64 bit (AMD64)] on win32

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

>>>

Bei [1]: und >>> handelt es sich jeweils um die Eingabeaufforderung. In diesem Buch verwenden wir dafür das Zeichen >>>, da es gebräuchlicher ist. Auch im Terminal oder an der Windows-Eingabeaufforderung sehen Sie >>>. Die Eingabeaufforderung [1]: wurde für Jupyter Notebook erfunden, einen weiteren weitverbreiteten Python-Editor.

Zum Ausprobieren geben Sie an der Eingabeaufforderung der Shell Folgendes ein:

>>> print('Hello, world!')

Wenn Sie nun die Eingabetaste drücken, zeigt die interaktive Shell die Reaktion an:

>>> print('Hello, world!')

Hello, world!

Damit haben Sie Ihrem Computer gerade eine Anweisung erteilt, und er hat genau das getan, was Sie von ihm verlangt haben!

Drittanbietermodule installieren

Für manche Zwecke muss ein Programm Module importieren. Einige davon sind im Lieferumfang von Python enthalten, aber andere – sogenannte Drittanbietermodule – wurden von Programmierern erstellt, die nicht zum Hauptentwicklerteam von Python gehören. In Anhang A finden Sie eine ausführliche Anleitung, um solche Module mit dem Programm pip (auf Windows) bzw. pip3 (auf macOS und Linux) zu installieren. Wenn Sie in diesem Buch angewiesen werden, ein bestimmtes Drittanbietermodul zu installieren, schlagen Sie in Anhang A nach.

Hilfe finden

Programmierer neigen dazu, im Internet nach Antworten auf ihre Fragen zu suchen. Das ist eine ganz andere Art des Lernens, als viele es gewohnt sind. Es gibt hier keinen persönlich anwesenden Lehrer, der Ihnen etwas beibringt und Ihre Fragen beantwortet. Was das Internet als Klassenzimmer auszeichnet, ist die Tatsache, dass es dort sehr viele Menschen gibt, die Ihre Fragen beantworten können. Höchstwahrscheinlich ist Ihre Frage auch schon längst beantwortet worden, sodass die Lösung lediglich darauf wartet, dass Sie sie finden. Wenn Sie eine Fehlermeldung erhalten oder Schwierigkeiten haben, den Code das machen zu lassen, was er soll, sind Sie nicht die erste Person, die sich diesem Problem gegenübersieht. Daher ist es viel einfacher, als Sie glauben, eine Lösung zu finden.

Um Ihnen ein Beispiel zu geben, provozieren wir absichtlich einen Fehler: Geben Sie in die interaktive Shell '42' + 3 ein. Machen Sie sich keine Gedanken darüber, was diese Anweisung bedeutet und was daran falsch sein soll, sondern achten Sie auf das Ergebnis:

>>> '42' + 3

Traceback (most recent call last):

File "<pyshell#0>", line 1, in <module>

'42' + 3

TypeError: Can't convert 'int' object to str implicitly

>>>

Da Python die Anweisung nicht versteht, erscheint hier eine Fehlermeldung (). Der als »Traceback« bezeichnete Teil der Fehlermeldung () gibt die Anweisung und die Nummer der Zeile an, mit der Python Schwierigkeiten hat. Wenn Sie eine Fehlermeldung erhalten, die Ihnen schleierhaft ist, suchen Sie online danach. In diesem Fall also würden Sie "TypeError: Can't convert 'int' object to str implicitly" (in Anführungszeichen) in eine Suchmaschine eingeben. Daraufhin sehen Sie haufenweise Links, in denen erklärt wird, was diese Fehlermeldung bedeutet und was die Ursache ist (siehe E–2).

Abb. 2–2Google-Ergebnisse zu einer Fehlermeldung können sehr hilfreich sein.

Sie werden dabei sehr oft bemerken, dass schon einmal jemand die gleiche Frage gestellt hat wie Sie und irgendeine hilfsbereite Person sie bereits beantwortet hat. Niemand kann alles über Programmierung wissen. Zur täglichen Arbeit eines Softwareentwicklers gehört auch die Suche nach Antworten auf technische Fragen.

Sinnvolle Fragen stellen

Wenn Sie die Antworten auf Ihre Fragen nicht durch eine Onlinesuche finden können, versuchen Sie, Teilnehmer in Webforen wie Stack Overflow (https://stackoverflow.com/) oder dem Subreddit »Learn Programming« auf https://reddit.com/r/learnprogramming/ zu fragen. Beachten Sie aber, dass Sie Ihre Fragen geschickt stellen müssen, damit andere Ihnen helfen können. Lesen Sie auf jeden Fall den FAQ-Abschnitt der Website, um zu erfahren, wie Sie Fragen auf richtige Weise vorbringen.

Wenn Sie Fragen zur Programmierung stellen, sollten Sie Folgendes tun:

Erklären Sie nicht nur, was Sie getan haben, sondern auch, was Sie tun wollten. Dadurch können Helfer erkennen, ob Sie sich verrannt haben.

Geben Sie genau an, wann der Fehler auftritt. Zeigt er sich gleich zu Beginn des Programms oder erst nach einer bestimmten Aktion?

Kopieren Sie die

gesamte

Fehlermeldung und Ihren Code auf

https://pastebin.com/

oder

https://gist.github.com/

. Diese Websites erleichtern es, anderen Personen große Mengen an Code über das Web zur Verfügung zu stellen, ohne die Formatierung zu verlieren. Die URL zu dem dort veröffentlichten Code fügen Sie dann in Ihre E-Mail oder Ihren Forumspost ein. Als Beispiele können Sie sich Code von mir auf

https://pastebin.com/SzP2DbFx/

und

https://gist.github.com/asweigart/6912168/

ansehen.

Erklären Sie, was Sie bereits versucht haben, um das Problem zu lösen. Das zeigt den anderen, dass Sie selbst schon etwas Mühe darin investiert haben, die Lösung herauszufinden.

Geben Sie an, welche Version von Python Sie verwenden. (Es gibt einige entscheidende Unterschiede zwischen den Python-Interpretern der Versionen 2 und 3.) Nennen Sie auch die Version Ihres Betriebssystems.

Wenn ein Fehler nach einer Änderung am Code auftrat, erklären Sie, was Sie genau geändert haben.

Geben Sie an, ob der Fehler jedes Mal auftritt, wenn Sie das Programm ausführen, oder nur, nachdem Sie bestimmte Aktionen durchgeführt haben. Beschreiben Sie in letzterem Fall auch diese Aktionen.

Befolgen Sie immer die Online-Etikette. Schreiben Sie also Ihre Posts nicht komplett in Großbuchstaben und stellen Sie keine unsinnigen Forderungen an die Menschen, die Ihnen zu helfen versuchen.

Weitere Informationen darüber, wie Sie um Hilfe bei Programmierfragen bitten können, erhalten Sie in dem Blogpost auf https://autbor.com/help/. Eine Liste häufig gestellter Fragen über Programmierung finden Sie auf https://www.reddit.com/r/learnprogramming/wiki/faq/. Eine ähnliche Liste zu dem Thema, einen Job im Bereich der Softwareentwicklung zu bekommen, steht auf https://www.reddit.com/r/cscareerquestions/wiki/index/.

Ich helfe anderen gern dabei, Python kennenzulernen. So schreibe ich Programmiertutorials in meinem Blog auf https://inventwithpython.com/blog/. Sie können sich mit Ihren Fragen auch über [email protected] an mich wenden (in Englisch). Eine schnellere Antwort dürften Sie allerdings erhalten, wenn Sie Ihre Fragen auf https://reddit.com/r/inventwithpython/ stellen.

Zusammenfassung

Für die meisten Menschen ist ein Computer eher ein Gerät als ein Werkzeug. Wenn Sie jedoch zu programmieren lernen, steht Ihnen eines der vielseitigsten Werkzeuge der modernen Welt zur Verfügung, und obendrein werden Sie auch noch Spaß dabei haben. Programmierung ist keine Gehirnchirurgie – Sie können sich auch als Anfänger daran versuchen und gefahrlos Fehler machen.

Für dieses Buch müssen Sie keinerlei Programmierkenntnisse mitbringen. Es kann aber sein, dass Sie Fragen haben, die über den behandelten Stoff hinausgehen. Die richtigen Fragen zu stellen und zu wissen, wo Sie Antworten finden können, ist für Programmierer von unschätzbarem Wert.

Fangen wir an!

Teil 1

Grundlagen der Python-Programmierung

1

Grundlagen von Python

Die Programmiersprache Python bietet eine breite Palette von syntaktischen Konstruktionen, Standardbibliotheksfunktionen und Möglichkeiten zur interaktiven Entwicklung. Zum Glück brauchen Sie sich um das meiste davon nicht zu kümmern, sondern müssen nur so viel lernen, dass Sie damit praktische kleine Programme schreiben können.

Allerdings müssen Sie, bevor Sie irgendetwas tun können, zunächst einige Grundlagen der Programmierung erlernen. Wie ein Zauberlehrling werden Sie vielleicht denken, dass einige dieser Grundlagen ziemlich undurchsichtig sind und dass es viel Mühe macht, sie sich anzueignen, aber diese Kenntnisse und etwas Übung werden Sie in die Lage versetzen, Ihren Computer wie einen Zauberstab zu nutzen und damit unglaublich erscheinende Dinge zu tun.

In einigen Beispielen in diesem Kapitel werden Sie dazu aufgefordert, etwas in die interaktive Shell, auch REPL (Read-Evaluate-Print Loop, also etwa »Lesen-Auswerten-Ausgeben-Schleife«) genannt, einzugeben. Damit können Sie eine Python-Anweisung nach der anderen ausführen und die Ergebnisse unmittelbar einsehen. Die Verwendung dieser Shell eignet sich hervorragend, um zu lernen, was die grundlegenden Python-Anweisungen bewirken. Nutzen Sie sie daher, während Sie das Buch durcharbeiten. Auf diese Weise können Sie sich den Stoff besser merken, als wenn Sie ihn nur lesen würden.

Ausdrücke in die interaktive Shell eingeben

Um die interaktive Shell auszuführen, können Sie den Editor Mu starten, den Sie beim Durcharbeiten der Installationsanleitungen im Vorwort heruntergeladen haben. Auf Windows öffnen Sie dazu das Startmenü, geben Mu ein und starten die gleichnamige Anwendung. Auf macOS öffnen Sie den Ordner Programme und doppelklicken darin auf Mu. Klicken Sie auf die Schaltfläche New und speichern Sie die leere Datei als blank.py. Wenn Sie diese leere Datei ausführen, indem Sie auf Run klicken oder drücken, wird die interaktive Shell als neuer Bereich am unteren Rand des Mu-Fensters geöffnet. Dort sehen Sie die Eingabeaufforderung >>> der Shell.

Geben Sie dort 2 + 2 ein, um Python eine einfache Berechnung ausführen zu lassen. Das Mu-Fenster zeigt jetzt Folgendes an:

>>> 2 + 2

4

>>>

In Python wird etwas wie 2 + 2 als Ausdruck bezeichnet. Dies ist die einfachste Form von Programmieranweisungen in dieser Sprache. Ausdrücke setzen sich aus Werten (wie 2) und Operatoren (wie +) zusammen. Sie können stets ausgewertet, also auf einen einzigen Wert reduziert werden. Daher können Sie an allen Stellen im Python-Code, an denen ein Wert stehen soll, auch einen Ausdruck verwenden.

Im vorstehenden Beispiel wurde 2 + 2 zu dem Wert 4 ausgewertet. Ein einzelner Wert ohne Operatoren wird ebenfalls als Ausdruck angesehen, wird aber nur zu sich selbst ausgewertet:

>>> 2

2

Fehler sind kein Beinbruch

Wenn ein Programm Code enthält, den der Computer nicht versteht, stürzt es ab, woraufhin Python eine Fehlermeldung anzeigt. Ihren Computer können Sie dadurch jedoch nicht beschädigen. Daher brauchen Sie auch keine Angst vor Fehlern zu haben. Bei einem Absturz hält das Programm nur unerwartet an.

Wenn Sie mehr über eine bestimmte Fehlermeldung wissen wollen, können Sie online nach dem genauen Text suchen. Auf www.dpunkt.de/python_automatisieren_2/ finden Sie außerdem eine Liste häufig auftretender Python-Fehlermeldungen und ihrer Bedeutungen.

Es gibt eine Menge verschiedener Operatoren, die Sie in Python-Ausdrücken verwenden können. Tabelle 1–1 führt die arithmetischen Operatoren auf.

Operator

Operation

Beispiel

Ergebnis

**

Exponent

2 ** 3

8

%

Modulo/Rest

22 % 8

6

//

Integerdivision/abgerundeter Quotient

22 // 8

2

/

Division

22 / 8

2.75

*

Multiplikation

3 * 5

15

-

Subtraktion

5 - 2

3

+

Addition

2 + 2

4

Tab. 1–1Arithmetische Operatoren, geordnet vom höchsten zum niedrigsten Rang

Die Auswertungsreihenfolge oder Rangfolge der arithmetischen Operatoren in Python entspricht ihrer gewöhnlichen Rangfolge in der Mathematik: Als Erstes wird der Operator ** ausgewertet, dann die Operatoren *, /, // und % von links nach rechts, und schließlich die Operatoren + und - (ebenfalls von links nach rechts). Um die Auswertungsreihenfolge zu ändern, können Sie bei Bedarf Klammern setzen. Der Weißraum zwischen den Operatoren und Werten spielt in Python keine Rolle (außer bei den Einrückungen am Zeilenanfang). Ein Abstand von einem Leerzeichen ist jedoch üblich. Zur Übung geben Sie die folgenden Ausdrücke in die interaktive Shell ein:

>>> 2 + 3 * 6

20

>>> (2 + 3) * 6

30

>>> 48565878 * 578453

28093077826734

>>> 2 ** 8

256

>>> 23 / 7

3.2857142857142856

>>> 23 // 7

3

>>> 23 % 7

2

>>> 2 + 2

4

>>> (5 - 1) * ((7 + 1) / (3 - 1))

16.0

Die Ausdrücke müssen Sie jeweils selbst eingeben, aber Python nimmt Ihnen die Arbeit ab, sie auf einen einzelnen Wert zu reduzieren. Wie die folgende Grafik zeigt, wertet es dabei die einzelnen Teile eines Ausdrucks nacheinander aus, bis ein einziger Wert übrig ist:

Die Regeln, nach denen Operatoren und Werte zu Ausdrücken zusammengestellt werden, bilden einen grundlegenden Bestandteil der Programmiersprache Python, vergleichbar mit den Grammatikregeln einer natürlichen Sprache. Betrachten Sie das folgende Beispiel:

Dies ist ein grammatikalisch korrekter deutscher Satz.

Dies grammatikalisch ist Satz kein deutscher korrekter.

Der zweite Satz lässt sich nur schwer verstehen (»parsen«, wie es bei einer Programmiersprache heißt), da er nicht den Regeln der deutschen Grammatik folgt. Genauso ist es, wenn Sie eine schlecht formulierte Python-Anweisung eingeben. Python versteht sie nicht und zeigt die Fehlermeldung SyntaxError an, wie die folgenden Beispiele zeigen:

>>> 5 +

File "<stdin>", line 1

5 +

^

SyntaxError: invalid syntax

>>> 42 + 5 + * 2

File "<stdin>", line 1

42 + 5 + * 2

^

SyntaxError: invalid syntax

Um herauszufinden, ob eine Anweisung funktioniert oder nicht, können Sie sie einfach in die interaktive Shell eingeben. Keine Angst, dadurch können Sie nichts kaputt machen. Schlimmstenfalls zeigt Python eine Fehlermeldung an. Für professionelle Softwareentwickler gehören Fehlermeldungen zum Alltag.

Die Datentypen für ganze Zahlen, Fließkommazahlen und Strings

Ein Datentyp ist eine Kategorie für Werte, wobei jeder Wert zu genau einem Datentyp gehört. Die gebräuchlichsten Datentypen in Python finden Sie in Tabelle 1–2. Werte wie -2 und -30 sind beispielsweise Integerwerte. Dieser Datentyp (int) steht für ganze Zahlen. Zahlen mit Dezimalpunkt, z. B. 3.14, sind dagegen Fließkommazahlen und weisen den Typ float auf. Beachten Sie, dass ein Wert wie 42 ein Integer ist, 42.0 dagegen eine Fließkommazahl.

Datentyp

Beispiele

Integer

-2, -1, 0, 1, 2, 3, 4, 5

Fließkommazahlen

-1.25, -1.0, -0.5, 0.0, 0.5, 1.0, 1.25

Strings

'a', 'aa', 'aaa', 'Hello!', '11 cats'

Tab. 1–2Häufig verwendete Datentypen

In Python-Programmen können auch Textwerte vorkommen, sogenannte Strings (str). Schließen Sie Strings immer in einfache Anführungszeichen ein (z. B. 'Hello' oder 'Goodbye cruel world!'), damit Python weiß, wo der String anfängt und wo er endet. Sie können sogar einen String erstellen, der gar keine Zeichen enthält, nämlich den leeren String''. In Kapitel 4 werden Strings ausführlicher behandelt.

Wenn Sie die Fehlermeldung SyntaxError: EOL while scanning string literal erhalten, haben Sie wahrscheinlich wie im folgenden Beispiel das schließende einfache Anführungszeichen am Ende eines Strings vergessen:

>>> 'Hello world!

SyntaxError: EOL while scanning string literal

Stringverkettung und -wiederholung

Die Bedeutung eines Operators kann sich in Abhängigkeit von den Datentypen der Werte ändern, die rechts und links von ihm stehen. Beispielsweise fungiert + zwischen zwei Integer- oder Fließkommawerten als Additionsoperator, zwischen zwei Strings aber als Stringverkettungsoperator. Probieren Sie Folgendes in der interaktiven Shell aus:

>>> 'Alice' + 'Bob'

'AliceBob'

Dieser Ausdruck wird zu einem einzigen neuen String ausgewertet, der den Text der beiden Originalstrings enthält. Wenn Sie jedoch versuchen, den Operator + zwischen einem String und einem Integerwert einzusetzen, weiß Python nicht, wie es damit umgehen soll, und gibt eine Fehlermeldung aus:

>>> 'Alice' + 42

Traceback (most recent call last):

File "<pyshell#0>", line 1, in <module>

'Alice' + 42

TypeError: can only concatenate str (not "int") to str

Die Fehlermeldung can only concatenate str (not "int") to str bedeutet, dass Python glaubt, Sie wollten einen Integer mit dem String 'Alice' verketten. Dazu aber müssten Sie den Integerwert ausdrücklich in einen String umwandeln, da Python dies nicht automatisch tun kann. (Die Umwandlung von Datentypen werden wir im Abschnitt »Analyse des Programms« weiter hinten in diesem Kapitel erklären und uns dabei mit den Funktionen str(), int() und float() beschäftigen.)

Zwischen zwei Integer- oder Fließkommawerten dient * als Multiplikationsoperator, doch zwischen einem String und einem Integerwert wird er zum Stringwiederholungsoperator. Um das auszuprobieren, geben Sie in die interaktive Shell Folgendes ein:

>>> 'Alice' * 5

'AliceAliceAliceAliceAlice'

Der Ausdruck wird zu einem einzigen String ausgewertet, der den ursprünglichen String so oft enthält, wie der Integerwert angibt. Die Stringwiederholung ist zwar ein nützlicher Trick, wird aber längst nicht so häufig angewendet wie die Stringverkettung.

Den Operator * können Sie nur zwischen zwei numerischen Werten (zur Multiplikation) oder zwischen einem String- und einem Integerwert einsetzen (zur Stringwiederholung). In allen anderen Fällen zeigt Python eine Fehlermeldung an:

>>> 'Alice' * 'Bob'

Traceback (most recent call last):

File "<pyshell#32>", line 1, in <module>

'Alice' * 'Bob'

TypeError: can't multiply sequence by non-int of type 'str'

>>> 'Alice' * 5.0

Traceback (most recent call last):

File "<pyshell#33>", line 1, in <module>

'Alice' * 5.0

TypeError: can't multiply sequence by non-int of type 'float'

Es ist sinnvoll, dass Python solche Ausdrücke nicht auswertet. Schließlich ist es nicht möglich, zwei Wörter miteinander zu multiplizieren, und es dürfte auch ziemlich schwierig sein, einen willkürlichen String eine gebrochene Anzahl von Malen zu wiederholen.

Werte in Variablen speichern

Eine Variable können Sie sich wie eine Kiste im Arbeitsspeicher des Computers vorstellen, in der einzelne Werte abgelegt werden. Wenn Sie das Ergebnis eines ausgewerteten Ausdrucks an einer späteren Stelle in Ihrem Programm noch brauchen, können Sie es in einer Variablen festhalten.

Zuweisungsanweisungen

Sie können sich eine Variable als eine beschriftete Kiste vorstellen, in der der Wert abgelegt wird (siehe Abb. 1–1).

Geben Sie beispielsweise Folgendes in die interaktive Shell ein:

Eine Variable wird initialisiert (erstellt), wenn zum ersten Mal ein Wert in ihr gespeichert wird (). Danach können Sie sie zusammen mit anderen Variablen und Werten in Ausdrücken verwenden (). Wenn Sie der Variablen einen neuen Wert zuweisen (), geht der alte Wert verloren. Daher wird spam am Ende dieses Beispiels nicht mehr zu 40 ausgewertet, sondern zu 42. Die Variable ist also überschrieben worden. Versuchen Sie in der interaktiven Shell wie folgt einen String zu überschreiben:

Wie die Kiste in Abb. 1–2 enthält die Variable spam in diesem Beispiel den Wert Hello, bis er durch Goodbye ersetzt wird.

Abb. 1–2Wird einer Variablen ein neuer Wert zugewiesen, so wird der alte Wert vergessen.

Variablennamen

Ein guter Variablenname beschreibt die enthaltenen Daten. Stellen Sie sich vor, Sie ziehen um und beschriften alle Kartons mit »Sachen«. Dann würden Sie Ihre Sachen nie wiederfinden! In diesem Buch und in einem Großteil der Python-Dokumentation werden allgemeine Variablennamen wie spam, eggs und bacon verwendet (in Anlehnung an den Spam-Sketch von Monty Python), aber in Ihren eigenen Programmen sollten Sie beschreibende Namen verwenden, um den Code leichter lesbar zu machen.

Sie können Variablen in Python fast beliebig benennen, allerdings gibt es einige Einschränkungen. Tabelle 1–3 führt Beispiele für gültige Variablennamen auf. Sie müssen die folgenden drei Regeln erfüllen:

Der Name muss ein einzelnes Wort sein, darf also keine Leerzeichen enthalten.

Der Name darf nur aus Buchstaben, Ziffern und dem Unterstrich bestehen.

Der Name darf nicht mit einer Zahl beginnen.

Gültige Variablennamen

Ungültige Variablennamen

current_balance

current-balance (Bindestriche sind nicht zulässig)

currentBalance

current balance (Leerzeichen sind nicht zulässig)

account4

4account (der Name darf nicht mit einer Zahl beginnen)

_42

42 (der Name darf nicht mit einer Zahl beginnen)

TOTAL_SUM

TOTAL_$UM (Sonderzeichen wie $ sind nicht zulässig)

hello

'hello' (Sonderzeichen wie ' sind nicht zulässig)

Tab. 1–3Gültige und ungültige Variablennamen

Bei Variablennamen wird zwischen Groß- und Kleinschreibung unterschieden, sodass spam, SPAM, Spam und sPaM vier verschiedene Variablen bezeichnen. Zwar ist Spam ein zulässiger Variablenname, aber verabredungsgemäß sollten Variablennamen in Python mit einem Kleinbuchstaben beginnen.

In diesem Buch wird für Variablennamen die CamelCase-Schreibweise verwendet, also die Schreibung mit Binnenmajuskel statt mit einem Unterstrich. Variablennamen sehen also aus wie lookLikeThis und nicht wie look_like_this. Erfahrene Programmierer mögen einwenden, dass die offizielle Python-Stilrichtlinie PEP 8 Unterstriche verlangt. Ich bevorzuge allerdings die CamelCase-Schreibweise und möchte dazu auf den Abschnitt »Sinnlose Übereinstimmung ist die Plage kleiner Geister« aus PEP 8 verweisen:

»Übereinstimmung mit der Stilrichtlinie ist wichtig. Am wichtigsten ist es jedoch zu wissen, wann man diese Übereinstimmung aufgeben muss. Für manche Fälle ist die Stilrichtlinie einfach ungeeignet. Urteilen Sie dann selbst nach bestem Wissen und Gewissen.«

Ihr erstes Programm

In der interaktiven Shell können Sie einzelne Python-Anweisungen nacheinander ausführen, aber um ein vollständiges Python-Programm zu schreiben, müssen Sie die Anweisungen in den Dateieditor eingeben. Er ähnelt Texteditoren wie dem Windows-Editor oder TextMate, verfügt aber zusätzlich über einige Sonderfunktionen für die Eingabe von Quellcode. Um in Mu eine neue Datei anzulegen, klicken Sie in der obersten Zeile auf New.

In dem Fenster, das jetzt erscheint, sehen Sie einen Cursor, der auf Ihre Eingaben wartet. Dieses Fenster unterscheidet sich jedoch von der interaktiven Shell, in der Python-Anweisungen ausgeführt werden, sobald Sie die Eingabetaste drücken. Im Dateieditor können Sie viele Anweisungen eingeben, die Datei speichern und dann das Programm ausführen. Anhand der folgenden Merkmale können Sie erkennen, in welchem der beiden Fenster Sie sich gerade befinden:

Das Fenster der interaktiven Shell zeigt die Eingabeaufforderung

>>>

an.

Im Dateieditorfenster gibt es die Eingabeaufforderung

>>>

nicht.

Nun ist es an der Zeit, Ihr erstes Programm zu schreiben! Geben Sie im Fenster des Dateieditors Folgendes ein:

Nachdem Sie den Quellcode eingegeben haben, speichern Sie ihn, damit Sie ihn nicht jedes Mal neu eingeben müssen, wenn Sie Mu starten. Klicken Sie auf Save, geben Sie im Feld File Name den Namen hello.py ein und klicken Sie auf Save.

Während Sie ein Programm eingeben, sollten Sie es zwischendurch immer mal wieder speichern. Sollte Ihr Computer abstürzen oder sollten Sie versehentlich Mu beenden, verlieren Sie dann keinen Code. Als Tastaturkürzel zum Speichern einer Datei drücken Sie + auf Windows und Linux bzw. + auf macOS.

Nachdem Sie das Programm gespeichert haben, führen Sie es aus. Drücken Sie dazu . Das Programm läuft jetzt im Fenster der interaktiven Shell. Beachten Sie aber, dass Sie im Editorfenster drücken müssen, nicht im Shell-Fenster. Geben Sie Ihren Namen ein, wenn das Programm Sie danach fragt. Die Programmausgabe im Fenster der interaktiven Shell sieht wie folgt aus:

Wenn keine Programmzeilen zum Ausführen mehr übrig sind, wird das Programm beendet.

Um den Dateieditor zu schließen, klicken Sie einfach auf das X in der rechten oberen Ecke. Wenn Sie ein gespeichertes Programm laden wollen, wählen Sie im Menü File > Open