Skip to content

Lösungen: Teil 6 - Basisfunktionen

Lösung 6.1: String zu Integer

python
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") → 42
  • string_zu_int("100") → 100

Lösung 6.2: Integer zu String

python
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

python
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:

  1. 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.

  2. Welche Typkonvertierungen werden durchgeführt?

    • int(alter_eingabe): String → Integer (von "16" zu 16)
    • str(naechstes_jahr): Integer → String (von 17 zu "17")
  3. Variablen-Tabelle (bei Eingabe "16"):

VariableTypWert
alter_eingabestr"16"
alterint16
naechstes_jahrint17
ausgabestr"Nächstes Jahr bist du 17 Jahre alt."

Detaillierte Erklärung des Ablaufs:

python
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() oder float() 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:

python
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:

python
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):

python
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:

  1. Starte den Debugger (F5)
  2. Gib "16" bei der Eingabe ein
  3. Nutze Step Into (F7), um die Zeile doppelt = alter * 2 auszuführen
  4. Beobachte im Variables-Fenster:
    • alter hat den Typ str und Wert "16" (mit Anführungszeichen!)
    • doppelt hat den Typ str und Wert "1616" (nicht 32!)
  5. Das Problem: String-Multiplikation wiederholt den String, führt aber keine mathematische Operation aus

Merke:

  • "16" * 2 ergibt "1616" (String wird wiederholt)
  • 16 * 2 ergibt 32 (mathematische Multiplikation)
  • input() gibt IMMER einen String zurück → immer mit int() oder float() konvertieren für Berechnungen

Informatik & ICT Unterricht Neufeld