Programmieren Lernen mit Python Teil 1 – Die Grundlagen

Replit Account anlegen und ein Python Projekt erstellen

Die einfachste Möglichkeit mit der Programmierung in Python schnell loszulegen und keine Zeit mit langen Installationen zu verbringen ist es die Website replit.com zu nutzen. Alles war wir tun müssen, ist einen kostenlosen Account anzulegen. Die Features aus der kostenlosen Version reichen für das Lernen nämlich völlig aus.

Die Startseite von Replit.com

Rechts oben auf der Homepage finden wir den Button für Sign Up. Diesen klicken wir an und landen dann bei folgendem Formular.

Registrierung bei Replit.com

Hier können wir entweder eine der Social Media Optionen nutzen, also ein Google, Facebook oder GitHub Konto. Alternativ kann man sich aber natürlich auch ganz normal mit der Email-Adresse registrieren, was ich persönlich auch immer empfehle, denn damit habe ich auf jeden Fall immer Zugriff auf mein Konto.

Wenn die Registrierung erfolgreich abgeschlossen wurde, können wir uns einloggen und landen im Bereich Home unseres Replit Accounts.

Von dort aus haben wir direkt drei Möglichkeiten ein sogenanntes Repl, also ein Projekt anzulegen.

So sieht unser Bildschirm aus, wenn wir bei Replit eingeloggt sind

Es gibt drei Buttons: Direkt links oben unter unserem Accountnamen (1), im Hauptbereich (2) und ganz rechts oben (3) die alle ein Plus teilweise mit dem Wort Create beinhalten.

Egal, welchen dieser drei Buttons wir nutzen bekommen wir folgendes Fenster.

Beim Anlegen eines Projekts oder Repls müssen wir Python auswählen und können einen eigenen Namen vergeben

Wichtig ist es hier vor allem die richtige Programmiersprache für das Projekt zu wählen. In unserem Fall ist das natürlich Python, was in der Regel auch die erste Option ist. Rechts können wir unser Projekt noch benennen. Ein Repl bekommt immer einen automatisch generierten Fantasienamen, man kann hier aber natürlich einen eigenen Namen eingeben.

In der kostenlosen Version sind alle Repls öffentlich. Das bedeutet aber nicht, dass jede:r das bearbeiten kann, sondern lediglich, dass der Inhalt von anderen Personen auch einsehbar ist. Für das Lernen stört uns das überhaupt nicht und wenn wir später wirklich mit Python programmieren, werden wir vermutlich sowieso eine Offline-Lösung wie beispielsweise PyCharm oder VS Code benutzen. Diese kann man natürlich auch gerne schon für das Tutorial verwenden, Replit ist einfach ein bisschen leichter aufzusetzen.

Nach dem Klick auf Create Repl landen wir dann schon direkt in unserem Projekt. Das sieht normalerweise so aus.

Ein leeres Python-Projekt in Replit

Wir sehen hier im Prinzip drei unterschiedliche Bereiche unseres Online-Editors.

1. Die Projektdateien, Optionen und Einstellungen

Hier finden wir zum einen die Dateien unseres Projekts. Außerdem haben wir über die verschiedenen Symbole Zugriff auf weitere Optionen wie Datenbanken, Einstellungen, etc. Bevor das zu verwirrend wird – im Prinzip brauchen wir für das Grundlagentutorial zu Python hier gar nichts.

Das bedeutet auch, wir können einfach einmal auf das Dateisymbol (das Blatt ganz oben) klicken und diesen Bereich damit verstecken, sodass wir einfach mehr Platz haben.

2. Unsere Python-Datei

Der zweite Bereich ist die automatisch für uns angelegte Python-Datei mit dem Namen main.py im Editor. Eine Python-Datei erkennen wir immer an der .py Endung. In dieser Datei können wir unseren Python Code schreiben und diesen dann ausführen lassen.

Wenn man später professioneller mit Python arbeitet kann es vorkommen, dass man unterschiedlichen Code in verschiedenen Dateien schreibt, die wir dann wieder mit dem Bereich 1 verwalten können, aber für uns ist das jetzt erst einmal gar nicht notwendig und die eine Datei reicht vollkommen aus.

3. Die Konsole und der Ausgabebereich

Im dritten und letzten Bereich ganz rechts befindet sich die Konsole und standardmässig auch eine sogenannte Shell. Zweitere brauchen wir für unser Tutorial nicht, können das also einfach mit Klick auf das X schließen, sodass wir hier nur noch die Konsole haben.

In dieser Konsole sehen wir später die Ausgabe unseres Python-Codes aus der Datei. Wenn wir also zum Beispiel etwas ausgeben oder abfragen, wird hier Text erscheinen. Auch Fehler werden hier angezeigt, aber das werden wir alles bald sehen.

Außerdem können wir in der Konsole direkt einfachen Code schreiben und ausführen. Das sind auch die ersten Schritte, die wir jetzt gemeinsam machen wollen. Aber bevor wir starten noch einmal ein Screenshot, wie unser Browserfenster jetzt mit den ausgeblendeten Dateien und der geschlossenen Shell aussieht.

Das Projekt mit ausgeblendeten Dateien und geschlossener Shell

Werte, Operatoren und Ausdrücke in Python

Wir beginnen unser Tutorial zu Python ganz einfach in unserer Konsole bei Replit, also im rechten Bereich mit dem dunklen Hintergrund. Dort können wir einfach klicken, um einen Cursor zu bekommen und dann etwas eingeben. Der einfachste Ausdruck, den wir für Python hier formulieren können ist eine einzelne Zahl. Schreiben wir also einfach einmal 4 in die Konsole und bestätigen mit der Enter-Taste. Das liefert uns folgendes Resultat.

In der Konsole eingeben gibt uns der Ausdruck "4" einfach nur den Wert 4 zurück

