Michael Weigend

Python 3 für Studium
und Ausbildung

Einfach lernen und professionell anwenden

Impressum

Bibliografische Information der Deutschen Nationalbibliothek

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

ISBN 978-3-7475-0436-9
1. Auflage 2022

www.mitp.de

E-Mail: mitp-verlag@sigloch.de
Telefon: +49 7953 / 7189 - 079
Telefax: +49 7953 / 7189 - 082

© 2022 mitp Verlags GmbH & Co. KG

Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen.

»Python« and the Python logos are trademarks or registered trademarks of the Python Software Foundation, used by mitp Verlags GmbH & Co. KG with permission from the Foundation.

Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften.

Lektorat: Janina Bahlmann
Sprachkorrektorat: Christine Hofmeister
Covergestaltung: Christian Kalkert
Bildnachweis: © Gstudio / stock.adobe.com, © ylivdesign / stock.adobe.com
Kastenicons: Tanja Wehr, sketchnotelovers
Abbildungen & Grafiken: Michael Weigend
Satz: Petra Kleinwegen

Dieses Ebook verwendet das ePub-Format und ist optimiert für die Nutzung mit dem iBooks-reader auf dem iPad von Apple. Bei der Verwendung anderer Reader kann es zu Darstellungs­problemen kommen.

Hinweis des Verlages zum Urheberrecht und Digitalen Rechtemanagement (DRM)

Der Verlag räumt Ihnen mit dem Kauf des ebooks das Recht ein, die Inhalte im Rahmen des gel­tenden Urheberrechts zu nutzen. Dieses Werk, einschließlich aller seiner Teile, ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urheherrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Dies gilt insbesondere für Vervielfälti­gungen, Übersetzungen, Mikroverfilmungen und Einspeicherung  und Verarbeitung in elektroni­schen Systemen.

Der Verlag schützt seine ebooks vor Missbrauch des Urheberrechts durch ein digitales Rechtemanagement. Bei Kauf im Webshop des Verlages werden die ebooks mit einem nicht sichtba­ren digitalen Wasserzeichen individuell pro Nutzer signiert.

Bei Kauf in anderen ebook-Webshops erfolgt die Signatur durch die Shopbetreiber. Angaben zu diesem DRM finden Sie auf den Seiten der jeweiligen Anbieter.

Für Lars Jonah

Inhalt

Impressum

Einleitung

Python in Studium und Ausbildung

Der Aufbau des Buchs

Achten Sie auf den Schrifttyp!

Programmtexte und Lösungen zum Download

1  Willkommen zu Python!

1.1  Die Programmiersprache Python

1.2  Was ist ein Algorithmus?

1.3  Syntax und Semantik

1.4  Interpreter und Compiler

1.5  Python installieren

1.6  Python im interaktiven Modus

1.7  Die Entwicklungsumgebung IDLE

1.8  Hotkeys für die IDLE-Shell

1.9  Anweisungen

1.9.1  Ausdruck

1.9.2  Funktionsaufruf

1.9.3  Zuweisung

1.9.4  Erweiterte Zuweisungen

1.10  Zahlen verarbeiten – Python als Taschenrechner

1.10.1  Operatoren

1.10.2  Variablen verwenden

1.11  Eine weitere Entwicklungsumgebung: Thonny

1.12  Notebooks mit Jupyter und CoLab

1.13  Rückblick

1.14  Übungen

1.15  Lösung der Frage: Semantik im Alltag

2  Datentypen – die Python-Typ-Hierarchie

2.1  Literale und die Funktion type()

2.2  Die Python-Typ-Hierarchie

2.3  Standard-Typen

2.3.1  Ganze Zahl (int)

2.3.2  Gleitkommazahl (float)

2.3.3  Komplexe Zahlen (complex)

2.3.4  Zeichenkette (str)

2.3.5  Tupel (tuple)

2.3.6  Liste (list)

2.3.7  Menge (set)

2.3.8  Dictionary (dict)

2.3.9  Wahrheitswerte – der Datentyp bool

2.3.10  NoneType

2.4  Gemeinsame Operationen für Kollektionen

2.4.1  Kollektion

2.4.2  Sequenz

2.5  Objekte eines Typs erzeugen – Casting

2.6  Dynamische Typisierung

2.7  Rückblick

2.8  Übung: Anweisungen

3  Interaktive Programme

3.1  Das erste Python-Skript

3.2  Das EVA-Prinzip

3.3  Kommentare

3.4  Projekt: Volumenberechnung

3.4.1  Kürzerer Programmtext durch verschachtelte Funktionsaufrufe

3.4.2  Aufruf der Funktion print() mit mehreren Argumenten

3.5  Python-Programme starten

3.5.1  Ausführung auf der Kommandozeile

3.5.2  Start durch Anklicken des Programm-Icons unter Windows

3.5.3  Python-Programme unter Linux – die Shebang-Zeile

3.5.4  Starten im Finder von macOS

3.6  Fehler finden

3.6.1  Syntaxfehler

3.6.2  Laufzeitfehler

3.6.3  Semantische Fehler

3.6.4  Tipps zum Fehlerfinden

3.7  Rückblick

3.8  Übungen

3.9  Lösungen zu den Fragen

4  Kontrollstrukturen

4.1  Programmverzweigungen

4.1.1  Einseitige Verzweigung (if)

4.1.2  Projekt: Passwort

4.1.3  Zweiseitige Verzweigung (if…else)

4.1.4  Projekt: Kinokarte

4.1.5  Fallunterscheidung (if...elif...else)

4.1.6  Projekt: Auskunftautomat

4.2  Das Layout von Python-Programmen: Zeilen und Blöcke

4.2.1  Block

4.2.2  Zeilenstruktur

4.3  Bedingungen konstruieren

4.3.1  Boolesche Werte

4.3.2  Boolesche Operatoren

4.3.3  Vergleichsketten

4.3.4  Projekt: Früchte erkennen

4.4  Bedingte Wiederholung – while

4.4.1  Projekt: Aufsummieren

4.4.2  Projekt: Planeten

4.4.3  Projekt: Wurzelberechnung (Mathematik)

4.4.4  Endloswiederholung

4.5  Iterationen – for

4.5.1  Wiederholungen mit range()

4.6  Rückblick

4.7  Übungen

4.8  Lösungen zu den Fragen

5  Funktionen

5.1  Warum definiert man Funktionen?

5.2  Definition und Aufruf einer Funktion

5.2.1  Projekt: Fallhöhe berechnen

5.3  Optionale Parameter und voreingestellte Werte

