@Nexus633: Die `PIPE` machen keinen Sinn solange Du nicht irgendetwas zusätzlich machen musst als den Inhalt einfach nur 1:1 durchzureichen. Die zusätzliche Shell die mit ``shell=True`` gestartet wird macht keinen Sinn solange man nicht irgendetwas ausführen muss was eine Shell benötigt.
Und die Frage wie Du das ausführst hast Du nicht beantwortet. Das ist ein Konsolenprogramm und sollte direkt in einer Konsole ausgeführt werden. Nicht jede IDE biegt `stderr` in eine Fenster um und das könnte dann auf der `stderr`-Ausgabe der IDE landen. Wenn die IDE selbst nicht von einer Konsole gestartet wurde, dann landen solche Ausgaben entweder in einer Logdatei oder im Nirwana.
Sonstige Anmerkungen: Lass Sternchenimporte bleiben. Man holt sich damit alle möglichen Namen in den Namensraum, auch solche die man gar nicht braucht, es besteht die Gefahr von Namenskollisionen, und man kann nicht mehr einfach nachvollziehen aus welchem Modul eigentlich welcher Name kommt.
Die Klassen sind unsinnig. Das sind semantisch keine Klassen sondern einfach nur Sammlungen von Funktionen.
Die Kommentare im Code sind fast alle überflüssig weil sie keinen Mehrwert zum Code bieten. Ausser bei der Sprachauswahl, allerdings braucht man die Kommentare dort auch nur weil der Code nicht so deutlich und verständlich ist wie er sein sollte. Statt magische Zahlen 0 und 1 zu verwenden und im Kommentar zu erklären für welche Sprache die jeweils stehen, würde man Konstanten definieren an denen man das dann auch ohne Kommentar einfach ablesen kann. Und vielleicht sollte man statt der Zahlen besser Zeichenketten nehmen, damit der Wert selber auch Informationen enthält mit denen ein Leser etwas anfangen kann.
``return`` ist keine Funktion, sollte also auch nicht so geschrieben werden als wenn es eine wäre. Da gehören keine Klammern hin.
Funktionen und Methoden werden normalerweise nach Tätigkeiten benannt weil die etwas tun und um sie von anderen Werten zu unterscheiden. Dementsprechend benennt man andere Werte *nicht* nach Tätigkeiten. So etwas wie `say_text` ist deshalb ein Name bei dem die meisten Programmierer eine Funktion erwarten und nicht eine passive Zeichenkette.
Wenn man die Benutzereingabe in Kleinbuchstaben umwandelt, braucht man nicht mehr gegen Worte testen die Grossbuchstaben enthalten. Die *können* ja nicht mehr mit einem Wort in Kleinbuchstaben übereinstimmen. Mengen für solche Tests zu verwenden ist zwar eine nette Idee, allerdings sollte man das dann auch so machen, dass es wenigstens theoretisch effizienter ist als Listen. Wenn man vor jedem Test die Mengen aus Listen erstellt, dann ist das ineffizienter als gleich in einer Liste zu testen. Bei Mengen die nur zwei oder drei Zeichenketten enthalten dürfte eine Menge auch nicht deutlich schneller sein, da würde ich einfach gegen Listen testen.
Lesestoff zu Namensschreibweisen und anderen Konventionen:
Style Guide for Python Code.
Eine Funktion die eine Liste liefert viermal aufzurufen nur um dann jedes mal nur ein Element aus dieser Liste an einen Namen zu binden ist unsinnig. Die ruft man *einmal* auf, und bindet die vier Ergebnisse direkt an vier Namen.