Hier sollten wir direkt einmal ein paar Begrifflichkeit klären. Es gibt beim Programmieren Werte, Operatoren und Ausdrücke. Der einfachste Ausdruck, den wir hier gerade eben schon eingeben haben ist im Prinzip nichts anderes als der reine, zugehörige Wert. Unser Ausdruck 4 wurde also von Python zum Wert 4 ausgewertet.

Das ist direkt ein zweites wichtiges Konzept von Python. Ein normaler Ausdruck bestehend aus Werten und Operatoren wird immer ausgewertet bis am Ende ein einzelner Wert steht. Einfacher zu verstehen wird das, wenn wir Operatoren hinzufügen. Sehen wir uns einmal an, was Python mit dem Ausdruck 4 + 6 macht.

Ein Ausdruck mit mehreren Werten und Operatoren wird zu einem einzelnen Wert ausgewertet

In diesem Fall besteht der Ausdruck eben nicht nur aus einem Wert. Wir haben hier jetzt zwei Werte, die mit einem Operator (in diesem Fall Plus) verbunden. Nach der Bestätigung mit der Enter-Taste wertet Python den Ausdruck aus, bis ein einzelner Wert übrig bleibt. In diesem Fall ist dieser das Ergebnis der Addition, also 10.

In Python gibt es für diese Ausdrücke grundlegend einmal die folgenden, einfachen Operatoren.

OperatorBedeutungBeispielErgebnis
+Plus/Addition4 + 610
Minus/Subtraktion15 – 87
*Mal/Produkt2 * 1836
/Geteilt/Division12 / 52.4
//Abgerundete Division12 // 52
%Rest/Modulo12 % 75
**Hoch/Exponent4 ** 4256
Tabelle 1 – Die einfachen, arithmetischen Operatoren in Python

Mit diesen können wir schon einigermaßen komplexe Ausdrücke schreiben. Wichtig ist es dabei die Reihenfolge zu beachten mit der die Operatoren von Python ausgeführt werden. Ganz ähnlich wie beim Mathe-Unterricht in der Schule gibt es hier nämlich unterschiedliche Prioritäten und es wird nicht einfach alles von links nach rechts ausgeführt. Schauen wir uns einen ausführlicheren Ausdruck als Beispiel an.

Dieser Ausdruck wird entsprechend der Reihenfolge der Operatoren ausgewertet

Wenn ich diesen Ausdruck einfach nur von links nach rechts berechnen würde, komme ich auf folgendes Ergebnis.

2 + 4 ** 4 / 2 – 19 * 12
6 ** 4 / 2 – 19 * 12
1296 / 2 – 19 * 12
648 – 19 * 12
629 * 12
7548

Das ist aber offensichtlich nicht das Ergebnis. Stattdessen wertet Python den Ausdruck in folgender Reihenfolge aus.

2 + 4 ** 4 / 2 – 19 * 12
2 + 256 / 2 – 19 * 12
2 + 128 – 19 * 12
2 + 128 – 228
130 – 228
-98

Die Reihenfolge der Operatoren in Python ist dabei wie folgt.

  1. Potenz **
  2. Produkt *, Division /, Ganzzahldivision //, Rest %
  3. Addition +, Subtraktion

Operatoren, die auf derselben Stufe sind werden dann ganz normal der Reihenfolge nach von links nach rechts ausgewertet. Wenn wir diese bestehende Reihenfolge ändern wollen, dann können wir wie in der Mathematik auch Klammern verwenden. Ausdrücke, die in Klammern stehen werden vor allen anderen Ausdrücken ausgewertet.

Ausdrücke in Klammern werden immer als Erstes ausgewertet

Hier wertet Python in der folgenden Reihenfolge aus.

((2 + 4) ** (4 / 2) – 19) * 12
(6 ** (4 / 2) – 19) * 12
(6 ** 2 – 19) * 12
(36 – 19) * 12
17 * 12
204

Probier' doch an dieser Stelle einfach einmal kurz ein paar Ausdrücke in der Konsole zu schreiben und herauszufinden, ob immer das Ergebnis am Ende steht, dass Du erwartet hast!

Fehler passieren

Python hat bis hierhin unsere Ausdrücke immer wunderbar ausgewertet und uns am Ende einen berechneten Wert zurückgegeben. Das funktioniert aber nur dann, wenn unser Ausdruck keine Fehler enthält und vollständig ist. Der Ausdruck muss also für Python auswertbar sein.

Was passiert also, wenn ein Ausdruck für Python nicht auszuwerten ist? Es gibt einen Fehler. Dieser wird in der Konsole dann statt eines Ergebnisses zurückgegeben.

Ist ein Ausdruck nicht vollständig oder enthält Fehler, kann Python nichts auswerten und weist darauf hin

In diesem Beispiel fehlt nach dem Multiplikationsoperator eine Zahl. Python kann mit diesem Ausdruck so nichts anfangen und gibt daher kein Ergebnis, sondern einen Fehler zurück.

Ganz Wichtig!

Diese Fehler sind überhaupt nicht schlimm. Ein Fehler macht nicht etwa das Programm, den Browser oder gar den Computer kaputt – alles was hier passiert ist, dass wir eben kein Resultat bekommen.

Die Ausgabe in der Konsole zeigt uns oft auch relativ genau an, wo das Problem liegt. Die Fehlermeldung an sich SyntaxError: invalid syntax ist vielleicht für den Beginn noch etwas kryptisch, bedeutet aber im Prinzip nichts weiter als: Hier gibt es ein Problem mit dem Ausdruck. Das kleine nach oben zeigende Dreieck versucht uns aber direkt auf die Stelle im Code hinzuweisen, die den Fehler verursacht hat. In unserem Fall sehen wir, es ist der zweite Operator hinter dem nichts steht.

Zusammengefasst – Werte, Operatoren und Ausdrücke in Python