5.3.1  Erweiterung des Projekts: Fallhöhe auf unterschiedlichen Himmelskörpern

5.4  Eine Funktion in der Shell testen

5.5  Die return-Anweisung

5.5.1  Prozeduren

5.5.2  Wirkungen der return-Anweisung

5.6  Positionsargumente und Schlüsselwortargumente

5.7  Guter Programmierstil

5.7.1  Funktionsname

5.7.2  Funktionsannotationen

5.7.3  Docstring

5.7.4  Signatur

5.8  Die print()-Funktion unter der Lupe

5.9  Globale und lokale Namen

5.10  Rekursive Funktionen

5.10.1  Projekt: Die Berechnung der Fakultät

5.11  Lambda-Funktionen *

5.12  Funktionen als Argumente: map() und filter() *

5.12.1  Mapping

5.12.2  Filtern

5.13  Rückblick

5.14  Übungen

5.15  Lösungen zu den Fragen

6  Mit Modulen arbeiten

6.1  Importanweisungen

6.1.1  Ein Modul importieren

6.1.2  Funktionen aus einem Modul importieren

6.2  Mathematische Funktionen: Das Modul math

6.3  Zufallsfunktionen: Das Modul random

6.3.1  Projekt: Würfeln

6.3.2  Projekt: Wer ist der Nächste?

6.4  Datum und Zeit

6.4.1  Projekt: Uhrzeit

6.4.2  Projekt: Rechentrainer

6.5  Ein eigenes Modul erstellen

6.5.1  Projekt: Ein Modul zur Volumenberechnung

6.5.2  Welchen Vorteil haben Module?

6.6  Module aus dem Python Package Index (PyPI)

6.7  Rückblick

6.8  Übungen

7  Mit Kollektionen modellieren

7.1  Sequenzen

7.1.1  Listen

7.1.2  Tupel

7.1.3  Komplexe Sequenzen

7.1.4  Iteration über eine Liste aus Tupeln

7.1.5  Gemeinsame Operationen für Sequenzen

7.1.6  Spezielle Operationen für Listen

7.1.7  Sortieren

7.1.8  Eine Liste erzeugen

7.2  Projekt: Telefonliste

7.3  Dictionaries

7.3.1  Operationen für Dictionaries

7.3.2  Ein Dictionary ändern

7.4  Projekt: Vokabeltrainer

7.5  Projekt: Routenplaner

7.5.1  Verkehrswege und Graphen

7.5.2  Programmierung

7.6  Rückblick

7.7  Übungen

7.8  Lösungen zu den Fragen

8  Daten speichern

8.1  Wie werden Daten gespeichert?

8.1.1  Dateien öffnen

8.1.2  Stream-Methoden

8.1.3  Texte speichern und laden

8.1.4  Binärdateien und Bytestrings

8.1.5  Pfade im Verzeichnisbaum

8.2  Laufzeitfehler abfangen

8.2.1  try...except

8.2.2  try…except…finally

8.3  with-Anweisungen

8.4  Projekt: Logbuch

8.5  Datenstrukturen speichern und laden: Das Modul pickle

8.5.1  Speichern

8.5.2  Laden

8.6  Projekt: Digitaler Planer

8.7  Daten im JSON-Format speichern

8.7.1  Aufbau eines JSON-Texts

8.7.2  Die Grenzen von JSON

8.8  Projekt: Temperaturdaten

8.8.1  Writer

8.8.2  Reader

8.9  Daten aus dem Internet

8.10  Projekt: Digitale Bibliothek

8.11  Rückblick

8.12  Übung: News-Check

8.13  Lösungen zu den Fragen

9  Textverarbeitung

9.1  Unicode-Nummern für Zeichen

9.2  Escape-Sequenzen

9.3  Stringmethoden

9.4  Projekt: Goethes Wortschatz

9.5  Projekt: Wie warm wird es heute?

9.6  Ausblick: Reguläre Ausdrücke *

9.6.1  Was ist ein regulärer Ausdruck?

9.6.2  Aufbau eines regulären Ausdrucks

9.6.3  Textpassagen finden mit findall()

9.6.4  Platzhalter für Zeichen aus einer Zeichenmenge

9.6.5  Reguläre Ausdrücke verknüpfen

9.6.6  Quantoren

9.6.7  Sonderzeichen maskieren

9.6.8  Gieriges oder nicht gieriges Finden

9.6.9  Webscraping mit regulären Ausdrücken

9.7  Texte mit variablen Teilen

9.7.1  Formatierung

9.7.2  Platzhalter mit Namen

9.7.3  Formatangaben für Platzhalter

9.8  Projekt: Textanalyse

9.9  Projekt: Storytelling

9.10  Rückblick

9.11  Übungen

9.12  Lösungen zu den Fragen

10  Zugriff auf die Systemumgebung

10.1  Schnittstelle zum Betriebssystem: Das Modul os

10.2  Suchen und Eigenschaften ermitteln

10.2.1  Unterverzeichnisse ausgeben

10.2.2  Verzeichnisbaum durchlaufen

10.3  Dateien und Verzeichnisse anlegen und umbenennen

10.3.1  Projekt: Bilddateien umbenennen

10.4  Das Modul sys – die Schnittstelle zum Laufzeitsystem

10.4.1  Informationen über die aktuelle Systemumgebung abfragen

10.4.2  Kommandozeilenargumente abfragen

10.4.3  Blick hinter die Kulissen: Speicherverwaltung *

10.4.4  Zugriff auf Module

10.4.5  Die Standardausgabe in eine Datei umleiten

10.5  Rückblick

10.6  Übungen

10.7  Lösung zu der Frage: Welcher Kommentar passt?

11  Grafische Benutzungsoberflächen

11.1  Widgets

11.2  Das Anwendungsfenster Tk

11.3  Ein Widget einfügen

11.4  Das Aussehen der Widgets gestalten

11.4.1  Die Größe eines Widgets

11.5  Gemeinsame Methoden der Widgets

11.6  Schaltflächen und Eventhandler

11.6.1  Projekt: Motivator

11.7  Das Layout verfeinern

11.8  Raster-Layout

11.9  Projekt: 25 Farben – ein automatisches Farbfelder-Bild

11.10  Widgets zur Texteingabe

11.10.1  Einzeilige Eingabe: Das Entry-Widget

11.10.2  Mehrzeilige Eingabe: Das Text-Widget

11.10.3  Projekt: Reimen mit Goethe

11.11  Radiobuttons

11.11.1  Projekt: Währungsrechner

11.12  Dialogboxen

11.12.1  Projekt: Texteditor

