Drücken Sie „Enter“, um den Inhalte zu überspringen

Python | Grundlagen

Datenverarbeitung

Programme sind sich im Kern alle ähnlich, auch wenn sie am Ende für den Anwender vollkommen unterschiedlich sind. So haben Computerspiele auch Gemeinsamkeiten mit beispielsweise einer Textverarbeitung oder einem Malprogramm, auch wenn es auf den ersten Blick merkwürdig erscheint. Denn klassisch unterscheiden wir bei der Programmierung zwischen drei grundlegenden Schritten in einem Programmablauf, die wir auf die eine oder andere Weise in jedem Programm wiederfinden:

  1. Das Programm erwartet eine Dateneingabe (beispielsweise über die Tastatur, das Gamepad, als Datendatei oder als Daten aus dem Internet)
  2. Das Programm macht etwas mit diesen Daten (beispielsweise berechnet es aus den Daten etwas, oder erzeugt daraus Bilder für ein Spiel)
  3. Das Programm gibt Daten aus (beispielsweise als Text oder Bild auf dem Bildschirm, oder Brief auf dem Drucker)

Diese klassische Sichtweise auf Programme und deren Abläufe soll uns erst einmal genügen. Wir sprechen hier vom klassischen EVA-Prinzip. Die Abkürzung EVA steht hierbei für Eingabe – Verarbeitung – Ausgabe.

Datentypen

Programme verarbeiten Daten. Das haben wir im letzten Abschnitt gelernt. Aber was sind Daten und wie sehen diese aus? Daten können ganz unterschiedlich sein. Das sind zum einen Texte; wir sprechen in der Programmierung von Zeichenketten, weil hier einzelne Buchstaben, Zahlen und Sonderzeichen (*!“§$%&/()=?) wie an einer Kette hintereinander aufgereiht sind. Zum anderen sind das Zahlen; mit Vorzeichen und ohne, als Ganzzahl oder als Dezimalzahl (Fließkommazahl). Daten können aber auch komplexe Dinge, wie Bilder oder Musikdateien sein. Wir werden später auch komplexe Strukturen und Klassen mit Eigenschaften und Methoden kennenlernen. Der Computer weiß nichts von diesen komplexen Daten und versteht zunächst einmal nur Zeichen und Zahlen. Wir wollen uns daher zunächst nur auf diese Datentypen konzentrieren und uns den Rest zu einem späteren Zeitpunkt genauer ansehen.

Zu den grundlegenden Datentypen (Basisdatentypen), die wir in den meisten Programmiersprachen wiederfinden, gehören:

  • Zeichen und Zeichenketten (engl. Character und String)
  • ganze Zahlen (engl. Integer)
  • Dezimalzahlen (Kommazahlen, engl. Float)
  • Boolsche Werte (WAHR oder FALSCH, engl. Boolean; True oder False)

Der Datentyp muss immer zu den Daten passen, die verarbeitet werden sollen. Mit Zeichenketten können wir nicht rechnen und den Buchstaben „A“ können wir (ohne Weiteres) nicht als Zahl speichern. Versuchen wir es dennoch, wird dies zu einem Fehler in unserem Programm führen. Starte dazu ‚Thonny‘ und probiere folgende Befehle im unteren Bereich des Fenster, der Shell, aus:

print("Hallo" + 5)

Was passiert?

Datenkonvertierungsfehler

Der Python-Interpreter geht bei dem ‚+‚-Zeichen davon aus, dass hier etwas berechnet werden soll. Aber er weiß nicht, wie er den Text Hallo mit der Zahl 5 addieren soll. Soll Hallo eine Zahl sein? Soll 5 als Zeichen verstanden werden? Beim Programmieren müssen wir dem Computer genau sagen, was wir von ihm wollen. Im ungünstigsten Fall macht der Computer fälschlicherweise etwas, dass wir gar nicht gewollt haben. Und das führt dann zu noch mehr Fehlern oder zum Programmabsturz. In unserem Fall sagt uns der Python Interpreter glücklicherweise, was wir falsch gemacht haben. Denn das können wir in der Fehlermeldung (rot) lesen:

TypeError: must be str, not int

Der Interpreter hat nach dem +-Zeichen eine Zeichenkette (str) erwartet, weil wir mit einer Zeichenkette gestartet hatten. Er hat dann aber eine Zahl (int) gefunden. Wenn wir verschiedene Daten miteinander benutzen wollen, müssen wir darauf achten, dass die Datentypen stets identisch sind, oder zumindest zuvor entsprechend umgewandelt wurden. Ansonsten gibt es immer eine Fehlermeldung. Probieren wir daher etwas anderes aus. Gib in der Shell nun folgendes ein:

print(3 + 4)

Was passiert?

einfache Berechnung

Der Interpreter hat zwei Zahlenwerte gefunden, die miteinander addiert werden sollen. Das Ergebnis lautet 7. Prima. Und wie verbinden wir jetzt den Text Hallo mit der Zahl 5? Das Wort Hallo lässt sich schwer als Zahl interpretieren. Aber mit der 5 sollte etwas machbar sein. Probiere dies:

