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(
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",
"",
"",
"",
"",
"",

View File

@@ -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)