11.13  Parallele Abläufe: Threads

11.13.1  Ein Experiment: Countdown

11.13.2  Eine Funktion in einem eigenen Thread ausführen

11.14  Rückblick

11.15  Übungen

11.16  Lösungen zu den Fragen

12  Grafik programmieren

12.1  Bilder auf Schaltflächen und Labels

12.1.1  Projekt: Würfelspiel

12.1.2  Bilder verändern

12.1.3  Projekt: Graustufen

12.2  Canvas

12.2.1  Flächen gestalten

12.2.2  Linien gestalten

12.2.3  ID-Nummern: Elemente löschen oder bewegen

12.3  Projekt: Creative Coding

12.4  Die Python Imaging Library (PIL)

12.4.1  Ein Image-Objekt aus einer Datei gewinnen

12.4.2  Ein Image-Objekt ohne Datei erzeugen

12.4.3  Attribute und Methoden von Image-Objekten

12.4.4  Bilder über Listen verarbeiten

12.4.5  Bilder einfügen

12.4.6  Projekt: Greenscreen

12.4.7  PIL.Image-Objekte in tkinter-Anwendungen

12.4.8  Projekt: Webcam-Viewer

12.5  Rückblick

12.6  Übungen

13  Fehler finden und vermeiden

13.1  Zusicherungen

13.2  Tracing

13.2.1  Beispiel: Quicksort

13.3  Debugging mit IDLE

13.3.1  Der Debugger der Python-Shell

13.3.2  Das Programm schrittweise durchlaufen

13.3.3  Haltepunkte setzen

13.4  Debugging mit Thonny

13.5  Rückblick

13.6  Lösungen zu den Fragen

14  Objektorientierte Programmierung

14.1  Klassen und Objekte

14.1.1  Was ist Objektorientierung?

14.1.2  Klassen entwerfen und grafisch darstellen – UML

14.1.3  Definition einer Klasse

14.1.4  Objekte einer Klasse erzeugen: Instanziierung

14.1.5  Auf Attribute zugreifen

14.1.6  Methoden aufrufen

14.1.7  Objekte mit variablen Anfangswerten

14.1.8  Metaphern in der Programmierung

14.2  Projekt: Geld

14.2.1  Mit Geld-Objekten rechnen

14.2.2  Klassenattribute

14.2.3  Operatoren überladen – Polymorphie

14.3  Magische Methoden

14.4  Projekt: Abrechnung

14.5  Vererbung

14.6  Projekt: Farbtester

14.7  Projekt: Zahlenregen

14.8  Rückblick

14.9  Übungen

14.10  Lösungen zu den Fragen

15  Datenbanktechnik

15.1  Was ist ein Datenbanksystem?

15.2  Eine Datenbank entwerfen –
das Entity-Relationship-Diagramm (ER)

15.3  Relationale Datenbanken

15.4  Relationen mit Python darstellen *

15.4.1  Menge von Tupeln

15.4.2  Benannte Tupel (named tuples)

15.5  Das Modul sqlite3 – Schnittstelle zu einer SQL-Datenbank

15.5.1  Mit SQL Tabellen anlegen und Tupel eintragen

15.5.2  Mit sqlite3 eine SQLite-Datenbank aufbauen

15.5.3  Formulierung von Anfragen (Queries) mit SQL

15.5.4  Datenbankanfragen in Python-Programmen

15.5.5  SQL-Anweisungen mit variablen Teilen

15.6  Projekt: Zitatesammlung

15.6.1  ER-Diagramm

15.6.2  Tabellen (Beispiel)

15.6.3  Administration der Zitatesammlung

15.6.4  Nach Zitaten suchen

15.7  Rückblick

15.8  Übungen

15.9  Lösungen zu den Fragen

16  Wissenschaftliche Projekte

16.1  NumPy – Rechnen mit Arrays

16.1.1  Arrays

16.1.2  Indizieren

16.1.3  Slicing

16.1.4  Arrays verändern

16.1.5  Arithmetische Operationen

16.1.6  Funktionen, die elementweise ausgeführt werden

16.1.7  Matrizenmultiplikation mit dot()

16.1.8  Array-Funktionen und Achsen

16.2  Datenvisualisierung mit matplotlib

16.2.1  Liniendiagramme

16.2.2  Mehrere Linien in einem Diagramm

16.2.3  Histogramme

16.2.4  Projekt: Würfeln

16.2.5  Heatmaps

16.3  Projekt: Bewegungsprofil

16.4  Google Colaboratory – Colab

16.4.1  Ein Colab-Notebook erzeugen

16.4.2  Text-Zellen

16.4.3  Bilder einfügen

16.4.4  Notebooks speichern und öffnen

16.5  Projekt: Füchse und Hasen – Simulation eines Räuber-Beute-Systems

16.5.1  Notebooks teilen

16.6  Rückblick

16.7  Übungen

16.8  Lösungen zu den Fragen

17  Dynamische Webseiten: CGI und WSGI

17.1  Dynamische Webseiten mit CGI

17.1.1  Projekt: Wie spät ist es?

17.1.2  Die Ausgabe eines CGI-Skripts

17.1.3  Wie ist ein CGI-Skript aufgebaut?

17.1.4  CGI-Skripte unter Windows

17.1.5  Aufruf mit dem Webbrowser

17.1.6  Ein HTTP-Server

17.1.7  Zugriff von einem anderen Computer im lokalen Netz

17.2  Interaktive Webseiten

17.2.1  Eingabekomponenten in einem HTML-Formular

17.2.2  Verarbeitung von Eingabedaten mit FieldStorage

17.3  Wie verarbeitet man Umlaute? *

17.4  Dynamische Webseiten mit WSGI

17.4.1  Das Applikationsobjekt

17.4.2  Skripte mit eigenem HTTP-Server – das Modul wsgiref

17.5  Projekt: Wie spät ist es? (II)

17.6  Projekt: Umfrage

17.6.1  Die HTML-Schablonen

17.6.2  Der algorithmische Teil

17.7  Einen Hosting-Dienst nutzen

17.7.1  Python Anywhere

17.7.2  Das vorgefertigte OWSGI-Programm ausprobieren

17.7.3  Projekt: Wie spät ist es? (III)

17.7.4  WSGI-Projekte modularisieren

17.8  Rückblick

17.9  Übungen

17.10  Lösung zur Frage: Interaktive Webseite

18  Professionelle Software-Entwicklung

18.1  Die Laufzeit von Programmen

18.1.1  Schnelles Sortieren – Quicksort versus Straight Selection

