Glossar

Wähle eines der Schlüsselwörter auf der linken Seite…

Programmieren mit PythonTypen

Lesezeit: ~30 min

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 oft eine leichte Rundung erfordert.

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

Übung
x == 1 ist True ("wahr") oder False ("falsch") zurückgibt, je nachdem, ob ist. Andererseits ist 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 zurück.

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 = und j =

"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 Funktion , die 3 Boolwerte als Argumente nimmt und True zurückgibt, wenn und nur wenn folgendes zutrifft:

  1. Die beiden ersten beiden Argumente sind True, oder
  2. 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 jeweils äquivalent zu einfach nur 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 \frac{1}{a+\frac{2}{3}}. a 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 zurück, also ein Objekt vom Typ .

Übung
Wenn wir s = "Bruno"setzen{py}, dann ist s[:j] == "Bru" für j = .

Bruno
Bruno Bruno