Wir können in Python also mit Werten und Operatoren arbeiten. Dabei bilden wir sogenannte Ausdrücke. Python werte diese Ausdrücke aus und befolgt dabei die Regeln was die Reihenfolge der Operatoren angeht, um am Ende den Ausdruck auf einen Wert, ein Ergebnis zu reduzieren.

Diese Ausdrücke in der Konsole einzugeben und evaluieren zu lassen, beherrschen wir jetzt schon einmal. Wer sich noch unsicher ist – einfach ein bisschen mehr ausprobieren, herumspielen, die Regeln nochmals verinnerlichen und mit genug Übung klappt das auf jeden Fall.

Wichtig für uns an dieser Stelle mitzunehmen: Da wir wissen, dass Python einen Ausdruck immer bis zu einem Wert auswertet können wir in Zukunft überall dort, wo ein Wert erwartet wird, auch einen Ausdruck verwenden, wenn das Programm den eigentlichen Wert erst berechnen soll.

Das war die erste Einführung und der erste Kontakt mit Python-Code. Ich denke aber, dass jetzt auch jeden Fall die Spannung groß ist und man endlich "richtig" loslegen möchte. Deshalb verlassen wir jetzt unsere Konsole und springen einen Bereich nach links – zum Code Editor.

Python-Code im Editor schreiben und ausführen

Nachdem wir die Grundlagen kennen, wird es Zeit unseren ersten richtigen Python-Code zu schreiben. Im Gegensatz zur Konsole wird dieser Code dann nicht direkt mit der Enter-Taste evaluiert und ausgeführt. Wir können im Editor in der Python-Datei so viel Code in mehreren Zeilen schreiben, wie wir möchten. Um dann das Ergebnis zu sehen müssen wir die Datei selbst ausführen und bekommen hoffentlich das gewünschte Ergebnis.

Unser erstes Programm mit Print

Es ist in vielen Programmiersprachen Tradition, dass das erste Programm, das man schreibt einfach nur "Hallo, Welt" ausgeben soll. Da wir hier gemeinsam Python lernen, ändern wir das doch einmal ein bisschen ab und geben stattdessen "Hallo, Python" aus. Springen wir also in unseren Code Editor, die Datei main.py, und geben dort einmal folgendes ein.

print("Hallo, Python")
Der Code wird direkt in die main.py Datei geschrieben

Wir schreiben in die Datei einfach print("Hallo, Python"). Dabei benutzen wir eine Funktion, die Python direkt eingebaut hat: die Print-Funktion. Diese Funktion macht nichts anderes, als den Inhalt der Klammer auf die Konsole auszugeben. Das passiert dabei aber nicht automatisch und auch wenn wir Enter drücken passiert nichts, wir springen einfach nur in die nächste Zeile.

Wir sind jetzt nicht mehr in der Konsole und unser Code wird nicht automatisch ausgeführt. Um das zu tun, klicken wir bei Replit auf den großen, grünen Button mit dem Play-Symbol oben in der Mitte. Sobald wir das tun, bekommen wir das Ergebnis zu sehen. Alternativ kann ich auch einfach ein Tastaturkürzel nutzen und im Editor für Windows Strg+Enter oder auf einem Mac Command+Enter drücken.

Mit dem Button (1) führen wir den Code aus, dann sehen wir die Ausgabe (2) in der Konsole

Das hat ja schon einmal gut geklappt. Natürlich ist das jetzt nicht wirklich beeindruckend. Trotzdem – per Definition ist das schon ein kleines Programm, das wir selbst geschrieben haben und das ohne Fehler ausgeführt werden konnte und eine Ausgabe erzeugt hat.

Challenge!

Versuch' doch einmal, das Programm so umzuschreiben, dass statt "Hallo, Python" zum Beispiel "Hallo, <Dein Name>" ausgegeben wird. In meinem Fall würde ich also "Hallo, Johannes" ausgeben.

Variablen in Python – Werte speichern und wiederverwenden

Bevor wir weitere Programme schreiben lernen wir jetzt eines der wahrscheinlich wichtigsten Konzepte in Python und vielen anderen Programmiersprachen kennen. Ich spreche von sogenannten Variablen.

Sehen wir uns an, wie eine Variable in Python definiert wird, bevor wir gemeinsam lernen, was das eigentlich im Detail bedeutet.

nummer = 100
Definition einer Variablen in Python

Alles, das wir tun müssen, um eine Variable zu erstellen ist einen Namen anzugeben und diesem Namen dann einen Wert zuweisen. In meinem Beispiel habe ich meine Variable nummer genannt und ihr den Wert 100 gegeben.

Den Namen einer Variablen kann man im Prinzip frei wählen, es ist nur später beim eigentlichen Programmieren wichtig, dass der Name auch Sinn macht. Denn so weiß man immer, wenn man die Variable verwenden möchte, was sich eigentlich dort befindet.

Aber wozu überhaupt eine Variable? Bis hierhin scheint sich der Sinn noch nicht wirklich zu erschließen. Der ganze Gedanke ist, dass ich in dieser Variablen einen Wert speichern kann und diesen dann jederzeit später wieder abrufen. Zum Beispiel könnte ich mir in meinem Beispiel jetzt den Wert von nummer mit der Print-Funktion ausgeben.

Dazu gebe ich in der nächsten Zeile einfach print(nummer) ein und klicke wieder oben in der Mitte auf den grünen Play-Button oder nutze das Tastaturkürzel (Windows: Strg+Enter, Mac: Command+Enter) um das Programm auszuführen. Damit bekomme ich folgendes Resultat.

nummer = 100
print(nummer)
100
Ausgabe der Variablen nummer mit der Print-Funktion

Man kann eine Variable eigentlich ein bisschen mit einem kleinen Karton vergleichen, in den ich etwas legen kann. Der Karton bekommt außen eine Beschriftung und wenn ich einen bestimmten Inhalte wieder verwenden möchte, dann schaue ich in den entsprechend beschrifteten Karton und kann das finden, was ich suche.

