i

Beispiel - Drei Chinesen

Das Lied "Drei Chinesen mit dem Kontrabass ..."

Kennst du das Lied "Drei Chinesen mit dem Kontrabass ..."?

Erste Strophe des Liedes mit Noten[1]

Bei diesem Lied werden die weiteren Strophen aus der ersten Strophe gebildet, indem alle vorkommenden Vokale durch einen einzigen (z.B. ein "a") ersetzt werden.

Drei Chinesen mit dem Kontrabass
saßen auf der Straße und erzählten sich was.
Da kam die Polizei, fragt ‚Was ist denn das?‘
Drei Chinesen mit dem Kontrabass.

Dra Chanasan mat dam Kantrabass
saßan af dar Straßa and arzahltan sach was.
Da kam da Palaza, fragt ‚Was ast dann das?‘
Dra Chanasan mat dam Kantrabass

...

Bei der Bestimmung der weiteren Strophen kommt eine typische Textverarbeitungsoperation ins Spiel: Ersetze in einem gegebenen Text ein bestimmtes Zeichen jeweils durch ein anderes Zeichen.

Ziel im Folgenden ist es, diesen Vorgang mit einem geeigneten Programm zu automatisieren.

Darstellung als Zeichenkette

Zunächst wird der Liedtext mit Hilfe von Daten von Typ Zeichenkette dargestellt. In Python lässt sich das auf unterschiedliche Weisen realisieren.

Einzeilige Zeichenkette können mit Hochkommata '...' oder Anführungszeichen "..." markiert werden. Bei mehrzeiligen Zeichenketten benutzt man jeweils drei Hochkommata '''...''' oder drei Anführungszeichen """...""". Probiere das selbst mit weiteren Beispielen aus.

Zugriff auf die Zeichen

Die einzelnen Zeichen einer Zeichenkette sind von 0 an durchnummeriert. Mit Hilfe der jeweiligen Nummer - die man auch als Index bezeichnet - kann man auf aktuelle Zeichen Zugreifen. Beachte, dass die mehrzeilige Zeichenkette im folgenden Demoprogramm hier mit einem Zeilenumbruch beginnt.

Wenn man beim Zugriff den Indexbereich verlässt, gibt es eine Fehlermeldung.

Eine Zeichenkette durchlaufen

Eine Zeichenkette kann man durchlaufen, indem man mit einer while-Schleife der Reihe nach ünber den auf jedes Zeichen zugreift - von 0 an bis zum letzten Index, der kleiner als die Länge der Zeichenkette ist.

Denselben Effekt kann man mit einer for-Schleife erzielen, wobei der range-Operator hier den gewünschten Indexbereich erzeugt.

Noch kürzer geht es mit einer for-Schleife direkt über die Zeichen der Zeichenkette.

Probiere das jeweils aus.

Eine vordefinierte Funktion zur Längenbestimmung bei Texten

Zur Längenbestimmung von Zeichenketten gibt es in Python eine vordefinierte Funktion len. Das folgende Python-Programm zeigt seine Verwendung:

Ergänze selbst entsprechende Testaufrufe.

Eine selbstdefinierte Funktion zur Längenbestimmung bei Texten

Man kann auch selbst eine Funktion zur Bestimmung der Länge einer Zeichenkette definieren:

Alternativ hierzu kannst man Funktionsaufrufe auch direkt im Ausführfenster testen.

def laenge(text):
    zaehler = 0
    for z in text:
        zaehler = zaehler + 1
    return zaehler

Gib diesen Quelltext in ein neues Programmfenster ein, speichere ihn unter einem geeigneten Namen in einer Datei ab und führe ihn einmal aus. Aber Achtung, im Ausführfenster gibt es zunächst keine Ergebnisse. Diese erhält man erst, wenn die neue Funktion aufgerufen wird. Probiere das selbst aus, z.B. so:

>>> laenge('Abrakadara')
10
>>> laenge('''Drei Chinesen mit dem Kontrabass
sassen auf der Strasse und erzaehlten sich was.
Da kam die Polizei, fragt ‚Was ist denn das?‘
Drei Chinesen mit dem Kontrabass.''')
160
>>> laenge('''
Drei Chinesen mit dem Kontrabass
sassen auf der Strasse und erzaehlten sich was.
Da kam die Polizei, fragt ‚Was ist denn das?‘
Drei Chinesen mit dem Kontrabass.
''')
162

Eine Funktion zur Bestimmung der Zeichenhäufigkeit in Texten

Wie oft kommt der Buchstabe "i" im Text "Drei Chinesen ..." vor? Mit Hilfe einer selbstdefinierten Funktion soll das ermittelt werden.

Bevor man eine Funktionsdefinition erstellt, sollte man sich das Verhalten der Funktion klarmachen - z.B. mit einem Black-Box-Diagramm.

Black-Box

Die Funktion soll 2 übergebene Daten - das Zeichen, das gezählt werden soll, sowie der vorgegebene Text - verarbeiten und als Ergebnis die zu bestimmende Anzahl zurückgeben.

Aufgabe 1

(a) Ergänze zunächst die Funktionsdefinition. Orientiere dich an der Definition der Funktion laenge.

# Funktionsdefinition

def anzahl(zeichen, text):
    ...
    return ...

(b) Teste anschließend die Funktion anzahl. Du kannst das mit Ausgaben von Testaufrufen im Programm machen. Du kannst das aber auch im Ausführfenster machen, sofern du vorher die Funktionsdefinition einmal ausgeführt hast - z.B. so:

>>> anzahl('A', 'ABRAKADABRA')
5
>>> lied = """
Drei Chinesen mit dem Kontrabass
sassen auf der Strasse und erzaehlten sich was.
Da kam die Polizei, fragt ‚Was ist denn das?‘
Drei Chinesen mit dem Kontrabass.
"""
>>> anzahl('i', lied)
11

Eine Funktion zur Ersetzung von Zeichen in Texten

Jetzt soll die eingangs erläuterte Zeichenersetzung in Texten mit einer Funktion realisiert werden.

Das folgende Programm zeigt eine Möglichkeit, wie man bei der Textersetzung vorgehen könnte.

Aufgabe 2

(a) Teste das Programm. Analysiere den Quelltext und beschreibe möglichst genau, wie der neue Text erzeugt wird.

(b) Entwickle eine Funktion zur Textersetzung. Beginne mit einem Black-Box-Diagramm. Entwickle anschließend eine Funktionsdefinition. Du kannst Teile des gezeigten Programm hierfür übernehmen. Teste anschließend die entwickelte Funktion.

Quellen

Suche

v
2.7.2.10.1
inf-schule.de/programmierung/python/konzepte/zeichenketten/beispiel_dreichinesen
inf-schule.de/2.7.2.10.1

Rückmeldung geben