Englisch – unregelmäßige Verben

Die Englische Sprache birgt einige Besonderheiten und machen die Englische Sprache unnötig kompliziert. Eine diese Besonderheiten sind die irregular Verbs. Warum es diese überhaupt gibt entzieht sich meiner Kenntnis. Die Zeitenbildung im Englischen ist ja grundlegend einfach, besteht jedoch aus 12(!) Zeitformen.
Alle werden verwendet, um verschiedene Zeitbezüge und Handlungsarten auszudrücken. Hier sind die wichtigsten Zeitformen und ihre Bildung im Englischen:

  • Simple Present (einfache Gegenwart):
    Bildung: Subjekt + Verb (Infinitiv) + -s/-es (bei der 3. Person Singular) Beispiel:
  • I play tennis. (Ich spiele Tennis.)
  • He plays tennis. (Er spielt Tennis.)
  • Present Continuous (Verlaufsform der Gegenwart):
    Bildung: Subjekt + to be (in der entsprechenden Form) + Verb (Gerundium) Beispiel:
  • I am playing tennis. (Ich spiele gerade Tennis.)
  • She is playing tennis. (Sie spielt gerade Tennis.)
  1. Present Perfect (vollendete Gegenwart):
    Bildung: Subjekt + have/has + Verb (Partizip Perfekt) Beispiel:
  • I have played tennis. (Ich habe Tennis gespielt.)
  • We have seen that movie. (Wir haben den Film gesehen.)
  1. Simple Past (einfache Vergangenheit):
    Bildung: Subjekt + Verb (Past Simple) Beispiel:
  • I played tennis. (Ich spielte Tennis.)
  • She watched a movie. (Sie sah einen Film.)
  1. Past Continuous (Verlaufsform der Vergangenheit):
    Bildung: Subjekt + was/were + Verb (Gerundium) Beispiel:
  • I was playing tennis. (Ich spielte gerade Tennis.)
  • They were studying for the exam. (Sie lernten für die Prüfung.)
  1. Past Perfect (vollendete Vergangenheit):
    Bildung: Subjekt + had + Verb (Partizip Perfekt) Beispiel:
  • I had played tennis. (Ich hatte Tennis gespielt.)
  • She had already left when I arrived. (Sie war schon gegangen, als ich ankam.)
  1. Simple Future (einfache Zukunft):
    Bildung: Subjekt + will + Verb (Infinitiv) Beispiel:
  • I will play tennis. (Ich werde Tennis spielen.)
  • They will arrive tomorrow. (Sie werden morgen ankommen.)
  1. Future Continuous (Verlaufsform der Zukunft):
    Bildung: Subjekt + will be + Verb (Gerundium) Beispiel:
  • I will be playing tennis. (Ich werde gerade Tennis spielen.)
  • She will be studying for the exam. (Sie wird für die Prüfung lernen.)
  1. Future Perfect (vollendete Zukunft):
    Bildung: Subjekt + will have + Verb (Partizip Perfekt) Beispiel:
  • I will have played tennis. (Ich werde Tennis gespielt haben.)
  • They will have finished the project by next week. (Sie werden das Projekt bis nächste Woche abgeschlossen haben.)

Diese neun Zeitformen sind die grundlegenden Zeitformen im Englischen. Es gibt auch weitere Zeitformen wie das Present Perfect Continuous, das Past Perfect Continuous und das Future Perfect Continuous, die komplexere Zeitbezüge ausdrücken.

So eigentlich nicht so schwer. Komisch sind jedoch diese irregular Words, wie zum Beispiel go – die Vergangenheit ist went – die haben ja nicht mal einen Buchstaben gemeinsam. Das was uns hilft ist. das wir sie auswendig lernen. Dazu bauen wir uns nun ein Programm.

Es gibt 283 unregelmäßige Verben. Klinkt viel – ist es auch. Die alle in einem Array in den Source Code zu tippen ist nicht nur mühsam, sondern macht den Code auch etwas unlesbar. Also entscheiden wir uns den die Verben auszulagern. Wir werden dafür eine simple Textdatei verwenden. In diese Textdatei schreiben wir alle Verben, die wir lernen möchten, Zeile für Zeile rein, die einzelnen Zeitformen mit “,” getrennt.

So schaut unsere Datei aus:

be, am/are, was/were, been
begin, begins, began, begun
break, breaks, broke, broken
bring, brings, brought, brought
build, builds, built, built

Diese Datei müssen wir nun irgendwie in unserem Python Programm einlesen. Zum Glück ist dies in Python sehr einfach. Es gibt dazu den open Befehl. Der open-Befehl ist unser Schlüssel zu den Dateien. Er braucht zwei Parameter. Der erste Parameter ist der Dateiname, der zweite der Modus, der angibt was wir mit der Datei machen wollen. Es gibt vier verschiedene Modi