Wenn ich in meine Box mit der Beschriftung Nummer schaue, finde ich die 100

Wie definiere ich eine Variable in Python?

Im Gegensatz zu vielen anderen Programmiersprachen braucht man für eine Variable in Python kein spezielles Schlüsselwort. Wir beginnen einfach mit dem Namen, den wir im Prinzip frei festlegen können. Es gibt aber ein paar Bedingungen, die unser Name erfüllen muss.

  1. Es dürfen keine Leerzeichen enthalten sein
  2. Es dürfen nur Buchstaben (A-z), Zahlen (0-9) und Unterstriche (_) verwendet werden
  3. Der Name darf nicht mit einer Zahl beginnen

Nach dem Namen benutzen wir dann ein einfaches Gleichzeichen um der Variablen einen Wert zu geben. Diesen Vorgang nennt man Zuweisung und daher wird das Gleichzeichen auch als Zuweisungs-Operator bezeichnet.

Mehr müssen wir gar nicht tun – und schon haben wir eine Variable definiert.

Ein weiterer, wichtiger Hinweis zu den Namen, die wir unseren Variablen geben. Es gibt beim Programmieren normalerweise gewisse "Regeln", an die man sich im Besten Fall hält. So ist es in Python so, dass Variablen, die aus mehreren Wörtern bestehen, diese mit dem Unterstrich trennen.

Eine Variable könnte also zum Beispiel mein_name heißen. In anderen Programmiersprachen wird oft der sogenannte CamelCase verwandt, bei dem einfach jedes neue Wort mit einem Großbuchstaben beginnt. Im Beispiel würde das dann also so aussehen: meinName.

Welche Variante man am Ende verwendet ist im Prinzip jeder und jedem selbst überlassen. Es ist aber wichtig, dass man bei einer Schreibweise bleibt – einfach um den Code lesbar und konsistent zu machen.

In der folgenden Tabelle haben wir nochmals erlaubte und nicht erlaubte Variablen-Namen zusammengefasst.

