Michael Weigend
Python 3 für Studium
und Ausbildung
Einfach lernen und professionell anwenden
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 Darstellungsproblemen 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 geltenden 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ältigungen, Übersetzungen, Mikroverfilmungen und Einspeicherung und Verarbeitung in elektronischen 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 sichtbaren 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
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
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.
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.
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!
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
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.
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 Language 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?
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.
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?
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.
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.
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 Systempfad (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
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
Wie auf Linux-Systemen ist auch auf Apple-Computern Python in der Regel bereits installiert. Um das nachzuprüfen, öffnen Sie auf Ihrem Mac ein Terminal-Fenster (Programme|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.
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.
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.
Es gibt zwei Tastenkombinationen (Hotkeys), die die Arbeit mit der IDLE-Shell erleichtern.
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
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.
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
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 Auftraggeber 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
Zuweisungen sind wahrscheinlich die häufigsten Anweisungen in Programmtexten.
Die einfachste Form der Zuweisung besteht aus einem Namen, gefolgt von einem Gleichheitszeichen und einem Wert, sie hat also die Form:
name = wert
>>> 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.
>>> 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.
>>> x = 2
>>> 2 * x + 1
5
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
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
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.
Eine erweiterte Zuweisung ist eine Kombination aus einer Zuweisung und einer Rechenoperation.
>>> 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.
>>> y = 100
>>> y *= 2
>>> y
200
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.
Für Multiplikationen verwendet man in Python den Stern *.
>>> 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)
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
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.
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.
Ü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).
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