18.1.2  Performance-Analyse mit dem Profiler

18.2  Agile Software-Entwicklung

18.2.1  Software Engineering

18.2.2  Einige Grundideen der agilen Software-Entwicklung

18.3  Projekt: Digitales Notizbuch

18.3.1  Stories

18.3.2  Erste Iteration

18.3.3  Zweite Iterationen

18.3.4  Refactoring

18.3.5  Neue Stories und Änderbarkeit

18.4  Test Driven Development mit doctest

18.5  Übung: Ticketbuchung

Glossar

                                

Einleitung

Python in Studium und Ausbildung

In vielen Berufen – auch außerhalb der Informationstechnik – werden heute Programmierkenntnisse als Basiskompetenz vorausgesetzt. Selbst wenn Ihr Schwerpunkt nicht die professionelle Softwareentwicklung ist, werden Sie in Rahmen von wissenschaftlichen Projekten oder in der Berufspraxis Computerprogramme schreiben oder an Entwicklungen beteiligt sein. Darüber hinaus schult das Programmieren das logische Denken. Wer programmieren kann, ist besser in der Lage, Probleme zu analysieren und Lösungen zu finden.

Dieses Buch wendet sich vor allem an Menschen, die im Rahmen eines Studiums oder einer beruflichen Ausbildung einen Einstieg in die Programmierung mit Python suchen. Es lässt sich sowohl als Materialgrundlage für einen Programmierkurs als auch für das eigenständige Lernen einsetzen.

Alle Erklärungen sind leicht verständlich formuliert und setzen keine Vorkenntnisse voraus. Am besten lesen Sie das Buch neben der Computer-Tastatur und probieren die Programmbeispiele gleich aus. Zahlreiche praktische Programmier-Übungen helfen Ihnen, Ihr neues Wissen zu verinnerlichen. Sie werden schnell erste Erfolge erzielen und Freude an der Programmierung finden.

Der Aufbau des Buchs

Das Buch beginnt mit den Grundlagen: Installation von Python, Nutzung der Entwicklungsumgebung und Formulierung einfacher Anweisungen. Sie lernen Schritt für Schritt, wie man Daten lädt, verarbeitet und speichert, und erhalten eine Einführung in die Verwendung von Funktionen und Modulen, objektorientierte Programmierung und die Gestaltung von grafischen Benutzungsoberflächen.

In den hinteren Kapiteln wenden Sie die gelernten Python-Konzepte in wichtigen und spannenden Gebieten der Informatik an: Datenbanktechnik, Bildverarbeitung, wissenschaftliches Rechnen mit NumPy, Visualisierung von Daten mit MatPlotLib und Internetprogrammierung.

Abschnitte, die mit einem Sternchen * versehen sind, können Sie überspringen, wenn Sie das Thema nicht interessiert. Sie behandeln sehr spezielle Inhalte, die für das Verständnis des nachfolgenden Texts nicht benötigt werden.

Das letzte Kapitel schließlich gibt einen Einblick in fortgeschrittene Techniken (z.B. das Aufspüren von Schwachstellen im Programm mit einer Performance-Analyse) und zeigt Ihnen einige Ideen des agilen Programmierens, die helfen können, ein größeres Softwareprojekt erfolgreich zu planen und durchzuführen.

Gelegentlich stoßen Sie auf Zwischenfragen. Sie sind als kleine Lernaktivierung gedacht und werden am Ende des Kapitels beantwortet. Jedes Kapitel schließt mit praktischen Programmier-Übungen, in denen Sie Ihr neu gewonnenes Wissen vertiefen können. Mit Sternchen * wird der Schwierigkeitsgrad der Aufgaben gekennzeichnet. Je mehr Sternchen, desto schwieriger. Die Lösungen zu diesen Übungen, die meist viel Programmtext enthalten, stehen in einem Online-Kapitel zum Download zur Verfügung. Mehr dazu im übernächsten Abschnitt.

Am Ende des Buchs finden Sie ein Glossar mit den wichtigsten Fachbegriffen sowie ein Stichwortverzeichnis, das Ihnen hilft, bestimmte Themen im Buch schneller zu finden.

Achten Sie auf den Schrifttyp!

In diesem Buch hat der Schrifttyp eine Bedeutung. Das soll das Lesen erleichtern. Alle Programmtexte oder Teile von Programmtexten (wie z.B. Variablennamen) sind in einer nicht proportionalen Schrift (Monotype-Schrift) gesetzt.

Beispiel: Die Variable name hat den Wert 'Jessy'.

In einigen Passagen der Programmtexte kommen kursiv gesetzte Monotype-Texte vor, die als Platzhalter gemeint sind. In einem Programm würde man den Platzhalter durch einen anderen, in den Zusammenhang passenden Text ersetzen.

Beispiel: Bei

stream = open(dateiname)

sind stream und dateiname Platzhalter.

In Textpassagen, die einen Dialog mit dem Computer wiedergeben, ist der Text, den ein Mensch eingegeben hat, etwas heller gesetzt als der Text, den der Computer ausgibt.

Beispiel:

Dein Name: Helena
Guten Morgen Helena!

Programmtexte und Lösungen zum Download

Das Buch enthält viele kleine Beispielprogramme. Sie sind als »Starterprojekte« gedacht und sollen Sie ermuntern, den Code weiterzuentwickeln und eigene Ideen umzusetzen.

Alle Programmtexte sowie die Lösungen zu den Übungen stehen Ihnen auf der Webseite des Verlags unter https://www.mitp.de/0434 zum Download zur Verfügung. Dort finden Sie gegebenenfalls auch eine Errata-Liste. Wenn Sie einen Fehler finden, würde ich mich über eine Rückmeldung freuen. Am besten schreiben Sie eine E-Mail an
lektorat@mitp.de.

Ich wünsche Ihnen viel Erfolg und Spaß bei der Programmierung mit Python!

Michael Weigend

  Kapitel 1               

Willkommen zu Python!

Dieses Kapitel hilft Ihnen bei den ersten Schritten im Umgang mit einer der erfolgreichsten und faszinierendsten Programmiersprachen unserer Zeit. Python ist erfolgreich, weil es in praktisch allen Wissensbereichen eingesetzt wird: Naturwissenschaft, Technik, Mathematik, Musik und Kunst. Viele Menschen finden Python faszinierend, weil das Programmieren mit Python das Denken beflügelt. Mit Python können Sie digitale Modelle entwickeln und Problemlösungen elegant und verständlich formulieren.

