Lösungen: Teil 4 - Datentypen
Lösung 4.1: Datentypen erkennen
def verschiedene_typen():
"""Gibt verschiedene Datentypen zurück."""
ganze_zahl = 42
komma_zahl = 3.14
text = "Hallo"
wahrheit = True
return ganze_zahl, komma_zahl, text, wahrheitErklärung:
42ist ein Integer (Ganzzahl)3.14ist ein Float (Gleitkommazahl)"Hallo"ist ein String (Text)Trueist ein Boolean (Wahrheitswert)
Lösung 4.2: String zusammensetzen
def strings_verbinden(teil1, teil2):
"""Verbindet zwei Strings."""
return teil1 + teil2Erklärung: Der + Operator verbindet Strings (Konkatenation).
Beispiele:
strings_verbinden("Hallo", "Welt")→"HalloWelt"strings_verbinden("Python", " ist toll")→"Python ist toll"
Lösung 4.3: Code Reading
Antworten:
Welche Datentypen werden verwendet?
name: String ("Anna")alter: Integer (16)groesse: Float (1.65)ist_schueler: Boolean (True)info: String (zusammengesetzter Text)
Warum muss
altermitstr()konvertiert werden?Weil der
+Operator bei Strings nur Strings verbinden kann.alterist ein Integer (16), und man kann nicht direkt einen String mit einem Integer verbinden.str(alter)wandelt die Zahl 16 in den String "16" um, damit die Konkatenation funktioniert.Was gibt das Programm aus?
Anna ist 16 Jahre alt
Detaillierte Erklärung:
name = "Anna" # String
alter = 16 # Integer
groesse = 1.65 # Float
ist_schueler = True # Boolean
# String-Konkatenation mit Typkonvertierung
info = name + " ist " + str(alter) + " Jahre alt."
# info = "Anna" + " ist " + "16" + " Jahre alt."
# info = "Anna ist 16 Jahre alt."
print(info) # Ausgabe: Anna ist 16 Jahre altWichtig: Ohne str() würde der Code einen TypeError verursachen, weil man String und Integer nicht mit + verbinden kann.
Lösung 4.4: Debugging
Fehler: In Zeile 3 ist zahl1 ein String ("10"), während zahl2 ein Integer (20) ist. Der + Operator kann diese beiden unterschiedlichen Typen nicht addieren.
Fehlermeldung: TypeError: can only concatenate str (not "int") to str
Korrekte Lösung:
def berechne_summe():
"""Berechnet eine Summe."""
zahl1 = 10 # Integer statt String
zahl2 = 20
summe = zahl1 + zahl2
return summe
# Test
print(berechne_summe()) # Ausgabe: 30Alternative Lösung (Typkonvertierung):
def berechne_summe():
"""Berechnet eine Summe."""
zahl1 = "10"
zahl2 = 20
summe = int(zahl1) + zahl2 # String zu Integer konvertieren
return summe
# Test
print(berechne_summe()) # Ausgabe: 30Mit Debugger finden:
- Starte den Debugger (F5)
- Setze einen Breakpoint bei Zeile 3 (
summe = zahl1 + zahl2) - Nutze Step Over (F6), um die Zeile auszuführen
- Beobachte im Variables-Fenster:
zahl1hat den Typstrund Wert"10"zahl2hat den Typintund Wert20
- Der Debugger zeigt den
TypeErroran - Die Lösung: Entweder
zahl1 = 10(ohne Anführungszeichen) oderint(zahl1)verwenden