Lektionen des Moduls (4/4)
Typkonvertierungen
Python ist stark typisiert: Es addiert niemals einen String zu einer Zahl, es sei
denn, du verlangst es explizit. Um von einem Typ zu einem anderen zu wechseln, verwendest
du die Konstruktorfunktionen: int(), float(), str(), bool(), list(), tuple(), set().
int("42") # 42
float("3.14") # 3.14
str(42) # '42'
list("abc") # ['a', 'b', 'c']
tuple([1, 2]) # (1, 2)
set([1, 1, 2]) # {1, 2}int() mit Strings
int("42") funktioniert; int("42.5") führt zu einem ValueError. Konvertiere bei
Dezimal-Strings zuerst in einen float: int(float("42.5")) → 42 (schneidet ab,
rundet nicht).
int("42") # 42
int(" 42 ") # 42 (strip automatico degli spazi)
int("42.5") # ValueError
int(float("42.5")) # 42
int("ff", 16) # 255 (base esplicita)float() mit Strings
Akzeptiert Dezimal- und wissenschaftliche Notation.
float("3.14") # 3.14
float("1e3") # 1000.0
float("inf") # inf
float("nan") # nanstr(): die "freundliche" Konvertierung
str(x) ruft intern x.__str__() auf, um die "menschliche" Darstellung zu erhalten.
Es gibt auch repr(x) für die "Debugger"-Darstellung, die oft expliziter ist
(mit Anführungszeichen für Strings usw.).
str(3.14) # '3.14'
str([1, 2]) # '[1, 2]'
str(True) # 'True'bool() und Truthiness
bool(x) gibt nur bei den falsy Werten von Python False zurück:
False,None- Nullwerte:
0,0.0 - leere Sammlungen:
"",[],(),{},set()
Alles andere ist truthy.
bool(0) # False
bool("") # False
bool([]) # False
bool("0") # True ! (stringa non vuota)
bool([0]) # True ! (lista non vuota, anche se contiene 0)Pattern: Sicheres Parsen von Eingaben
testo = input("età: ")
try:
eta = int(testo)
except ValueError:
print(f"non è un numero: {testo!r}")
eta = NoneBoolesche Auswertung (Truthiness)
In Python hat jedes Objekt einen impliziten Wahrheitswert. Du kannst den booleschen Wert eines beliebigen Objekts mit der Funktion bool(...) überprüfen. Leere Sammlungen (z.B. "", [], {}, set()) und Nullwerte (0, 0.0) werden immer zu False ausgewertet. Alle anderen Objekte werden zu True ausgewertet.
Probiere es aus
Gegeben seien `a = '10'` und `b = '32'` (Strings). Berechne `total` als deren GANZZAHLIGE Summe. Evaluiere `total`.
Hinweis anzeigen
int(a) + int(b), andernfalls verkettest du die Strings.
Lösung nach 3 Versuchen verfügbar
Wiederholungsübung
Gegeben sei die Liste `values = ['', 'x', 0, None, 1, []]`. Erstelle `truthy` NUR mit den truthy-Elementen unter Verwendung von bool(). Evaluiere `truthy`.
Hinweis anzeigen
List-Comprehension mit Filter bool(v) (oder einfach 'if v').
Lösung nach 3 Versuchen verfügbar
Zusätzliche Herausforderung
Konvertiere in der Liste von Strings `string_numbers = ["1", "2", "3"]` jedes Element mit `int()` in eine Ganzzahl und summiere sie, um den Wert `6` zu erhalten. Speichere die Summe in `sum_val` und evaluiere sie.
Hinweis anzeigen
Greife über den Index auf die Elemente zu, z.B. int(string_numbers[0]), und summiere sie.
Lösung nach 3 Versuchen verfügbar