print("Hallo" + "5")

Was passiert jetzt?

Zeichenverkettung

Der Interpreter hat nun zwei Zeichenketten gefunden: Den Text Hallo und den Text 5. Diesmal sind beide Teile Zeichenketten, was wir jeweils an den Anführungszeichen () erkennen. Wenn wir Zeichenketten miteinander „addieren“, entsteht immer eine neue Zeichenkette, bei der beide Zeichenketten aneinander gefügt werden.

Merke: Zeichenketten müssen stets in Anführungszeichen geschrieben werden.

Wir wollen uns das letzte Beispiel gar nicht länger ansehen, denn die Zusammenführung von Zeichenketten über eine Addition ist zwar grundsätzlich möglich, aber nicht schön. Es gibt elegantere Möglichkeiten, mit Zeichenketten umzugehen, die wir uns später noch ansehen werden. Die Programmiersprache Python bietet jedoch mit der Multiplikation eine interessante Möglichkeit, Zeichen wiederholt abzubilden. Wollen wir beispielsweise fünf mal das Zeichen a darstellen, können statt "aaaaa" in Python auch 5 * "a" schreiben. Probiere es in der Shell aus:

print(5 * "a")

Wir werden Situationen kennenlernen, in denen diese Möglichkeit praktisch ist.

Mit den Zeichenketten und den ganze Zahlen (Integer) haben wir nun bereits zwei der grundlegenden Datentypen kennengelernt. Die Datentypen können wir übrigens leicht in der Shell mit dem Befehl type überprüfen:

Datentypen (1)

Aus der Mathematik wissen wir, dass es mehr als nur ganze Zahlen gibt. Der Ausdruck 5 geteilt durch 2 ergibt als Ergebnis keine ganze Zahl. Aber auch mit solchen Zahlen müssen wir bei der Programmierung umgehen können. Wir sprechen hier von Dezimalzahlen oder Fließkommazahlen (engl. *float von Floating Point Number). Wir wollen uns das in der Python Shell einmal ansehen. Das Divisionszeichen ist in der Programmiersprache Python (und anderen) das Zeichen /.

Datentypen (2)

Abschließend schauen wir uns noch die Boolschen Werte an. Der Name geht zurück auf den englischen Mathematiker George Boole (1815-1864). Boolsche Werte beschreiben bei der Programmierung einen Zustand und können immer nur einen von zwei möglichen Werten einnehmen: JA oder NEIN, WAHR oder FALSCH, 1 oder 0, True oder False. Wir benutzen in der Programmierung die boolschen Werte, um Bedingungen zu prüfen (5 ist größer als 2) oder um uns Zustände im Programmablauf zu merken (Daten wurden bereits gelesen).

Datentypen (3)

Operatoren

In der Mathematik haben wir gelernt, mit Symbolen zu arbeiten. Für jede Rechenoperation gibt es dort entsprechende Symbole. In der Programmierung gibt es auch solche Symbole, nur unterscheiden sich diese teilweise von den bekannten Symbolen aus dem Mathematikunterricht. Bei den Grundrechenarten verwenden wir in Python folgende Symbole:

+ Addition (Plus-Rechnen)
Subtraktion (Minus-Rechnen)
* Multiplikation (Mal-Nehmen)
/ Division (Teilen)

Dazu kommen noch Operatoren für die Modulo-Berechnung (%; ganzzahliger Rest einer Division) und das Potenzieren (**; hoch 2, hoch 3).

Und wie in der Mathematik gilt auch hier: Punktrechnung vor Strichrechnung! Wie lautet das Ergebnis von 3 + 5 * 4? Richtig, 23. Denn zuerst wird die Multiplikation 5 * 4 ausgewertet, erst danach wird die 3 zum Ergebnis addiert. Wenn wir möchten, dass der Computer zuerst die Addition 3 + 5 auswertet und dann das Ergebnis mit 4 multipliziert, müssen wir Klammern (( und )) setzen. Probiere es in der Shell aus. Zunächst:

print (3 + 5 * 4)

Und anschließend:

print ((3 + 5) * 4)

Punkt- vor Strichrechnung

Außerdem haben wir gerade in den Beispielen schon sogenannte Vergleichsoperatoren kennengelernt. Vergleichsoperatoren werden uns immer wieder bei der Programmierung begegnen:

== gleich
!= ungleich
> größer als
< kleiner als
>= größer als oder gleich
<= kleiner als oder gleich

Das Ergebnis dieser Vergleichsoperatoren sind immer boolsche Werte: Zwei Zahlen können gleich sein, oder nicht. Die eine Zahl kann größer sein, als die andere, oder auch nicht. Das Ergebnis lässt sich stets mit WAHR (True) oder FALSCH (False) ausdrücken.

Es gibt darüber hinaus noch weitere Operatoren. Die schauen wir uns aber später noch einmal genau an, wenn wir uns mit Variablen geschäftigen.

Fragen

  1. Was ist das EVA-Prinzip?
  2. Was sind Datentypen und welche Datentypen gibt es?
Share This

Share This

Share this post with your friends!