morse<->abc, rot5,13,18,47

This commit is contained in:
2025-07-22 20:13:19 +02:00
parent 9fc0620e04
commit f7123ed094
2 changed files with 84 additions and 83 deletions

View File

@@ -8,7 +8,7 @@ standard_output = ('#### Um den HILFE-Text zu einzelnen Funktionen aufzurufen bi
st.set_page_config( st.set_page_config(
page_title="tebarius Mysteryhelfer (web)", page_title="tebarius Mysteryhelfer (web)",
page_icon="./favicon.ico", # Alternativ: "favicon.ico" (Pfad als String) page_icon="./favicon.ico",
layout="wide" layout="wide"
) )
@@ -34,19 +34,43 @@ def auswahl_verarbeiten():
st.session_state.output_text = tools.buchstabenwortwert(text) st.session_state.output_text = tools.buchstabenwortwert(text)
st.session_state.map_data = None st.session_state.map_data = None
elif auswahl == "Buchstabenwert->Text": 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 st.session_state.map_data = None
elif auswahl == "Zeichenzählen": 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 st.session_state.map_data = None
elif auswahl == "Text rückwärts": 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 st.session_state.map_data = None
elif auswahl == "Quersumme(n)": elif auswahl == "Quersumme(n)":
st.session_state.output_text = tools.quersummen(text) st.session_state.output_text = tools.quersummen(text)
st.session_state.map_data = None st.session_state.map_data = None
elif auswahl == "Einschlüsse zählen": 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 st.session_state.map_data = None
elif auswahl == "REPLACE": elif auswahl == "REPLACE":
st.session_state.output_text = tools.REPLACE(text) st.session_state.output_text = tools.REPLACE(text)
@@ -103,6 +127,14 @@ option = st.sidebar.radio("hidden_label",
"Text rückwärts", "Text rückwärts",
"Quersumme(n)", "Quersumme(n)",
"Einschlüsse zählen", "Einschlüsse zählen",
"ABC -> Morse",
"Morse -> ABC",
"ROT5",
"ROT13",
"ROT18",
"ROT47",
"",
"",
"", "",
"", "",
"", "",

View File

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