Lösungen: Teil 6 - Basisfunktionen
Lösung 6.1: String zu Integer
def string_zu_int(text):
"""Konvertiert String zu Integer."""
return int(text)Erklärung: int() wandelt einen String in eine Ganzzahl um.
Beispiele:
string_zu_int("42")→ 42string_zu_int("100")→ 100
Lösung 6.2: Integer zu String
def int_zu_string(zahl):
"""Konvertiert Integer zu String."""
return str(zahl)Erklärung: str() wandelt eine Zahl in einen String um.
Beispiele:
int_zu_string(42)→"42"int_zu_string(100)→"100"
Lösung 6.3: Formatierte Ausgabe
def formatierte_ausgabe(name, alter):
"""Erstellt einen formatierten Satz."""
return f"Ich bin {name} und {alter} Jahre alt."Erklärung: f-Strings ermöglichen das Einbetten von Variablen in Strings mit {}.
Beispiel:
formatierte_ausgabe("Anna", 16)→"Ich bin Anna und 16 Jahre alt."
Lösung 6.4: Code Reading
Antworten:
Was passiert, wenn der Benutzer "16" eingibt?
Das Programm nimmt die Eingabe "16" als String entgegen, konvertiert sie zu einem Integer (16), addiert 1 (ergibt 17), und gibt dann "Nächstes Jahr bist du 17 Jahre alt." aus.
Welche Typkonvertierungen werden durchgeführt?
int(alter_eingabe): String → Integer (von "16" zu 16)str(naechstes_jahr): Integer → String (von 17 zu "17")
Variablen-Tabelle (bei Eingabe "16"):
| Variable | Typ | Wert |
|---|---|---|
| alter_eingabe | str | "16" |
| alter | int | 16 |
| naechstes_jahr | int | 17 |
| ausgabe | str | "Nächstes Jahr bist du 17 Jahre alt." |
Detaillierte Erklärung des Ablaufs:
alter_eingabe = input("Wie alt bist du? ")
# Benutzer gibt "16" ein
# alter_eingabe = "16" (String!)
alter = int(alter_eingabe)
# int("16") konvertiert String zu Integer
# alter = 16 (Integer)
naechstes_jahr = alter + 1
# 16 + 1 = 17
# naechstes_jahr = 17 (Integer)
ausgabe = "Nächstes Jahr bist du " + str(naechstes_jahr) + " Jahre alt."
# str(17) konvertiert Integer zu String "17"
# "Nächstes Jahr bist du " + "17" + " Jahre alt."
# ausgabe = "Nächstes Jahr bist du 17 Jahre alt." (String)
print(ausgabe)
# Ausgabe: Nächstes Jahr bist du 17 Jahre alt.Wichtige Konzepte:
input()gibt IMMER einen String zurück, auch wenn der Benutzer eine Zahl eingibt- Für Berechnungen muss der String mit
int()oderfloat()konvertiert werden - Für String-Konkatenation muss die Zahl mit
str()zurück in einen String konvertiert werden
Lösung 6.5: Debugging
Fehler: Die Variable alter ist ein String (weil input() immer einen String zurückgibt), und wenn man einen String mit 2 multipliziert, wird der String verdoppelt, nicht die Zahl.
Problem:
alter = input("Wie alt bist du? ") # alter ist ein String, z.B. "16"
doppelt = alter * 2 # "16" * 2 = "1616" (String-Verdopplung!)Bei Eingabe "16":
alter = "16"(String)doppelt = "16" * 2 = "1616"(String wird zweimal wiederholt)- Ausgabe: "Das Doppelte deines Alters ist 1616" (falsch!)
Korrekte Lösung:
def alter_verdoppeln():
"""Fragt nach dem Alter und gibt das doppelte aus."""
alter = input("Wie alt bist du? ")
alter_int = int(alter) # String zu Integer konvertieren
doppelt = alter_int * 2 # Jetzt mathematisch: 16 * 2 = 32
print(f"Das Doppelte deines Alters ist {doppelt}")
# Test
alter_verdoppeln()
# Bei Eingabe "16": "Das Doppelte deines Alters ist 32"Alternative (kürzer):
def alter_verdoppeln():
"""Fragt nach dem Alter und gibt das doppelte aus."""
alter = int(input("Wie alt bist du? ")) # Direkt konvertieren
doppelt = alter * 2
print(f"Das Doppelte deines Alters ist {doppelt}")Mit Debugger finden:
- Starte den Debugger (F5)
- Gib "16" bei der Eingabe ein
- Nutze Step Into (F7), um die Zeile
doppelt = alter * 2auszuführen - Beobachte im Variables-Fenster:
alterhat den Typstrund Wert"16"(mit Anführungszeichen!)doppelthat den Typstrund Wert"1616"(nicht 32!)
- Das Problem: String-Multiplikation wiederholt den String, führt aber keine mathematische Operation aus
Merke:
"16" * 2ergibt"1616"(String wird wiederholt)16 * 2ergibt32(mathematische Multiplikation)input()gibt IMMER einen String zurück → immer mitint()oderfloat()konvertieren für Berechnungen