Programmieren mit PythonTypen
Python hat, wie die meisten Programmiersprachen, eingebaute Typen für die Verarbeitung gängiger Daten wie Zahlen und Text.
Zahlen
Wie im vorherigen Abschnitt erläutert, kann eine Zahl entweder einen Wert vom Typ int
oder float
haben. Wir können ganze Zahlen genau darstellen, während die Speicherung einer Gleitkommazahl als Float
Eine Zahl, die direkt in ein Python-Programm eingegeben wird, wird als float oder integer gespeichert, je nachdem, ob sie einen Dezimalpunkt enthält. Wenn du also möchtest, dass der Wert 6 als float
gespeichert wird, musst du 6.0
schreiben.
Zahlen können mit den Operatoren ==,>,<,<=,>=,!=
miteinander verglichen werden.
Übung
Was ist der Typ des Objekts, das von 1 == 2
zurückgegeben wird?
1 == 2
Übungx == 1
ist True
("wahr") oder False
("falsch") zurückgibt, je nachdem, ob x = 1
Strings (Zeichenketten)
Textdaten werden durch eine Folge von Zeichen dargestellt, die als String bezeichnet wird. Wir können ein Stringobjekt erstellen, indem wir die gewünschte Zeichenfolge in Anführungszeichen einschließen: a = "das ist ein String"
. Eine solche in Anführungszeichen eingeschlossene Zeichenkette in einem Python-Programm wird als string literal bezeichnet - wir bleiben aber auch hier bei unserer Bezeichnung String. Strings können auch durch dreifache Anführungszeichen begrenzt werden, was für mehrzeilige Zeichenketten und für Zeichenketten mit Anführungszeichen nützlich sein kann.
""" Das ist eine mehrzeilige Zeichenkette. Sie kann sogar "Anführungszeichen" enthalten, kein Problem. """ "pre(python-executable) Das ist eine gewöhnliche Zeichenkette. \"Anführungszeichen\" erfordern hier einen Backslash."
Wir können die Anzahl der Zeichen in einem String mit der len
-Funktion abfragen: len("Hallo")
gibt
Wir können zwei Strings mit dem Additionsoperator (+
) verknüpfen: "Hallo " + "Welt"
.
Wir können das erste Zeichen in einem String s
mit dem Ausdruck s[0]
zurückgeben, das zweite Element mit s[1]
, und so weiter. Wir können den Teilstring vom vierten bis zum achten Zeichen mit s[3:9]
erhalten. Beachte, dass die 9 um eins größer ist als der Index an dem wir stoppen (bzw. 3 um 1 vor der Stelle, an der wir starten) wollen.
Übung
Für welche Werte von i
und j
wird der Ausdruck "Hallo Welt"[i:j] == "o We"
den Wert True
zurückgeben? i =
"Hallo Welt"[i:j]
Übung
Wenn entweder i
oder j
im Ausdruck s[i:j]
weggelassen wird (wobei s
ein String ist), was passiert dann? Experimentiere mit dem obigen Codeblock.
Lösung. Das Weglassen von i
oder j
bewirkt dass i = 0
oder j = len(s)
gesetzt werden.
String-Interpolation (Zeichenketteneinfügung)
Wir können den Wert einer Variablen mit Hilfe der sogenannten String-Interpolation in einen String einfügen. Es gibt mehrere Möglichkeiten, das in Python zu bewerkstelligen, aber die wahrscheinlich einfachste Methode ist, den Buchstaben f
unmittelbar vor das öffnende Anführungszeichen zu setzen. Ein so veränderter String wird als f-string ("formattierter String") bezeichnet. Alle Teile eines f-Strings die zwischen geschweiften Klammern stehen werden ausgewertet, und ihre Stringdarstellungen werden an dieser Stelle in den String eingefügt.
x = 19 print(f""" Der Wert des Quotienten x durch 3, ist {x//3}, und der Rest beträgt {x % 3}. """)
Übung
Verwende eine String-Interpolation um eine einzelne Codezeile zu schreiben, die mit 6.2 multipliziert ergibt 12.4
ausgibt, wenn die Variable A
auf 2
gesetzt, und mit 6.2 multipliziert ergibt 18,6
, wenn A
auf 3
gesetzt wird.
A = 2 print()
Lösung. Der Ausdruck print(f"mit 6.2 multipliziert ergibt {6.2*A}")
funktioniert.
Boolesche Variablen
Ein bool ist ein spezieller Typ, dessen einzige Werte True
("Wahr") und False
("Falsch") sind. Die grundlegenden Operatoren, die verwendet werden können, um boolesche Werte zu kombinieren, sind and
("und"), or
("oder") und not
("nicht").
Übung
Wandelt Python Typen um wenn man sie miteinander vergleicht? Mit anderen Worten, gibt 1 == 1.0
(also der Vergleich von zwei eigentlich gleich großen Integer- und ein Float-Werten) True
oder False
zurück?
1 == 1,0
Lösung. Ja, Python wandelt die Typen für den Gleichheitsvergleich um. Deshalb gibt 1 == 1.0
den Wert True
zurück.
Übung
Schreibe eine einzeilige True
zurückgibt, wenn und nur wenn folgendes zutrifft:
- Die beiden ersten beiden Argumente sind
True
, oder - Das dritte Argument ist
False
def f(a,b,c): pass # hier Code einfügen def test_f(): assert f(True, True, True, True) assert f(False, True, False) assert not f(False, True, True, True) return "Tests erfolgreich abgeschlossen!" test_f()
Lösung. Hier ist ein Beispiel für eine einfache Möglichkeit, das umzusetzen:
def f(a,b,c):
return a and b or not c
Sei vorsichtig mit Vergleichen der Form a == True
oder b == False
. Sie sind a
bzw. not b
, vorausgesetzt, a
und b
sind beide vom Typ bool, da die gesuchte Antwort ja schon von den Variablen selbst geliefert wird. Die kürzeren Versionen werden bevorzugt.
Übungen
Übung
Schreibe einen Code zur Berechnung von . ist dabei gleich der Anzahl der Zeichen im String "Semriacher Sennenhunde sind sehr selten selber senil"
Lösung. Wir speichern die Länge des angegebenen Strings in einer Variablen a
und werten den gegebenen Ausdruck wie folgt aus:
a = len("Semriacher Sennenhunde sind sehr selten selber senil")
1/(a+2/3)
Übung
Der Ausdruck 1 < 3
gibt
Übung
Wenn wir s = "Bruno"s[:j] == "Bru"
für j =