„r“ – Read – Standardwert. Öffnet eine Datei zum Lesen, gibt einen Fehler zurück, wenn die Datei nicht existiert.
„a“ – Append – Öffnet eine Datei zum Anhängen, erstellt die Datei, wenn sie nicht existiert
„w“ – Write – Öffnet eine Datei zum Schreiben, erzeugt die Datei, wenn sie nicht existiert
„x“ – Create – Erzeugt die angegebene Datei, gibt einen Fehler zurück, wenn die Datei bereits existiert.
Um unsere Datei zu öffnen genügt folgender Befehlt
open(‚irregular_verbs.txt‘)
Da “r” der Standardwert ist können wir darauf verzichten diesen anzugeben, jedoch für die Lesbarkeit des Codes ist es immer gut in so einem Fall das “r” anzugeben.
Die Funktion open gibt ein Dateiobjekt zurück, mit dem wir dann in weiterer Folge arbeiten können.
Wenn wir folgende Codezeilen ausführen

f = open('irregular_verbs.txt', 'r')
print(f.read())

geben wir die ganze Datei aus.
Ein kleines Problem haben wir noch. Wenn die Datei nicht vorhanden ist, dann wirft die open-Funktion einen Fehler und unser Programm würde einfach abbrechen. Um dies zu verhindern gibt es in der Bibliothek os die Funktion os.path.exists. Mit dieser Funktion ist es möglich nachzuschauen, ob eine Daet oder Verzeichnis vorhanden ist. exists gibt entweder true (vorhanden) oder false (nicht vorhanden) aus.

Nun geht es aber los. Als erstes bauen wir uns eine Funktion, um die Datei zu laden und in ein Array zu verpacken

def load_irregular_verbs(file_path):
    irregular_verbs = []
    with open(file_path, 'r') as file:
        for line in file:
            verb, present_s, past_s, past_participle = line.strip().split(', ')
            irregular_verbs.append({
                'verb': verb,
                'present_singular': present_s,
                'present_plural': 'are' if present_s == 'am' else present_s,
                'past_singular': past_s,
                'past_plural': 'were' if past_s == 'was' else past_s,
                'past_participle': past_participle
            })
    return irregular_verbs

Schauen wir uns diese Funktion näher an.
Zuerst erzeugen wir eine leere Liste Namens Irreguläre_Verben = []`. In weiterer Folge werden wir diese mit den einzelnen Verben aus der Datei füllen.

Als nächstes öffnen wir die Datei unseres mittels
with open(file_path, ‚r‘) as file:
im Lesemodus (‘r’). Wichtig ist hier die vorangestellte ‘with’ Anweisung. Diese bewirkt das das Dateiobjekt nach Beendigung des eingerückten Codeblock (Suite)ordnungsgemäß geschlossen wird, selbst wenn während der Ausführung eine Ausnahme (Exception) ausgelöst wird.
Als Nächtes haben wir “for line in file:“. Diese Schleife iteriert durch jede Zeile der geöffneten Datei. Die Variable line enthält den Inhalt jeder Zeile.

verb, present_s, past_s, past_participle = line.strip().split(', ') nimmt jede Zeile in der Datei, entfernt alle vorangestellten und nachgestellten Leerzeichen (strip()) und teilt sie dann in vier Teile auf, die durch Komma und Leerzeichen getrennt sind (‚, ‚).

irregular_verbs.append({ … })erstellt unser Wörterbuch mit dem Verb und seinen verschiedenen Formen (Singular/Plural für Präsens und Präteritum sowie Partizip der Vergangenheit) und fügt es an die Listeirregular_verbs` mittels append an.

Zum Schluss geben wir alle eingelesenen Verben zurück.

Als nächste Funktion bauen wir noch unseren Trainer

def irregular_verbs_trainer(irregular_verbs):
    score = 0
    num_Frage = 5

    
    for _ in range(num_Frage):
        random_verb = choose_random_verb(irregular_verbs)

        verb = random_verb['verb']
        

        tense = random.choice(list(random_verb.keys()))
        correct_form = random_verb[tense]

        user_input = input(f"What is the {tense.replace('_',' ')} form of '{verb}'? ")

        if user_input == correct_form:
            print("Correct!")
            score +=1
        else:
            print(f"Wrong. The correct answer is '{correct_form}'.")

        
        print()

    print(f"Quiz abgeschlossen! Du hast {score}/{num_Frage} richtig! Gut gemacht!")

Der ist eigentlich ganz gleich wie beim Bruchrechnen, nur das wir eben aus der Liste ein Verb aussuchen.

Den ganzen Source Code als Visual Studio Projekt kannst Du unter gpiwonka/IrregularVerbs: Ein kleiner Trainer zum erlernen der englischen Irregular Verbs (github.com) herunterladen.
Viel Spaß!