Nach einer kurzen Einführung in einige wichtige Grundbegriffe der Informatik erfahren Sie, wie man Python installiert. Sie arbeiten praktisch an der Tastatur, probieren Anweisungen aus und lernen dabei, was Ausdrücke, Zuweisungen und Variablen sind.

1.1  Die Programmiersprache Python

Im Unterschied zu »natürlichen« Sprachen wie Deutsch oder Englisch, die sich über Jahrhunderte entwickelt haben, sind Programmiersprachen »künstliche« Sprachen. Sie wurden von Fachleuten designt und sind speziell auf die Formulierung von Algorithmen zugeschnitten.

Die ersten höheren Programmiersprachen (z.B. Fortran und Lisp) wurden in den 1950er Jahren entwickelt. Heute (27. Januar 2022) listet Wikipedia 374 Programmiersprachen auf.

Die erste Python-Version wurde 1991 von dem niederländischen Informatiker Guido van Rossum veröffentlicht. Der Name der Sprache soll an die englische Comedy-Gruppe ­Monty Python erinnern. Seit 2001 wird Python von der Python Software Foundation (PSF) gepflegt, kontrolliert und verbreitet (www.python.org).

Viele digitale Produkte, die Sie aus dem Alltag kennen, basieren auf Python, z.B. Google Maps, YouTube und Instagram. Im PYPL-Index (Popularity of Programming Lan­guage Index) wird die Beliebtheit einer Programmiersprache danach gemessen, wie oft bei Google nach einem Sprach-Tutorial gesucht wird. Demnach ist Python (im Jahre 2022) mit Abstand die populärste Programmiersprache.

Warum ist Python unter Programmierern so beliebt?

1.2  Was ist ein Algorithmus?

In der Informatik versteht man unter einem Algorithmus eine präzise Anleitung zur Lösung einer Aufgabe. Ein Algorithmus besteht aus einer Folge von einzelnen Anweisungen, die so genau und eindeutig formuliert sind, dass sie auch von einem völlig Unkundigen rein mechanisch ausgeführt werden können. Algorithmen, die man aus dem Alltag kennt, sind z.B.

Ein Computerprogramm ist ein Algorithmus, der in einer Programmiersprache geschrieben worden ist und von einem Computer »verstanden« und ausgeführt werden kann.

1.3  Syntax und Semantik

Eine Programmiersprache ist – wie jede Sprache – durch Syntax und Semantik definiert. Die Syntax legt fest, welche Folgen von Zeichen ein gültiger Programmtext in der jeweiligen Sprache sind.

Zum Beispiel ist

print['Hallo']

kein gültiger Python-Programmtext, weil die Python-Syntax vorschreibt, dass nach dem Wort print eine runde Klammer folgen muss.

Dagegen ist die Zeichenfolge

print('Hallo')

ein syntaktisch korrektes Python-Programm. Die Syntax sagt aber nichts darüber aus, welche Wirkung dieses Mini-Programm hat. Die Bedeutung eines Programmtextes wird in der Semantik definiert. Bei diesem Beispiel besagt die Semantik, dass auf dem Bildschirm das Wort Hallo ausgegeben wird.

Bei einem Programmtext ist die Semantik eindeutig. Dagegen kann ein Text in einer natürlichen Sprache mehrdeutig sein.

Frage: Semantik im Alltag

Inwiefern ist der Satz »Schau nach vorne!« semantisch nicht eindeutig?

1.4  Interpreter und Compiler

Python ist eine sogenannte höhere Programmiersprache. Das bedeutet, dass Besonderheiten des Computers, auf dem das Programm laufen soll, nicht beachtet werden müssen. Ein Python-Programm läuft praktisch auf jedem Computer und unter jedem gängigen Betriebssystem. Eine höhere Programmiersprache ist für Menschen gemacht und ermöglicht es, gut verständliche Programmtexte zu schreiben.

Einen Programmtext, der in einer höheren Programmiersprache geschrieben ist, nennt man Quelltext (auf Englisch source code). Damit der Quelltext vom Computer abgearbeitet werden kann, muss er in eine »maschinennahe Sprache« übersetzt werden. Dazu gibt es zwei unterschiedliche Methoden:

Python ist eine interpretative Programmiersprache. Das hat den Vorteil, dass ein Python-Programm auf jeder Plattform funktioniert. Voraussetzung ist allerdings, dass auf dem Computer ein Python-Interpreter installiert ist. Das Betriebssystem allein ist nicht in der Lage, das Python-Programm auszuführen.

1.5  Python installieren

Python ist völlig kostenlos und wird für Microsoft Windows, Linux/Unix und macOS angeboten.

Sämtliche Software, die Sie für die Arbeit mit Python benötigen, ist frei und kann von der Python-Homepage http://www.python.org/download heruntergeladen werden. Dieses Buch bezieht sich auf Version 3.10.1, die im Dezember 2021 herauskam. Falls Sie eine neuere Version installieren, werden aber dennoch alle Programme, die in diesem Buch beschrieben werden, funktionieren.

Windows

Auf der Download-Seite http://www.python.org/download werden Installationsdateien angeboten, die zu Ihrem System passen.

Klicken Sie auf die Schaltfläche oben links mit der aktuellen Version von Python 3.

Abb. 1.1: Download-Seite von Python

Laden Sie das Installationsprogramm herunter und starten Sie es. Achten Sie darauf, dass im Rahmen der Installation das Verzeichnis mit dem Python-Interpreter dem System­pfad (PATH) hinzugefügt wird (siehe Abbildung 1.2). Damit ist sichergestellt, dass das Betriebssystem den Python-Interpreter findet, wenn Sie im Konsolenfenster (Eingabeaufforderung) den Befehl python eingeben. Schließlich klicken Sie auf Install Now.

Abb. 1.2: Installation von Python unter Windows

Linux

Auf Linux-Systemen ist Python in der Regel bereits installiert. Prüfen Sie, welche Version vorliegt, indem Sie in einem Konsolenfenster auf der Kommandozeile den Befehl python –V eingeben.

$ python –V
Python 3.10.1

Wenn Sie keine Version von Python 3 vorfinden, müssen Sie sie nachinstallieren. Verwenden Sie am besten das Advanced Packaging Tool (APT):

$ sudo apt-get install python3.10

macOS

Wie auf Linux-Systemen ist auch auf Apple-Computern Python in der Regel bereits in­stalliert. Um das nachzuprüfen, öffnen Sie auf Ihrem Mac ein Terminal-Fenster (Pro­gramme|Dienstprogramme|Terminal) und geben folgenden Befehl ein:

python -V