ErlaubtNicht erlaubt
mein_namemein name (Leerzeichen sind nicht erlaubt)
meinNamemein-name (Bindestriche sind nicht erlaubt)
unternehmen1212unternehmen (Darf nicht mit einer Zahl beginnen)
_1212 (Darf nicht mit einer Zahl beginnen)
SUMME_UMSATZSUMM€_UMSATZ (€ ist ein nicht erlaubtes Sonderzeichen)
test"test" (" ist ein nicht erlaubtes Sonderzeichen)
Tabelle 2 – Variablen-Namen in Python

Den Wert einer Variablen in Python verändern

Genau so, wie wir einer Variablen ihren ersten Wert gegeben haben, können wir diesen Wert auch ersetzen. Wenn wir beim Beispiel mit der Box bleiben wollen: Wir können ja den Inhalt einfach aus der Box entfernen und etwas neues hinein tun.

Die 100 wird aus der Box genommen und mit einer 10 ersetzt

Um das Ganze in Python zu machen, gehen wir genau so vor wie beim Erstellen der Variablen.

nummer = 100
nummer = 10
print(nummer)
10

An der Ausgabe der Print-Funktion erkennen wir direkt, dass nummer jetzt nicht mehr 100 enthält, sondern 10. Diesen Vorgang bezeichnen wir als Überschreiben der Variable. Hier können wir auch schön sehen, wie der Python Code von oben nach unten, Zeile für Zeile, ausgewertet wird. Wir beginnen damit in Zeile 1 die Variable nummer zu erstellen und geben ihr den Wert 100. In Zeile 2 überschreiben wir diesen Wert mit 10 und in der dritten Zeile nutzen wir print um den aktuellen Wert von nummer, also 10, auszugeben.

Wichtiger Hinweis zu Variablen-Namen

Bei Variablen-Namen müssen wir Groß- und Kleinschreibung beachten. Im Klartext bedeutet das, nummer, Nummer, NUMMER und NuMmer sind vier verschiedene Variablen für Python.

Bevor wir uns weiter mit Variablen beschäftigen, wollen wir jetzt einen Blick auf ein weiteres, wichtiges Konzept beim Programmieren werfen: Datentypen.

Was sind Datentypen in Python und welche gibt es?

Bis hierhin haben wir eigentlich nur mit Zahlen gearbeitet – sowohl beim direkten Arbeiten mit der Konsole, als auch bei der Einführung in Variablen. Es gibt in Python, wie in vielen anderen Programmiersprachen auch aber verschiedene Datentypen. Die wichtigsten drei werden wir jetzt gemeinsam kennenlernen.

NameBedeutungBeispiele
intInteger oder Ganzzahl1, 12, 90, -32
floatFloating Point Number oder Kommazahl1.3, 9.7, 3.14, -8.324
stringString oder Zeichenkette (Wörter)"a", "Hallo", "Das ist ein String"
Tabelle 3 – Die drei wichtigsten Datentypen in Python

Mit diesen drei Datentypen – Integer, Float und String – können wir schon ziemlich viel erreichen und programmieren. Es gibt in Python auch noch mehr Datentypen, diese sind allerdings für dieses Grundlagentutorial erst einmal noch nicht relevant. Je nach Bedarf werden wir später weitere Typen einfach direkt dann vorstellen, wenn wir sie benötigen.

Python ist beim Erstellen von Variablen eine erst einmal untypisierte Programmiersprache

In Python gibt es natürlich Datentypen, die wir jetzt kennenlernen. Im Gegensatz zu vielen anderen Programmiersprachen müssen wir aber nicht bei jeder Variable explizit festlegen, um welchen Typ es sich handelt. Das ist vor allem für Anfänger:innen hilfreich und ermöglicht einen leichteren Einstieg!

Schauen wir doch einmal, wie die verschiedenen Typen in eigentlichem Code auf Replit aussehen.

string = "Das ist ein String"
string2 = 'Das ist auch ein String'
kommazahl = 9.8
ganzzahl = 10

Beginnen wir mit Strings. In den Zeilen 1 und 2 sehen wir, wie man Strings in Python definieren kann. Dazu schreiben wir die Buchstaben oder Zeichen innerhalb von hochgestellten Anführungszeichen. Es ist egal, ob wir doppelte oder einzelne Anführungszeichen verwenden. Wichtig ist nur, dass es vorne also zu Beginn des Strings und am Ende des Strings das selbe Zeichen ist.

Mit Strings können wir beim Programmieren Text erstellen und damit arbeiten. Das klingt erst einmal vielleicht nicht besonders spannend, aber wenn man mal an fertige Programme denkt, dann gibt es doch überall Text – auf Buttons, als Beschriftung, usw. Strings sind also einer der wichtigsten Datentypen.

Die anderen beiden Datentypen heißen Int und Float und sind eigentlich streng genommen beides einfach Typen für Zahlen in Python. Int steht dabei kurz für Integer, die englische Bezeichnung für eine ganze Zahl. Float ist die Abkürzung für Floating Point Number, auf deutsch Gleitkommazahl oder einfach gesagt eine Kommazahl.

Hinweis zur Schreibweise für Code

Beim Programmieren und Schreiben von Code wird sich sehr oft der englischen Schreibweise für gewisse Dinge bedient. Wir sehen es hier bei den Strings und bei Floats. Zum einen sind Anführungszeichen immer hochgestellt, auch am Beginn der Strings. Zum Anderen wird bei Dezimalzahlen kein Komma benutzt, sondern der Punkt.

Arbeiten mit den Datentypen in Python

Das Arbeiten mit Zahlen haben wir in diesem Tutorial ja schon behandelt und haben die verschiedenen Operatoren kennengelernt, die wir dafür zur Verfügung haben. Das gilt dabei sowohl für Int als auch Float Werte.

Schauen wir uns zur Wiederholung nochmal ein paar Beispiele in der Konsole von Replit an.

Einfache Rechnungen mit Int und Float in Python

Wir sehen zum einen, dass es kein Problem ist, Int und Float Werte zu kombinieren. Bei der Kombination erhalten wir allerdings immer einen Float als Ergebnis. Auch wenn wir etwas mit einer normalen Division teilen, auch wenn eine ganze Zahl herauskommt gibt Python einen Float aus. Im Gegensatz dazu liefert die Ganzzahldivision einen Int-Wert als Ergebnis.

Das muss man sich nicht alles sofort merken, aber später wird es durchaus noch wichtig, welche Art von Wert man von einer Operation zurückbekommt. Daher lohnt es sich auf jeden Fall hier auch ein bisschen Zeit in der Konsole zu verbringen und einfach ein paar Rechnungen einzugeben und zu schauen, was dabei herauskommt.

Aber wie ist das jetzt mit Strings? Wörter können wir ja schlecht multiplizieren, teilen oder einen Rest bilden, richtig? Ja und nein. Es sind natürlich nicht alle Operationen auch mit Strings möglich. Es gibt allerdings im Speziellen zwei Operatoren, die wir auch beim Text verwenden können: Plus (+) und Multiplikation (*).

Aber wie das? Mit dem Plus-Operator können wir zwei oder mehrere Strings verbinden und so einen längeren String bilden.

"Johannes" + "Ruof"
"Johannes" + " " + "Ruof"
JohannesRuof
Johannes Ruof

In diesem Beispiel sehen wir, dass wir zunächst einfach Johannes und Ruof addieren. Als Ergebnis bekommen wir den String JohannesRuof. Hier wird natürlich nicht einfach automatisch ein Leerzeichen eingefügt. Das können wir aber einfach selbst tun. Im zweiten Beispiel wird zwischen die beiden Strings noch ein " "-Leerzeichen addiert. Das Ergebnis ist ein String, der zwischen den beiden Namen das Leerzeichen enthält. So können wir also einfach Strings mit Plus addieren. Das geht dabei aber nur mit dem Datentyp String.

"Johannes" + 98
Fehler (siehe Screenshot)
Strings und Zahlen können nicht addiert werden

Hier wurde versucht einen String und eine Zahl zu addieren. Das kann Python nicht und wir bekommen dementsprechend einen Fehler. Das ist in diesem Fall ein TypeError also ein Typ-Fehler, der uns relativ genau sagt, was das Problem ist.

can only concatenate str (not "int") to str – das bedeutet wörtlich: kann nur str (nicht "int") mit str verketten

Python kann nur mehrere Strings verketten, nicht aber einen String mit einem Int. Wenn wir dennoch eine Zahl in unseren String aufnehmen wollen, dann müssen wir diese Zahl als String verwenden. Relativ einfach möglich, indem wir sie in Anführungszeichen schreiben.

"Johannes" + "98"
Johannes98

In diesem Beispiel passiert das, was wir vorhatten – die Zahl wird hinten an den String angehängt. Hier kann leicht ein anderer Fehler in Python passieren. Wenn wir eine Zahl in Anführungszeichen schreiben und damit als String kennzeichnen, verhält sie sich natürlich auch genau wie ein String. Auch das kann zu unerwarteten Ergebnissen führen, wie im nächsten Beispiel.

'100' + '29'
'10029'

In diesem Zahl addieren wir eben keine zwei Zahlen, sondern zwei Strings. Und dann passiert genau das was Python mit Strings macht – sie werden aneinandergehängt oder verkettet. Und so passiert es, dass 100 + 29 nicht 129 ergibt, sondern 10029.

Die zweite Operation, die mit Strings funktioniert ist die Multiplikation mit *. Sehen wir uns ein Beispiel an, hier müssen wir allerdings jetzt einen String mit einem Int-Wert kombinieren.

'Johannes' * 3
JohannesJohannesJohannes

Wenn ich einen String mit einer Zahl multipliziere bekomme ich einen String zurück, der einfach mehrfach aneinander gehängt wurde. Das kann in manchen Fällen nützlich sein, wird aber lange nicht so oft benötigt wie die Verkettung von Strings mit dem Plus-Operator.

Diese Operation funktioniert nur in der Kombination von String und Int.

"Johannes" * "Ruof"
"Johannes" * 3.0
Fehler siehe Screenshot
Strings kann man nicht mit Strings oder Floats multiplizieren

In diesem Beispiel sehen wir, dass sowohl die Multiplikation mit einem zweiten String als auch mit einem Float einen Fehler produziert. Das macht eigentlich auch relativ viel Sinn. Man kann schließlich keine zwei Wörter multiplizieren und auch die teilweise Vervielfältigung eines Worts mit einem Dezimalfaktor ist eher schwierig zu realisieren.

Teil 5: Erste kleine Programme schreiben

Wir haben jetzt viel Zeit mit den absoluten Grundlagen verbracht, haben Werte, Ausdrücke, Operatoren, Datentypen kennengelernt. Damit sind wir jetzt eigentlich bestens gerüstet, um ein bisschen eigenen Code zu schreiben und erste kleine Programme zu bauen. Dafür schauen wir uns jetzt eine weitere sehr nützliche Funktion in Python an.

Die Input-Funktion

Die Input-Funktion ist ähnlich wie die Print-Funktion, die wir ja schon kennen eine eingebaute Funktion in Python, die es uns erlaubt, während das Programm läuft etwas einzugeben. Wir bringen jetzt also Nutzereingaben ins Spiel. Sehen wir uns ein ganz einfaches Beispiel in Replit an. Hier müssen wir den Code jetzt wieder in die main.py Datei schreiben und dann ausführen, also nicht direkt in der Konsole tippen.

eingabe = input()
print(eingabe)
Die Input Funktion kann die Nutzereingabe in einer Variablen speichern und dann können wir den Wert verwenden

Das Beispiel ist natürlich so erst einmal nicht besonders beeindruckend. Trotzdem haben wir damit jetzt schon ein bisschen Dynamik in unser Programm gebracht. Jedes Mal beim Ausführen können wir etwas anderes eingeben und diese Eingabe wird dann von der Print-Funktion ausgegeben.

Mit dieser Input Funtion können wir jetzt schon interessante Dinge machen. Schauen wir uns einmal folgendes Beispiel an.

vorname = input()
nachname = input()

ganzer_name = vorname + " " + nachname
print(ganzer_name)
Eingabe: Johannes
Eingabe: Ruof
Johannes Ruof
Ein kleines Programm mit der Input Funktion

Wir fragen hier zwei Dinge mit der Input-Funktion ab. Als erstes geben wir einen Vornamen ein, danach einen Nachnamen. Anschließend übernimmt wieder das Programm für uns. In Zeile 4 werden beide Namen in einer neuen Variable ganzer_name mit einem Leerzeichen als Trenner kombiniert und schließlich mit der Print-Funktion ausgegeben.

Hier sehen wir jetzt schön, dass wir den Input eben nicht nur in einer Variablen speichern und genauso wieder ausgeben können, sondern mit diesen Werten in unserem Programm weiterarbeiten, sie verwenden und am Ende etwas ganz Neues ausgeben.

Natürlich ist das Programm so aber noch ziemlich schwer zu bedienen, wenn ein:e Nutzer:in jetzt nur die Konsole zu sehen bekommt. Aber das können wir ganz leicht ändern. Wir können unseren Input nämlich auch anfragen und kommentieren und dazu zum Beispiel Print verwenden.

print("Bitte gib deinen Vornamen ein")
vorname = input()
print("Vielen Dank! Bitte gib jetzt deinen Nachnamen ein")
nachname = input()

ganzer_name = vorname + " " + nachname
print("Danke! Du bist also " + ganzer_name)
Bitte gib deinen Vornamen ein
Eingabe: Johannes
Vielen Dank! Bitte gibt jetzt deinen Nachnamen ein
Eingabe: Ruof
Danke! Du bist also Johannes Ruof
Das verbesserte Programm leitet uns jetzt schön durch die Eingaben

So sieht das Ganze schon viel besser aus und jetzt kann jede:r unser Programm ganz einfach benutzen. Es gibt aber noch eine zweite Möglichkeit, wie wir die Anweisungen noch ein bisschen eleganter verpacken können. Anstatt Print-Funktionen zu verwenden, können wir den Text für die Input-Funktion auch in die Klammern schreiben.

vorname = input("Bitte gib deinen Vornamen ein: ")
nachname = input("Vielen Dank! Bitte gib jetzt deinen Nachnamen ein: ")

ganzer_name = vorname + " " + nachname
print("Danke! Du bist also " + ganzer_name)
Bitte gib deinen Vornamen ein: Eingabe: Johannes
Vielen Dank! Bitte gib jetzt deinen Nachnamen ein: Eingabe Ruof
Danke! Du bist also Johannes Ruof
Mit der Anweisung innerhalb der Input-Funktion sparen wir uns zwei Zeilen Code

Wir haben der Input-Funktion hier in den Klammern einen sogenannten Parameter übergeben. Die Input-Funktion hat diesen Parameter mit dem Namen prompt, also zu deutsch etwa Aufforderung. Wenn ich diesen Parameter nicht benutze, dann kann ich einfach nur in der Konsole tippen. Ich kann für den Parameter aber einen String angeben und dann wird dieser als Aufforderung in die Konsole geschrieben.

Wir haben Parameter eigentlich schon kennengelernt. Wenn ich in die Klammern der Print-Funktion einen String schreibe ist das eigentlich nichts anderes. Auch hier geben wir einen Wert an, den die Funktion dann benutzt – im Falle von Print als Ausgabe in der Konsole.

Übungsaufgabe 1 – Einführung und Ziel

An dieser Stelle gibt es jetzt eine kleine Challenge. Das soll aber nicht nur eine einfache Aufgabe sein, wir werden hier jetzt etwas versuchen, dass mit unserem aktuellen Wissensstand noch relativ schwierig ist. Wir werden zunächst mit großer Sicherheit Fehler produzieren. Das ist aber gewollt. Dadurch werden wir eben auch lernen, wie wir uns in solchen Situationen in Zukunft helfen können.

Das Ziel ist es das folgende Programm zu schreiben.

Wir wollen einen kleinen Taschenrechner programmieren

Wir wollen also eine Art Mini-Taschenrechner erstellen. Zunächst werden zwei Zahlen abgefragt, diese dann multipliziert und das Produkt wird auf die Konsole ausgegeben.

Bevor du weiter scrollst

Versuch doch an dieser Stelle einmal den Code für dieses Programm zu schreiben. Ich werde jetzt Schritt für Schritt durchgehen, wie man an die Sache herangehen würde. Dabei werden wir auf mehrere Probleme stoßen, die wir aber nach und nach lösen werden. Nach jedem Schritt kannst du versuchen, ob du es jetzt schaffst!

Der erste Versuch

Eigentlich kennen wir die Bausteine, die wir für dieses Programm benötigen. Dann legen wir doch einfach einmal los.

zahl1 = input("Bitte gib eine Zahl ein: ")
zahl2 = input("Danke! Bitte gib eine weitere Zahl ein: ")
produkt = zahl1 * zahl2
print("Das Produkt von " + zahl1 + " und " + zahl2 + " ist " + produkt)

Analysieren wir das Programm gemeinsam. In Zeile 1 fragen wir unseren ersten Wert ab. Mit der Input-Funktion und dem prompt-Parameter können wir das einfach tun. Das Ergebnis speichern wir in der Variablen zahl1, sodass wir nachher unser Produkt bilden können. Genauso machen wir es auch in der Zeile 2 für unsere zweite benötigte Zahl.

Vielleicht ist es schon aufgefallen: Am Ende der Aufforderung haben wir jeweils ein Leerzeichen in den String geschrieben. Das ist nicht notwendig, aber damit sieht die Eingabe schöner aus, da sie nicht direkt am Doppelpunkt beginnt.

Jetzt wird es interessant. In Zeile 3 erstellen wir eine weitere Variable mit dem Namen produkt und weisen ihr zahl1 * zahl2 zu. Schließlich benutzen wir in Zeile 4 eine relativ komplexe Print-Funktion. Wir verwenden das Plus-Zeichen, um insgesamt 6 Strings zu kombinieren.

Wir haben dabei drei von uns eingetippte Strings mit "Das Produkt von ", " und ", sowie " ist ". Diese ergänzen wir mit den Werten von zahl1, zahl2 und produkt. Auch hier sehen wir schön die in die Strings eingefügten Leerzeichen, sodass nichts aneinander klebt.

Wenn so auch dein Programm bis hierhin aussieht, dann herzlichen Glückwunsch! Das ist wirklich super und mehr wissen wir bis hierhin auch nicht. Aber wenn du es schon ausgeführt hast, dann ist dir wahrscheinlich aufgefallen, dass es nicht sehr lange gut ging.

Der erste Fehler

So hatten wir uns das nicht vorgestellt

Bis wir unsere beiden Zahlen eingegeben haben ging ja eigentlich alles gut. Aber nach der Eingabe der zweiten Zahl geht es nicht weiter und wir bekommen einen Typ-Fehler. In der Zeile 3 kann unser Programm anscheinend zahl1 und zahl2 nicht multiplizieren. Und der Fehler deutet schon ein bisschen an warum nicht.

can’t multiply sequence by non-int of type ’str' – wir versuchen hier also mit einem String zu multiplizieren, oder besser gesagt wir versuchen zwei Strings miteinander zu multiplizieren. Dazu muss man eines wissen: Die Werte die wir von der Input-Funktion bekommen sind immer Strings. Egal, ob ich einen Namen oder eine Zahl eingebe – es wird immer als String gespeichert.

Aber was jetzt? So kommen wir an dieser Stelle nicht weiter. Wir müssen uns überlegen, wie wir das Problem lösen können und aus unseren Strings wieder Zahlen machen.

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

Wenn ich beim Programmieren an so einem Punkt ankomme, dann ist immer Google oder die Suchmaschine meiner Wahl der erste Anlaufpunkt. Ich muss also aus einem String eine Zahl machen, einen Integer – oder für unser Beispiel noch besser einen Float. Dann schauen wir doch mal, was die folgende Suche hergibt:

string in zahl umwandeln python

Google kennt also eine für uns nützliche Funktion

Für die meisten Probleme beim Programmieren wird man online leicht eine Lösung finden. So auch in diesem Fall. Google zeigt uns schon direkt in der Suche, was wir tun müssen – die int() Funktion verwenden.

Wenn man jetzt ganz auf sich alleine gestellt ist, dann kann man einfach ein paar Ergebnisse anklicken und findet sicherlich Beispiele und Erklärungen, wie die Funktion verwendet wird. Aber hier kann ich das euch natürlich direkt erklären.

Zusätzlich zur int()-Funktion schauen wir uns direkt noch die zwei weiteren relevanten Funktionen an – str() und float(). Mit diesen drei Funktionen können wir unsere Werte in die verschiedenen Datentypen konvertieren – falls möglich.

Die Anwendung ist dabei denkbar einfach – wir benutzen nur den jeweiligen Funktionsnamen und übergeben dann in den Klammern das, was wir konvertieren wollen. Sehen wir uns ein paar Beispiele an.

zahl_aus_string = int("13")
# zahl_aus_string enthält jetzt den Wert 13

string_aus_zahl = str(14.8)
# string_aus_zahl enthält jetzt den Wert "14.8"

float_aus_int = float(200)
# float_aus_int enthält jetzt den Wert 200.0

Natürlich kann man nicht jeden beliebigen Wert in jeden beliebigen Typ konvertieren. Die folgende Tabelle zeigt die üblichsten Fälle.

Gültige UmwandlungUngültige Umwandlung
int("10") -> ergibt 10int("zehn") -> Keine Zahl gefunden
int(13.0) -> ergibt 13float("eins komma drei") -> keine Zahl gefunden
int(12.3) -> ergibt 12int("12.3") -> Keine Ganzzahl gefunden
float(13) -> ergibt 13.0
float("10") -> ergibt 10.0
str(10) -> ergibt "10"
str(12.3) -> ergibt "12.3"
Tabelle 4 – Die möglichen Umwandlungen von Datentypen in Python

Mit diesem Wissen gewappnet wenden wir uns jetzt wieder unserem kleinen Programm zu. Versuch doch auch hier noch einmal, ob Du alleine schon weiterkommst.

Der zweite Versuch

Wir wissen also, wie wir unsere Input-Werte in Zahlen konvertieren können. Der erste Schritt wäre es jetzt vielleicht einfach die int()-Funktion zu verwenden. Aber wir wollen eigentlich in der Lage sein, sowohl Integer als auch Float Werte zu verwenden und deshalb müssen wir für unsere Zahlen die float()-Funktion benutzen.

Warum ist das so? Wenn wir einen Blick nach oben in die Tabelle 4 werfen, dann sehen wir, dass der Ausdruck int("12.3") nicht funktioniert. Wir können also eine als String formatierte Dezimalzahl gar nicht in einen Integer umwandeln. Also dann, mit der float()-Funktion.

zahl1 = input("Bitte gib eine Zahl ein: ")
zahl2 = input("Danke! Bitte gib eine weitere Zahl ein: ")
produkt = float(zahl1) * float(zahl2)
print("Das Produkt von " + zahl1 + " und " + zahl2 + " ist " + produkt)

Sieht soweit gut aus, oder? Aber wenn das Programm ausgeführt wird, bekommen wir schon wieder ein Problem.

Fast hat es geklappt – aber wir haben noch ein kleines Problem

Das Problem das jetzt auftaucht haben wir gerade eben selbst geschaffen. Unsere Rechnung funktioniert jetzt wunderbar – der Fehler ist aber nur eine Zeile nach unten gerutscht. Jetzt versuchen wir nämlich in unseren letzten Ausgabestring für die print()-Funktion einen float Wert einzubauen.

Das gibt der Typ-Fehler auch relativ klar wieder – can only concatenate str (not "float") to str – also wir können nur Strings verbinden und keine Floats. Aber wir haben die Lösung ja eigentlich schon kennengelernt – die str()-Funktion. Alles was wir jetzt also tun müssen ist den float Wert (produkt) zurück in einen String umzuwandeln. Das können wir direkt in der print()-Funktion machen und das sieht dann so aus.

zahl1 = input("Bitte gib eine Zahl ein: ")
zahl2 = input("Danke! Bitte gib eine weitere Zahl ein: ")
produkt = float(zahl1) * float(zahl2)
print("Das Produkt von " + zahl1 + " und " + zahl2 + " ist " + str(produkt))

So jetzt haben wir es aber geschafft. Wenn wir dieses Programm ausführen, dann können wir Ints und Floats eingeben und bekommen immer das richtige Ergebnis. Natürlich kann es immer noch zu Fehlern kommen, wenn wir etwas anderes als Zahlen eingeben, aber damit sind wir jetzt einmal zufrieden und zählen diese Challenge als gemeistert!

Übungsaufgabe 2 – Weil’s so schön war, noch einmal!

Für die zweite Übungsaufgabe können wir jetzt bereits alles, was wir benötigen. Wir wollen nochmal ein kleines, anderes Programm schreiben und sehen es uns zunächst wieder in Aktion an.

Dieses kleine Programm ist die Challenge

Das Programm fragt uns zunächst nach unserem Namen. Danach wird das Alter abgefragt und aus den gemachten Angaben gibt uns das Programm eine Begrüßung zurück und sagt uns, welcher unser nächster Geburtstag ist.

Jetzt bist Du dran!

Nach der letzten Challenge denke ich, dass diese Aufgabe machbar ist. Also versuch doch einmal das Programm zu schreiben und die Aufgabe zu lösen. Ich zeige dir hier gleich noch eine Musterlösung.

Übungsaufgabe 2 – Lösung

Ich hoffe, du hast es geschafft! Hier ist meine Lösung für die Challenge.

name = input("Bitte gib deinen Namen an: ")
alter = input("Vielen Dank! Wie alt bist du? ")
geburtstag = int(alter) + 1
print("Hallo " + name + "! Dein nächster Geburtstag ist dein " + str(geburtstag) + "er")

Gehen wir noch kurz zusammen durch was passiert. In Zeile 1 fragen wir mit der input()-Funktion den Namen ab und speichern diesen in der Variablen name. In Zeile 2 machen wir dasselbe mit dem Alter und speichern dieses in der Variablen alter.

In Zeile 3 addieren wir 1 auf das angegebene Alter. Dazu müssen wir den String der input()-Funktion in einen Integer umwandeln. Hier verwenden wir einen Integer, da das Alter ja eigentlich immer als ganze Zahl angegeben wird.

Schließlich steht in Zeile 4 unsere Ausgabe mit der Begrüßung und dem Geburtstag. Den Namen können wir einfach so verketten, da er ja von der input()-Funktion als String gespeichert wurde. Beim Geburtstag handelt es sich allerdings um einen Int-Wert, daher müssen wir hier die str()-Funktion nutzen, um den Wert in den String einbauen zu können.