Die Rangordnung der booleschen Operatoren
Um die boolesche Logik wirklich zu verstehen, muss man die Reihenfolge beachten, in der die booleschen Operatoren angewandt werden. Nehmen Sie z. B. die natürlichsprachige Aussage »es regnet und es ist kalt oder windig«. Wir können sie auf zweierlei Weise interpretieren:
»(es regnet und es ist kalt) oder windig«In diesem Fall wäre die Aussage True, falls es windig ist – selbst wenn es nicht regnet.
und »es regnet und (es ist kalt oder windig)«In diesem Fall dagegen wäre die Aussage False, falls es nicht regnet – selbst wenn es kalt oder windig ist.
Die Reihenfolge der booleschen Operatoren ist wichtig. Die erste Interpretation dieser Aussage wäre korrekt, weil der and-Operator Vorrang vor dem or-Operator hat. Schauen wir uns den Codeausschnitt in Listing 1–4 an.
## 1. Boolesche Operationen
x, y = True, False
print(x and not y)
# True
print(not x and y or x)
# True
## 2. If-Bedingung wird zu False ausgewertet
if None or 0 or 0.0 or '' or [] or {} or set():
print("Dead Code") # Wird nicht erreicht
Listing 1–4 Der boolesche Datentyp
Dieser Code zeigt zwei wichtige Punkte. Erstens werden boolesche Operatoren nach Priorität geordnet – der Operator not hat die höchste Priorität, gefolgt vom Operator and, gefolgt vom Operator or. Zweitens werden die folgenden Werte automatisch zu False ausgewertet: das Schlüsselwort None, der Integer-Wert 0, der Float-Wert 0.0, leere Strings oder leere Containertypen.
Strings
Python-Strings sind Zeichenfolgen. Strings sind unveränderlich, können also nach der Erschaffung nicht verändert werden. Es gibt zwar noch andere Methoden, um Strings herzustellen, doch dies sind die fünf gebräuchlichsten:
Einfache Anführungszeichen'Ja'
Doppelte Anführungszeichen"Ja"
Dreifache Anführungszeichen für mehrzeilige Strings'''Ja''' oder """Ja"""
Die String-Methodestr(5) == '5' ist True
Verkettung'Py' + 'thon' wird 'Python'
Oft verwenden Sie explizit Whitespace-Zeichen (Leerraum) in Strings. Die am häufigsten eingesetzten Whitespace-Zeichen sind das Newline-Zeichen \n, das Leerzeichen \s und das Tabulator-Zeichen \t.
Listing 1–5 zeigt die wichtigsten String-Methoden.
## Die wichtigsten String-Methoden
y = " Das ist faul\t\n "
print(y.strip())
# Entfernt Whitespace: 'Das ist faul'
print("DrDre".lower())
# Kleinbuchstaben: 'drdre'
print("achtung".upper())
# Großbuchstaben: 'ATTENTION'
print("smartphone".startswith("smart"))
# Vergleicht das Präfix des Strings mit dem Argument: True
print("smartphone".endswith("phone"))
# Vergleicht das Suffix des Strings mit dem Argument: True
print("another".find("other"))
# Vergleichsindex: 2
print("cheat".replace("ch", "m"))
# Ersetzt alle Vorkommen des ersten durch das zweite Argument: meat
print(','.join(["F", "B", "I"]))
# Setzt alle Elemente in der Liste unter Verwendung des Trenn-Strings
hintereinander: F,B,I
print(len("Rumpelstiltskin"))
# String-Länge: 15
print("ear" in "earth")
# Enthält: True
Listing 1–5 Der Datentyp string
Diese nicht vollständige Liste der String-Methoden zeigt, wie viel Macht der Datentyp string besitzt und dass Sie viele der gebräuchlichen String-Probleme mit der in Python enthaltenen Funktionalität lösen können. Falls Sie unsicher sind, wie Sie ein bestimmtes Ergebnis bei String-Problemen erreichen, schauen Sie in die Onlinereferenz mit allen eingebauten String-Methoden: https://docs.python.org/3/library/string.html#module-string.
Boolesche Werte, Integer, Floats und Strings sind die wichtigsten grundlegenden Datentypen in Python. Oft jedoch müssen Sie Datenelemente nicht nur erzeugen, sondern auch strukturieren. In diesen Fällen helfen Ihnen Containertypen. Doch bevor wir uns diese anschauen, wollen wir noch einen wichtigen Spezialdatentyp kennenlernen: None.
Das Schlüsselwort None
Das Schlüsselwort None ist eine Python-Konstante und bedeutet die Abwesenheit eines Werts. Andere Programmiersprachen wie etwa Java nutzen stattdessen den Wert null. Allerdings verwirrt der Begriff null Anfänger oft, die glauben, dies sei gleich dem Integer-Wert 0. Python nutzt also das Schlüsselwort None, wie Listing 1–6 zeigt, um anzudeuten, dass es sich von jedem anderen numerischen Wert für null, einer leeren Liste oder einem leeren String unterscheidet. Interessanterweise ist der Wert None der einzige Wert im Datentyp NoneType.
def f():
x = 2
# Das Schlüsselwort 'is' wird als Nächstes eingeführt
print(f() is None)
# True
print("" == None)
# False
print(0 == None)
# False
Listing 1–6 Die Verwendung des Schlüsselworts None
Dieser Code zeigt mehrere Beispiele für den Datenwert None (und was er nicht ist). Falls Sie für eine Funktion keinen Rückgabewert definieren, wird standardmäßig None zurückgeliefert.
Container-Datenstrukturen
Python enthält Container-Datentypen, die effizient mit komplexen Operationen zurechtkommen und dabei leicht verwendbar sind.
Listen
Die Liste ist ein Container-Datentyp, der eine Abfolge von Elementen speichert. Im Gegensatz zu Strings sind Listen veränderbar