Wenn Sie keine Version von Python 3 vorfinden, besuchen Sie die Python-Website, laden eine zu Ihrem System passende Installer-Datei herunter und führen sie aus.

1.6  Python im interaktiven Modus

Wenn Sie Python heruntergeladen und installiert haben, befinden sich auf Ihrem Computer folgende Komponenten:

Sie können den Python-Interpreter in einer Konsole (Shell) direkt aufrufen, um dann einzelne Python-Befehle auszuprobieren. Auf einem Windows-Rechner öffnen Sie eine Konsole z.B. auf folgende Weise: Geben Sie im Suchfeld unten links den Befehl cmd ein und drücken Sie die Taste Enter. Es erscheint ein Anwendungsfenster mit dem Titel Eingabeaufforderung ungefähr wie in Abbildung 1.3. Auf einem Mac heißt die Konsole Terminal. Drücken Sie gleichzeitig die Befehlstaste und die Leertaste, um Spotlight zu starten, und geben Sie Terminal ein.

Eine Konsole enthält die sogenannte Kommandozeile, die mit dem Prompt des Betriebssystems endet. Bei Windows ist der Prompt das Zeichen >, bei Linux und macOS $.

Abb. 1.3: Aufruf des Python-Interpreters in einem Konsole-Fenster
(Eingabeaufforderung) unter Windows

Hinter dem Prompt des Betriebssystems geben Sie den Befehl

python

ein und drücken die Taste Enter. (Achten Sie auf das kleine p zu Beginn.) Damit wird der Python-Interpreter im »interaktiven Modus« gestartet. Unter einem Begrüßungstext sehen Sie diesen Prompt:

>>>

Im interaktiven Modus führen Sie eine Art »Gespräch« mit dem Python-Interpreter. Hinter dem Prompt geben Sie eine einzelne Python-Anweisung ein. Sobald Sie Enter drücken, führt der Interpreter die Anweisung aus und liefert in der nächsten Zeile ein Ergebnis – sofern die Anweisung ein Ergebnis berechnet. Im Englischen nennt man dieses Prinzip Read-Eval-Print-Loop oder kurz REPL.

Auch arithmetische Ausdrücke sind gültige Python-Anweisungen. Probieren Sie es aus:

>>> 2 + 2
4
>>> (2 + 2) * 4
16
>>>

Sie beenden den Python-Interpreter mit der Tastenkombination Strg+C.

1.7  Die Entwicklungsumgebung IDLE

IDLE (Integrated Development and Learning Environment) ist die Standard-Entwicklungsumgebung für Python. Eine Entwicklungsumgebung ist eine Software, die Programmierer benutzen, wenn sie Programme entwickeln. IDLE besteht aus der IDLE-Shell und einem Editor:

Wenn Sie IDLE starten, öffnet sich zunächst die IDLE-Shell. Sie sehen ein Anwendungsfenster wie in Abbildung 1.4.

Abb. 1.4: Die IDLE-Shell

Nach einem Begrüßungstext erscheint der Prompt >>> des Python-Interpreters. Wenn Sie eine Python-Anweisung eingeben und Enter drücken, erscheint in der nächsten Zeile das Ergebnis.

1.8  Hotkeys für die IDLE-Shell

Es gibt zwei Tastenkombinationen (Hotkeys), die die Arbeit mit der IDLE-Shell er­leichtern.

Mit Alt+p und Alt+n können Sie in der Folge der zuletzt eingegebenen Kommandos (History) vor- und zurückgehen. Geben Sie zunächst zwei beliebige Befehle ein:

>>> 1 + 1
2
>>> 2 * 2
4
>>>

Wenn Sie einmal die Tastenkombination Alt+p betätigen, erscheint hinter dem letzten Prompt das vorige Kommando (previous):

>>> 2 * 2

Bei nochmaliger Eingabe dieses Hotkeys erscheint die vorvorige Zeile:

>>> 1 + 1

1.9  Anweisungen

Anweisungen sind die Grundbausteine von Computer-Programmen. Man kann sie grob in einfache und zusammengesetzte Anweisungen einteilen. Eine zusammengesetzte Anweisung enthält als Bestandteile weitere Anweisungen und kann sehr kompliziert aufgebaut sein. An dieser Stelle lernen Sie zunächst nur einige grundlegende einfache Anweisungen kennen. Alle anderen werden später in verschiedenen Kapiteln eingeführt.

1.9.1  Ausdruck

Die einfachste Form einer Anweisung besteht aus einem Ausdruck. Bereits eine einzelne Zahl oder eine Zeichenkette ist ein Ausdruck und ergibt eine Anweisung, die freilich nichts bewirkt. Der eingegebene Wert wird vom Python-Interpreter so, wie er ist, wieder ausgegeben:

>>> 12
12
>>> 'Hallo'
'Hallo'

Mithilfe von Operatoren (z.B. +, -, *, / für die vier Grundrechenarten) und runden Klammern können Sie wie in der Mathematik komplexe arithmetische Ausdrücke aufbauen. Sie werden vom Python-Interpreter ausgewertet und das Ergebnis in der nächsten Zeile ausgegeben:

>>> 1000 * 1000
1000000
>>> (1 + 2) * (3 - 4)
-3

Vergleiche gehören ebenfalls zu den Ausdrücken. Ist ein Vergleich wahr, liefert der Interpreter den Wert True, ansonsten False.

>>> 'Tag' == 'Nacht'
False
>>> 2 > 1
True

1.9.2  Funktionsaufruf

Funktionen sind aufrufbare Objekte (callable objects), die eine bestimmte Aufgabe lösen können. Wenn eine Funktion aufgerufen wird, übernimmt sie gewisse Daten als Eingabe, verarbeitet diese und liefert neue Daten als Ausgabe zurück. Man kann sich die Funktion als einen Spezialisten vorstellen, der bestimmte Tätigkeiten beherrscht. Beim Aufruf übergibt man ihm Material, das bearbeitet er und gibt schließlich dem Auftrag­geber ein Produkt zurück.

Die Daten, die man einer Funktion übergibt, nennt man Argumente oder aktuelle Parameter. Im interaktiven Modus kann man eine Funktion aufrufen und erhält dann in der nächsten Zeile das zurückgegebene Ergebnis. Hier einige Beispiele:

>>> round(1.7)
2

Hier ist round der Name der Funktion und die Zahl 1.7 das Argument. Zurückgegeben wird die gerundete Zahl.

Die Funktion min() akzeptiert eine beliebige Anzahl von Argumenten und gibt den kleinsten Wert (das Minimum) als Ergebnis zurück:

>>> min(1, 2)
1
>>> min(10, 2, 45, 5)
2

