diff --git a/app/app.py b/app/app.py index 0ac0b24..b02c688 100644 --- a/app/app.py +++ b/app/app.py @@ -8,7 +8,7 @@ standard_output = ('#### Um den HILFE-Text zu einzelnen Funktionen aufzurufen bi st.set_page_config( page_title="tebarius Mysteryhelfer (web)", - page_icon="./favicon.ico", # Alternativ: "favicon.ico" (Pfad als String) + page_icon="./favicon.ico", layout="wide" ) @@ -34,19 +34,43 @@ def auswahl_verarbeiten(): st.session_state.output_text = tools.buchstabenwortwert(text) st.session_state.map_data = None elif auswahl == "Buchstabenwert->Text": - st.session_state.output_text = tools.buchstabenwertzutext(text) + st.session_state.output_text = tools.buchstabenwert_zu_text(text) st.session_state.map_data = None elif auswahl == "Zeichenzählen": - st.session_state.output_text = tools.zeichenzaehlen(text) + st.session_state.output_text = tools.zeichenanzahl(text) st.session_state.map_data = None elif auswahl == "Text rückwärts": - st.session_state.output_text = tools.zeichenkette_rueckwaerts(text) + st.session_state.output_text = tools.zeichenkette_reverse(text) st.session_state.map_data = None elif auswahl == "Quersumme(n)": st.session_state.output_text = tools.quersummen(text) st.session_state.map_data = None elif auswahl == "Einschlüsse zählen": - st.session_state.output_text = tools.einschluesse(text) + st.session_state.output_text = tools.einschluss_count(text) + st.session_state.map_data = None + elif auswahl == "ABC -> Morse": + st.session_state.output_text = tools.abc_to_morse(text) + st.session_state.map_data = None + elif auswahl == "Morse -> ABC": + st.session_state.output_text = tools.morse_to_abc(text) + st.session_state.map_data = None + elif auswahl == "ROT5": + st.session_state.output_text = tools.rot5(text) + st.session_state.map_data = None + elif auswahl == "ROT13": + st.session_state.output_text = tools.rot13(text) + st.session_state.map_data = None + elif auswahl == "ROT18": + st.session_state.output_text = tools.rot18(text) + st.session_state.map_data = None + elif auswahl == "ROT47": + st.session_state.output_text = tools.rot47(text) + st.session_state.map_data = None + elif auswahl == "REPLACE": + st.session_state.output_text = tools.REPLACE(text) + st.session_state.map_data = None + elif auswahl == "REPLACE": + st.session_state.output_text = tools.REPLACE(text) st.session_state.map_data = None elif auswahl == "REPLACE": st.session_state.output_text = tools.REPLACE(text) @@ -103,6 +127,14 @@ option = st.sidebar.radio("hidden_label", "Text rückwärts", "Quersumme(n)", "Einschlüsse zählen", + "ABC -> Morse", + "Morse -> ABC", + "ROT5", + "ROT13", + "ROT18", + "ROT47", + "", + "", "", "", "", diff --git a/app/tools.py b/app/tools.py index 4efb395..6e155c1 100644 --- a/app/tools.py +++ b/app/tools.py @@ -119,7 +119,7 @@ def buchstabenwortwert(eingabetext): ausgabe += str(wortprodukt) + "|\n" return ausgabe -def buchstabenwertzutext(eingabetext): +def buchstabenwert_zu_text(eingabetext): seperator = ("|,", "_", ".", "-", "/", ";", ",") bw = {1: 'a', 2: 'b', 3: 'c', 4: 'd', 5: 'e', 6: 'f', 7: 'g', 8: 'h', 9: 'i', 10: 'j', 11: 'k', 12: 'l', 13: 'm', 14: 'n', 15: 'o', 16: 'p', 17: 'q', 18: 'r', 19: 's', 20: 't', 21: 'u', @@ -172,7 +172,7 @@ def buchstabenwertzutext(eingabetext): ausgabe_text += atxt return ausgabe_text -def zeichenkette_rueckwaerts(eingabetext): +def zeichenkette_reverse(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": return ("### Zeichenkette rückwärts\n" @@ -180,7 +180,7 @@ def zeichenkette_rueckwaerts(eingabetext): else: return eingabetext[::-1] -def zeichenzaehlen(eingabetext): +def zeichenanzahl(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": return ("### Zeichenzählen\n" @@ -257,7 +257,7 @@ def quersummen(eingabetext): ausgabetext += iqtxt[:-1] return ausgabetext -def einschluesse(eingabetext): +def einschluss_count(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": return ("### Einschlüsse zählen\n" @@ -298,8 +298,8 @@ def einschluesse(eingabetext): for z in wortsummenliste_ohne: ausgabetext += f"{z} " return ausgabetext -''' -def morsetoabc(): + +def morse_to_abc(eingabetext): alphabet = {".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E", "..-.": "F", "--.": "G", "....": "H", "..": "I", ".---": "J", "-.-": "K", ".-..": "L", "--": "M", "-.": "N", "---": "O", ".--.": "P", "--.-": "Q", ".-.": "R", "...": "S", "-": "T", @@ -311,16 +311,12 @@ def morsetoabc(): "-..-.": "/", ".-.-.-": ".", "-....-": "-", "--..--": ",", ".-.-.": "+", "-.--.-": ")", "-.--.": "(", ".----.": "'", "...--..": "ß" } - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Morsecode zu Text] -Die Eingabe des Morsecodes hat wie folgt zu erfolgen: -- für lang und . für kurz, zwischen den Buchstaben ein -Leerzeichen und als Worttrennung ein / wobei davor und -danach ein Leerzeichen steht. -Für unbekannte Morsecodes erscheint in der Ausgabe ein #.""" + "\n\n") + return ("### Morsecode zu Text\n" + "Die Eingabe des Morsecodes hat wie folgt zu erfolgen: - für lang und . für kurz, zwischen den " + "Buchstaben ein Leerzeichen und als Worttrennung ein / wobei davor und danach ein Leerzeichen steht. " + "Für unbekannte Morsecodes erscheint in der Ausgabe ein #.") else: morse = eingabetext.split() atxt = "" @@ -331,10 +327,9 @@ Für unbekannte Morsecodes erscheint in der Ausgabe ein #.""" + "\n\n") atxt = atxt + "#" else: atxt = atxt + alphabet[sign] - Ausgabe.insert(1.0, atxt + "\n") + return atxt - -def abctomorse(): +def abc_to_morse(eingabetext): alphabet = {".-": "A", "-...": "B", "-.-.": "C", "-..": "D", ".": "E", "..-.": "F", "--.": "G", "....": "H", "..": "I", ".---": "J", "-.-": "K", ".-..": "L", "--": "M", "-.": "N", "---": "O", ".--.": "P", "--.-": "Q", ".-.": "R", "...": "S", "-": "T", @@ -347,14 +342,11 @@ def abctomorse(): ".----.": "'", "...--..": "SS" } umkehr_alpha = {v: k for k, v in alphabet.items()} # Alphabet mit getauschten key und values generieren - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Text zu Morsecode] -Eingabetext wird als Morsecode ausgegeben. -Nicht kodierbare Zeichen erscheinen unverändert -in der Ausgabe.""" + "\n\n") + return ("### Text zu Morsecode\n" + "Eingabetext wird als Morsecode ausgegeben. Nicht kodierbare Zeichen erscheinen unverändert " + "in der Ausgabe.") else: atxt = "" for b in eingabetext: @@ -364,22 +356,17 @@ in der Ausgabe.""" + "\n\n") atxt = atxt + b + " " else: atxt = atxt + umkehr_alpha[b.upper()] + " " - Ausgabe.insert(1.0, atxt + "\n") + return atxt - -def rot5(): +def rot5(eingabetext): ro5 = {"0": "5", "1": "6", "2": "7", "3": "8", "4": "9", "5": "0", "6": "1", "7": "2", "8": "3", "9": "4"} - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [ROT 5] -ROT 5 bezeichnet eine Verschiebechiffrierung, bei -welcher die Ziffern 0-9 um je 5 Stellen verschoben -werden. Aus 0 wird 5, aus 1 wird 6, aus 7 wird 2,usw. -Kodieren und Dekodieren geschieht hier mit ein und -derselben Funktion, alle Zeichen die keine Ziffern -sind werden unverändert wiedergegeben.""" + "\n\n") + return ("### ROT 5\n" + "ROT 5 bezeichnet eine Verschiebechiffrierung, bei welcher die Ziffern 0-9 um je 5 Stellen " + "verschoben werden. Aus 0 wird 5, aus 1 wird 6, aus 7 wird 2,usw. Kodieren und Dekodieren " + "geschieht hier mit ein und derselben Funktion, alle Zeichen die keine Ziffern sind werden " + "unverändert wiedergegeben.") else: atxt = "" for z in eingabetext: @@ -387,27 +374,21 @@ sind werden unverändert wiedergegeben.""" + "\n\n") atxt = atxt + z else: atxt = atxt + ro5[z] - Ausgabe.insert(1.0, atxt + "\n") + return atxt - -def rot13(): +def rot13(eingabetext): ro13 = {'A': 'N', 'B': 'O', 'C': 'P', 'D': 'Q', 'E': 'R', 'F': 'S', 'G': 'T', 'H': 'U', 'I': 'V', 'J': 'W', 'K': 'X', 'L': 'Y', 'M': 'Z', 'N': 'A', 'O': 'B', 'P': 'C', 'Q': 'D', 'R': 'E', 'S': 'F', 'T': 'G', 'U': 'H', 'V': 'I', 'W': 'J', 'X': 'K', 'Y': 'L', 'Z': 'M'} - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [ROT 13] -ROT 13 bezeichnet eine Verschiebechiffrierung, bei -welcher die 26 Buchstaben (A-Z) um genau 13 Stellen -verschoben werden. Da dies genau die Hälfte des Alphabets -ist, wird z.B. aus einem A ein N und aus einem N ein A -und somit wird über die selbe Funktion sowohl kodiert als -auch dekodiert. Die Klein- und Großschreibung bleibt -erhalten und alle Zeichen die keine Buchstaben sind -werden unverändert wiedergegeben.""" + "\n\n") + return ("### ROT 13\n" + "ROT 13 bezeichnet eine Verschiebechiffrierung, bei welcher die 26 Buchstaben (A-Z) um genau " + "13 Stellen verschoben werden. Da dies genau die Hälfte des Alphabets ist, wird z.B. aus einem " + "A ein N und aus einem N ein A und somit wird über die selbe Funktion sowohl kodiert als auch " + "dekodiert. Die Klein- und Großschreibung bleibt erhalten und alle Zeichen die keine Buchstaben " + "sind werden unverändert wiedergegeben.") else: atxt = "" for z in eingabetext: @@ -418,26 +399,21 @@ werden unverändert wiedergegeben.""" + "\n\n") atxt = atxt + a.lower() else: atxt = atxt + ro13[z.upper()] - Ausgabe.insert(1.0, atxt + "\n") + return atxt - -def rot18(): +def rot18(eingabetext): ro18 = {'A': 'N', 'B': 'O', 'C': 'P', 'D': 'Q', 'E': 'R', 'F': 'S', 'G': 'T', 'H': 'U', 'I': 'V', 'J': 'W', 'K': 'X', 'L': 'Y', 'M': 'Z', 'N': 'A', 'O': 'B', 'P': 'C', 'Q': 'D', 'R': 'E', 'S': 'F', 'T': 'G', 'U': 'H', 'V': 'I', 'W': 'J', 'X': 'K', 'Y': 'L', 'Z': 'M', "0": "5", "1": "6", "2": "7", "3": "8", "4": "9", "5": "0", "6": "1", "7": "2", "8": "3", "9": "4"} - - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [ROT 18] -ROT 18 ist eigentlich nix anderes als, daß hier ROT 5 -mit ROT 13 kombiniert wird. Die Buchstaben A-Z werden -um 13 Stellen verschoben und die Ziffern 0-9 um 5 Stellen. -Alle sonstigen Zeichen bleiben unverändert und die Kleine- -oder Großschreibung bleibt auch erhalten, und auch hier -kodiert/dekodiert ein und dieselbe Funktion.""" + "\n\n") + return ("### ROT 18\n" + "ROT 18 ist eigentlich nix anderes als, daß hier ROT 5 mit ROT 13 kombiniert wird. Die Buchstaben " + "A-Z werden um 13 Stellen verschoben und die Ziffern 0-9 um 5 Stellen. Alle sonstigen Zeichen " + "bleiben unverändert und die Klein- oder Großschreibung bleibt auch erhalten, und auch hier " + "kodiert/dekodiert ein und dieselbe Funktion.") else: atxt = "" for z in eingabetext: @@ -448,24 +424,17 @@ kodiert/dekodiert ein und dieselbe Funktion.""" + "\n\n") atxt = atxt + a.lower() else: atxt = atxt + ro18[z.upper()] - Ausgabe.insert(1.0, atxt + "\n") + return atxt - -def rot47(): - - eingabetext = Eingabe.get(1.0, END) +def rot47(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [ROT 47] -Bei ROT47 geschieht eigentlich nix anderes als -bei ROT5 oder ROT13 nur das hier die druckbaren -ASCII-Zeichen mit den Werten 33-126(dezimal) zur -Auswahl stehen, also nahezu alle Zeichen die auf -eine Standardtastatur aufgedruckt sind. -Das Ergebnis ist aber deutlich unlesbarer als -z.B. bei ROT13. Alle weiteren Zeichen (z.B. ÄÖÜß) -werden unverändert wiedergegeben und auch hier -kodiert/dekodiert ein und dieselbe Funktion.""" + "\n\n") + return ("### ROT 47\n" + "Bei ROT47 geschieht eigentlich nix anderes als bei ROT5 oder ROT13 nur das hier die druckbaren " + "ASCII-Zeichen mit den Werten 33-126(dezimal) zur Auswahl stehen, also nahezu alle Zeichen die auf " + "eine Standardtastatur aufgedruckt sind. Das Ergebnis ist aber deutlich unlesbarer als z.B. bei " + "ROT13. Alle weiteren Zeichen (z.B. ÄÖÜß) werden unverändert wiedergegeben und auch hier " + "kodiert/dekodiert ein und dieselbe Funktion.") else: x = [] for i in eingabetext: @@ -474,9 +443,9 @@ kodiert/dekodiert ein und dieselbe Funktion.""" + "\n\n") x.append(chr(33 + ((j + 14) % 94))) else: x.append(i) - Ausgabe.insert(1.0, ''.join(x) + "\n") - + return ''.join(x) +''' def asciitodez(): eingabetext = Eingabe.get(1.0, END)