Strings

Notizen

  • Strings sind ein Standard-Datentyp in Python:

    • Strings sind indizierbar (erstes Element hat Index 0) und können per „Slicing“ zerlegt werden

    • Strings sind iterierbar, z. B. in einer for-Schleife. Die Elemente, die beim Schleifendurchlauf zurückgeliefert werden, sind die einzelnen Buchstaben des Strings.

      for buchstabe in "Das ist ein Test.":
          print(buchstabe)
      
    • Sie sind nicht mutierbar, das bedeutet, dass beispielsweise die Zuweisung text[3] == 'a' zum Austausch des vierten Buchstabens verboten ist.

    • mögliche logische Operatoren:

      • == Test auf Gleichheit

      • <, > Test auf alphabetische Reihenfolge. Ein String B ist „größer“ als ein String A, wenn er im Wörterbuch weiter hinten stehen würde.

      • in Test auf Enthaltensein als echter Teil-String (ohne Lücken)

        "spiel" in "Beispiel" # liefert True
        "spass" in "Beispiel" # liefert False
        "Beil" in "Beispiel"  # liefert False
        
    • Strings haben als typische „Objekte“ eingebaute Funktionen, die Methoden genannt werden.

  • Bonusinformation: Sogenannte F-Strings sind die komfortabelste Möglichkeit, Strings bei der Ausgabe passgerecht zu formatieren. In geschweiften Klammern können Ausdrücke zusammen mit Formatierungsanweisungen untergebracht werden. Ein Beispiel (Formatierung als Fließkommazahl mit gegebener Anzahl von Nachkommastellen):

    >>> zahl = 123.456789
    >>> zahl_als_formatierter_String = f"Beispiel: {zahl:.3f}"
    >>> print(zahl_als_formatierter_String)
    Beispiel: 123.457
    >>>
    

    Link zu einer Online-Lektion über f-Strings.

Aufgaben bis zum nächsten Mal

  • Lesen Sie das Kapitel 9 im Buch („Case study: word play“). Versuchen Sie beim Lesen von Kapitel 9 die Code-Beispiele nachzuvollziehen.

  • Bearbeiten Sie die folgende Aufgabe 04 und speichern Sie das Ergebnis in Ihrem pythonanywhere-Account! Sie können den nachfolgenden Text der Aufgabenstellung auch direkt in den Editor bei pythonanywhere kopieren. (Muster 04)

    aufgabe_04_sortierte_woerter.py
    # Schreiben Sie eine Funktion is_sorted(wort), die einen
    # String als Parameter akzeptiert und den Wahrheitswert
    # True zurückgibt, wenn die Buchstaben des Strings
    # aufsteigend alphabetisch sortiert sind. Anderenfalls
    # soll sie den Wahrheitswert False zurückgeben.
    # Bonus: Die Funktion liefert True, wenn die Buchstaben
    # aufsteigend oder absteigend sortiert sind.
    # 
    # is_sorted("first") ergibt True
    # is_sorted("second") ergibt False
    
    def is_sorted(wort):
        return ... # 
    
    print(is_sorted("first")) # ergibt True
    print(is_sorted("second")) # ergibt False
    
    # Benutzen Sie dann die Funktion, um aus der Datei
    # words.txt alle sortierten Wörter anzeigen zu lassen.
    # Welches ist das längste?
    
  • Bonusaufgabe 2 (Bonusaufgaben müssen nicht bearbeitet werden, aber sie können Hausaufgaben ersetzen.): Schreiben Sie ein Programm, das prüft, ob ein Wort in einem anderen enthalten ist, wenn auch Lücken erlaubt sind.

    bonus_b2_wortcontainer.py
    # Schreiben Sie eine Funktion contains(wort1, wort2),
    # die zwei Wörter als Argumente erwartet und die
    # den Wahrheitswert True zurückgibt, wenn eins der Worte
    # im anderen enthalten ist.
    # "Enthalten sein" bedeutet hier: man kann im einen Wort
    # Buchstaben streichen, so dass die verbleibenden Buchstaben
    # ohne Veränderung der Reihenfolge # das andere Wort ergeben.
    # 
    # Groß- und Kleinschreibung sollen dabei ignoriert werden.
    #
    # Beispiele:
    # contains("Kaugummi", "Kamm") ergibt True
    # contains("Ausgabe","Hausaufgabe") ergibt True
    # contains("Sonnenschein", "schonen") ergibt False
    # contains("Schatz","Kiste") ergibt False