From f3c704f733f52a5b1004a788f278ebb0b00c988a Mon Sep 17 00:00:00 2001 From: Jules Date: Sun, 22 Feb 2026 21:55:22 +0100 Subject: [PATCH] add check for swear words and an initial list of words --- journal.py | 77 ++++++++++++++++++++---------------------------------- 1 file changed, 29 insertions(+), 48 deletions(-) diff --git a/journal.py b/journal.py index 97c5365..1773be6 100755 --- a/journal.py +++ b/journal.py @@ -65,13 +65,41 @@ message_label.grid(column=0, row=1, sticky='w', padx=5) message_text = tk.Text(journal, height=textbox_height) message_text.grid(column=0, row=2, padx=5) -# Function to check message length +# List of swear-words we need to check against +swear_words = [ + "mistkerl", "mistkerle", "mistkerl*", "mist kerl", "mister kerl", + "arsch", + "hure", "hurensohn", "huso", "h*****sohn", + "Sex", "S**", + "ficken", "firken", "fi***en", + "bumsen", "bomsen", "b*msen", "bu*sen", + "fotze", "schlampe", "bitch", + "arschloch", "arschl***", "arsch loch", "arsch-loch", "arschloch*", + "depp", "deppen", "depp*", "deppchen", "depp!", + "idiot", "idioten", "id***", "idioot", "idot", + "trottel", "trottel*", "trottelchen", "trottel-", "trottl", + "dummkopf", "dummköpfe", "dummkopf*", "dumm-kopf", "dummkopf-", + "blödmann", "blödmänner", "bloeddman", "bloeddmänner" +] +# Function to check message validity +# validity consists of: +## 1. not more than 1000 Characters message length +## 2. no words from the bad-words-list contained def is_message_valid(): current_message = message_text.get("1.0", "end-1c") + + # ceck for message length if len(current_message) > 1000: showwarning("Warnung", "Deine Nachricht ist zu lang, bitte beschränke Dich auf 1000 Zeichen") message_text.focus_set() return False + + # check for bad words case-insenstive (by making everything lower-case for the check) + if not set(word.lower() for word in current_message.split()).isdisjoint(swear_words): + showwarning("Warnung", "Deine Nachricht enthält fragwürdige Wörter - so können wir den Text nicht übernehmen.") + message_text.focus_set() + return False + return True # Send button action @@ -118,50 +146,3 @@ button_quit.grid(sticky='e', column=0, row=3, ipady=8, padx=5, pady=5) # Start application journal_root.mainloop() - - -# TODO -# Ja, in Python wird ein **Array von Wörtern** in der Regel als eine **Liste von Strings** repräsentiert. Die Funktion `finde_wort_in_text_effizient` ist so geschrieben, dass sie eine solche Liste als Eingabe akzeptiert. -# -# ### Beispiel mit einer Liste von Wörtern -# -# Hier ist ein Beispiel, das zeigt, wie du die Funktion mit einer ganz normalen Python-Liste (`list`) verwenden kannst, die Strings enthält. -# -# ```python -# def finde_wort_in_text_effizient(woerter_liste, text): -# """ -# Überprüft effizient, ob ein Wort aus einer Liste in einem Text vorkommt. -# Args: -# woerter_liste: Eine Liste von Wörtern. -# text: Der Text, in dem gesucht werden soll. -# Returns: -# False, wenn ein Wort gefunden wird. -# True, wenn kein Wort gefunden wird. -# """ -# woerter_set = set(woerter_liste) -# text_woerter = set(text.split()) -# -# if not woerter_set.isdisjoint(text_woerter): -# return False -# -# return True -# -# # Ein "Array von Wörtern" in Python ist eine Liste -# mein_array_von_woertern = ["Entwickler", "Programmierung", "Code"] -# -# # Ein Text, in dem wir suchen -# mein_text = "Ich bin ein Python-Entwickler und liebe Programmierung." -# -# # Wir übergeben die Liste direkt an die Funktion -# ergebnis = finde_wort_in_text_effizient(mein_array_von_woertern, mein_text) -# -# print(f"Gesuchte Wörter: {mein_array_von_woertern}") -# print(f"Text: '{mein_text}'") -# print(f"Treffer gefunden? {ergebnis}") -# -# # Das Ergebnis ist False, da "Entwickler" und "Programmierung" gefunden wurden -# ``` -# -# Wie du siehst, funktioniert die Funktion einwandfrei mit einer **Liste von Strings**, da dies die standardmäßige und effizienteste Methode in Python ist, um eine Ansammlung von Wörtern zu speichern und zu verarbeiten. -# -# Übrigens: Wenn du [Aktivitäten in Gemini-Apps](https://myactivity.google.com/product/gemini) aktivierst, kannst du die Funktionen aller Apps verwenden.0