1.9.3  Zuweisung

Zuweisungen sind wahrscheinlich die häufigsten Anweisungen in Programmtexten.

Einen Wert zuweisen

Die einfachste Form der Zuweisung besteht aus einem Namen, gefolgt von einem Gleichheitszeichen und einem Wert, sie hat also die Form:

name = wert
Beispiel:
>>> x = 1

In diesem Beispiel ist x ein Name und 1 ein Wert. Man bezeichnet x auch als Variable, der man einen Wert zugewiesen hat.

Der Zuweisungsoperator ist das Gleichheitszeichen. Beachten Sie, dass die Zuweisung etwas anderes ist als ein Vergleich! Wenn man in einem Ausdruck zwei Objekte auf Gleichheit testen will, verwendet man ein doppeltes Gleichheitszeichen.

Beispiel:
>>> 2 == 1
False

Anschaulich kann man sich Variablen als Namen für Daten vorstellen. Der Variablenname ist eine Art »Etikett«, das an einer Zahl oder einem anderen Wert »klebt«.

Abb. 1.5: Variable als Name für eine Zahl

Manchmal sagt man auch, dass eine Variable einen Wert speichert. Dann stellt man sich die Variable als Behälter vor. Der Variablenname ist die Aufschrift des Behälters und der Wert ist der Inhalt.

Abb. 1.6: Variable als Behälter

Über den Namen der Variablen kann man auf ihren Inhalt zugreifen. Gibt man im interaktiven Modus den Namen ein, so liefert der Interpreter den Inhalt zurück:

>>> x
1

Bei einer weiteren Zuweisung wird der alte Wert der Variablen durch einen neuen Wert überschrieben:

>>> x = 100
>>> x
100

Variablennamen können auch in Ausdrücken verwendet werden. Wenn der Interpreter den Ausdruck auswertet (also ein Ergebnis ermittelt), verwendet er den Wert, der dem Namen zugeordnet ist.

Beispiel:
>>> x = 2
>>> 2 * x + 1
5

Werte übertragen

Werte können von einer Variablen auf eine andere übertragen werden. Das allgemeine Format einer solchen Art der Zuweisung ist

name1 = name2

Beispiel: Nach den folgenden Zuweisungen haben die Variablen x und y den gleichen Wert:

>>> x = 1
>>> y = x
>>> x
1
>>> y
1

Abb. 1.7: Veranschaulichung einer Werteübertragung

Zuweisungen für mehrere Variablen

In einer einzigen Zuweisung kann man bei Python mehreren Variablen gleichzeitig ­einen (gemeinsamen) Wert zuordnen:

>>> x = y = 1
>>> x
1
>>> y
1

Man kann auch in einer einzigen Zuweisung gleich mehreren Variablen Werte zuordnen. Links vom Gleichheitszeichen stehen dann mehrere Namen (jeweils durch Kommas getrennt) und rechts gleich viele Werte (ebenfalls durch Kommas getrennt):

>>> x, y = 1, 2
>>> x
1
>>> y
2

Es ist möglich, in einer einzigen Zuweisung (fett gedruckt) die Werte zweier Variablen zu vertauschen:

>>> x, y = 1, 2
>>> x, y = y, x
>>> x
2
>>> y
1

Welche Variablennamen sind erlaubt?

Den Namen einer Variablen können Sie bestimmen. Sie müssen sich aber an folgende drei Syntaxregeln halten:

Hier ist eine Liste der Schlüsselwörter:

and           as            assert        break         class
continue def del elif else
except False finally for from
global import if in is
lambda None nonlocal not or
pass raise return True try
while with yield

Gültige Namen sind z.B. a, zahl, zahl_1, geldbetrag, _körpergröße.

Ungültig sind dagegen die folgenden Wörter:

Üblicherweise schreibt man Variablennamen mit kleinem Anfangsbuchstaben.

1.9.4  Erweiterte Zuweisungen

Eine erweiterte Zuweisung ist eine Kombination aus einer Zuweisung und einer Rechenoperation.

Beispiel:
>>> x = 10 
>>> x += 1
>>> x
11

Die Anweisung x += 1 hat die gleiche Wirkung wie:

>>> x = x + 1

Der Wert der Variablen x wurde um 1 erhöht. Auch für die anderen Grundrechenarten gibt es erweiterte Zuweisungen.

Beispiel Multiplikation:
>>> y = 100
>>> y *= 2
>>> y
200

1.10  Zahlen verarbeiten – Python als Taschenrechner

Sie können die IDLE-Shell als komfortablen Taschenrechner verwenden. Im einfachsten Fall geben Sie einen mathematischen Ausdruck ein und drücken die Taste Enter. In der nächsten Zeile erscheint das Ergebnis.

Ein mathematischer Term (Ausdruck) kann aus Zahlen, Operatoren und runden Klammern aufgebaut werden. Die Schreibweise ist im Prinzip wie in der Mathematik. Allerdings gibt es ein paar Besonderheiten.

1.10.1  Operatoren

Für Multiplikationen verwendet man in Python den Stern *.

Beispiel:
>>> 100 * 21
2100

Es gibt keine langen Bruchstriche. Für Zähler oder Nenner müssen Sie eventuell Klammern verwenden. Den Bruch

stellen Sie durch den Ausdruck (3+2) / 2 dar:

>>> (3 + 2) / 2
2.5

Achten Sie darauf, dass das Ergebnis 2.5 und nicht 2,5 ist. Dezimalbrüche enthalten kein Komma, sondern stattdessen einen Punkt.

Es gibt eine exakte Division / und eine ganzzahlige Division //. Die ganzzahlige Division liefert immer eine ganze Zahl. Sie ist das abgerundete Rechenergebnis einer Division. Probieren Sie es aus:

>>> 3 / 2
1.5
>>> 3 // 2
1

Zum Potenzieren einer Zahl verwenden Sie den Operator **. Die Potenz 28 (»zwei hoch acht«) schreiben Sie 2**8.

>>> 2**8
256
>>> 5**1
5
>>> 5**2
25
>>> 5**-1
0.2
>>> 5**200
622301527786114170714406405378012424059025216872116713310111
661478969883403538344118394482312571361695696658955512248212
47160434722900390625
>>>

Spezieller ist die Modulo-Operation. Sie liefert den Rest einer ganzzahligen Division. So ergibt 5 geteilt durch 2 das Ergebnis 2 mit dem Rest 1.

>>> 5 % 2
1

Die Zahl 6 ist durch 2 teilbar. Bei der Division bleibt kein Rest:

>>> 6 % 2
0

Sie verwenden die Modulo-Operation zum Beispiel, wenn Sie prüfen wollen, ob eine Zahl durch eine andere Zahl teilbar ist.

Bei Termen mit mehreren Operatoren müssen Sie deren Prioritäten beachten. Sie kennen das aus der Schulmathematik. Die Operation mit höherer Priorität wird zuerst ausgeführt. Der Potenzoperator hat die höchste Priorität, dann kommen Multiplikation und Division. Addition und Subtraktion haben die niedrigste Priorität.

>>> 2*3**2
18

Hier berechnet der Computer zuerst 3 hoch 2 (das macht 9) und multipliziert dann das Ergebnis mit 2.

>>> (2*3)**2
36

Der Term in der Klammer wird immer zuerst ausgewertet. Klammern haben die allerhöchste Priorität.

Tab. 1.1: Arithmetische Operatoren in der Reihenfolge ihrer Priorität (von oben nach unten)

1.10.2  Variablen verwenden

Bei komplizierten Rechnungen können Sie Zwischenergebnisse in Variablen speichern. Auf diese Weise wird die Rechnung übersichtlicher.

Abb. 1.8: Eine Fläche, die aus mehreren einfachen Flächen zusammengesetzt ist

Nehmen wir als Beispiel die Berechnung einer Fläche wie in Abbildung 1.8. Mit Variablen kann man die Berechnung in vier Schritte aufteilen. Zuerst werden drei Teilflächen berechnet und dann die Summe gebildet:

>>> a = 3.14 * 2**2 / 2
>>> b = 6 * 4
>>> c = 2 * 4 / 2
>>> fläche = a + b + c
>>> fläche
34.28

1.11  Eine weitere Entwicklungsumgebung: Thonny

IDLE wird bei der Installation von Python gleich mitgeliefert. Darüber hinaus gibt es aber auch noch weitere kostenlose Entwicklungsumgebungen (IDEs), die aus anderen Quellen stammen. Eine bekannte IDE für professionelle Python-Entwickler ist PyCharm
(https://www.jetbrains.com/pycharm/). Einige Entwicklungsumgebungen kann man nicht nur für Python, sondern auch für andere Programmiersprachen verwenden. Dazu gehören Eclipse und Geany.

Thonny ist eine IDE für Python-Einsteiger, die an der Universität von Tartu in Estland entwickelt worden ist (https://thonny.org). Ein besonderes Merkmal von Thonny ist, dass es die Arbeitsweise des Python-Interpreters veranschaulicht. Sie können ein Programm schrittweise durchlaufen und z.B. nachvollziehen, wie Ausdrücke ausgewertet werden. Thonny ist selbst in Python geschrieben und läuft auf den gängigen Betriebssystemen (Linux, Windows, macOS). Wenn Sie Python auf Ihrem Rechner installiert haben, können Sie Thonny mit dem Programm pip (Package Installer for Python) herunterladen und installieren, denn pip gehört zur Python-Standardinstallation.

Öffnen Sie ein Konsole-Fenster. Unter Windows geben Sie dazu unten links in das Suchfeld cmd ein und drücken Enter. Geben Sie das folgende Kommando ein und beenden Sie die Eingabe mit Enter.

pip install thonny

Abb. 1.9: In der Konsole mit pip ein Python-Programm installieren (Windows)

Abbildung 1.9 zeigt die Benutzungsoberfläche von Thonny. Wie IDLE bietet Thonny einen Editor (oben) und eine Shell (unten) – allerdings in ein und demselben Fenster.

Abb. 1.10: Die Benutzungsoberfläche von Thonny. Editor (oben) und Shell (unten) sind in einem Fenster.

1.12  Notebooks mit Jupyter und CoLab

Eine Alternative zu konventionellen Entwicklungsumgebungen ist Jupyter Notebook. Dabei handelt es sich um ein System, mit dem Sie sogenannte Notebooks gestalten können.

Abb. 1.11: Jupyter-Notebook mit Text, Bild und Python-Code

Ein Notebook ist ein interaktives Dokument, das formatierten Text, Bilder, Python-Code und Zellen für Eingaben und Ausgaben enthält. Man verwendet Notebooks typischerweise für wissenschaftliche Projekte, in denen ein Algorithmus zur Analyse von Daten und die Visualisierung der Berechnungsergebnisse im Vordergrund stehen. Das Notebook kann als pdf-Datei exportiert und dann als wissenschaftliche Arbeit veröffentlicht werden. Der Charme liegt unter anderem darin, dass die Diagramme von dem im Notebook angegebenen und erläuterten Python-Programm erzeugt werden.

Jupyter Notebook ist eine komplexe Software, die Sie kostenlos herunterladen und auf Ihrem heimischen Computer installieren können (https://jupyter.org/).

Einfacher ist es, Google Colaboratory (oder kurz Colab) zu nutzen, um Notebooks zu erstellen (https://colab.research.google.com/). Colab ist ein Jupiter-Notebook-System, das von Google gehostet wird. Mit Colab brauchen Sie auf Ihrem Computer nichts zu installieren. Sie nutzen einfach Ihren Webbrowser, und alle Berechnungen finden in der Cloud statt.

In Kapitel 16 finden Sie einige Beispiele für die Nutzung von Colab im Zusammenhang mit wissenschaftlichem Rechnen und Datenvisualisierung.

1.13  Rückblick

1.14  Übungen

Übung 1: Ausdruckanweisungen

Welche Ergebnisse liefern die folgenden Ausdruckanweisungen? Schreiben Sie in die Tabelle Ihre Vermutung und vielleicht ein Stichwort zur Erklärung.

  

Einige Anweisungstexte sind fehlerhaft.

Übung 2: Zuweisungen

Durch Zuweisungen werden Variablen erzeugt und die Werte von Variablen verändert. Ergänzen Sie in der folgenden Tabelle die Werte der Variablen.

  

Zu Beginn (in den ersten drei Zeilen) ist die Variable c nicht definiert.

Die Lösungen zu diesen Übungen können Sie durch Experimente in der IDLE-Shell selbst ermitteln. Außerdem finden Sie alle Lösungen in einer Datei, die Sie von der Website des mitp-Verlages herunterladen können (www.mitp.de).

1.15  Lösung der Frage: Semantik im Alltag

Inwiefern ist der Satz »Schau nach vorne!« semantisch nicht eindeutig?

Obwohl der Satz nach einer klaren Anweisung klingt, kann er in unterschiedlichen Situationen unterschiedlich verstanden werden, z.B.

  Kapitel 2