mehr farbe in ausgabe und fix für schlüsselwortfeld

This commit is contained in:
2025-07-29 19:15:33 +02:00
parent 45e16dcbe7
commit e3ed8c7428
3 changed files with 175 additions and 169 deletions

View File

@@ -378,22 +378,23 @@ option = st.sidebar.radio("hidden_label",
# Optionales einzeiliges Eingabefeld nur für bestimmte Funktionen
additional_parameter = None
if option in ["Vigenere-Chiffre", "Wolseley-Chiffre", "Autokey-Chiffre", "Polybios kodieren", "Polybios dekodieren"]:
if ("Vigenere-Chiffre" or "Wolseley-Chiffre" or "Autokey-Chiffre" or "Polybios kodieren" or
"Polybios dekodieren" in option):
additional_parameter = st.text_input(
"Schlüsselwort:",
placeholder="Schlüsselwort hier eingeben"
)
elif option in ["Mono.-Substitution"]:
elif "Mono.-Substitution" in option:
additional_parameter = st.text_input(
"Schlüsselwort/Schlüsselalphabet:",
placeholder="Schlüsselwort/Schlüsselalphabet hier eingeben"
)
elif option in ["Jägerzaun kodieren", "Jägerzaun dekodieren"]:
elif "Jägerzaun kodieren" or "Jägerzaun dekodieren" in option:
additional_parameter = st.text_input(
"Schlüsselfeld:",
placeholder="Schlüsselzahl hier eingeben"
)
elif option in ["ADFGX kodieren", "ADFGX dekodieren", "ADFGVX kodieren", "ADFGVX dekodieren"]:
elif "ADFGX kodieren" or "ADFGX dekodieren" or "ADFGVX kodieren" or "ADFGVX dekodieren" in option:
additional_parameter = st.text_input(
"Passwörter:",
placeholder="PasswortEins, PasswortZwei"

View File

@@ -237,7 +237,7 @@ def remorse_germandic(eingabetext):
ualphabet["...--.."] = "ß"
eingabetext = eingabetext.rstrip()
wbfile = open("./data/german.dic", "r", encoding="iso-8859-15")
ausgabetext = "_der eingegebene Morsecode kann für folgendes stehen:_ \n"
ausgabetext = ":blue[der eingegebene Morsecode kann für folgendes stehen:] \n"
if eingabetext in ualphabet:
ausgabetext += ualphabet[eingabetext] + " \n"
for zeile in wbfile:
@@ -264,7 +264,7 @@ def t9_germandic(eingabetext):
'-': '1', ',': '1', '+': '0', ')': '1', '(': '1', 'SS': '7'}
eingabetext = eingabetext.rstrip()
wbfile = open("./data/german.dic", "r", encoding="iso-8859-15")
ausgabetext = "_der eingegebene T9-Code kann für folgendes stehen:_ \n"
ausgabetext = ":blue[der eingegebene T9-Code kann für folgendes stehen:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
mzeile = ""

View File

@@ -32,7 +32,7 @@ def cesar_all(eingabetext):
atxt = atxt + abc[j + r - 26]
else:
atxt = atxt + abc[j + r]
ausgabe += f"__{r:02}:__ {atxt} \n"
ausgabe += f":blue[{r:02}:] {atxt} \n"
return ausgabe
def buchstabenwortwert(eingabetext):
@@ -85,21 +85,21 @@ def buchstabenwortwert(eingabetext):
ausgabe += atxt + " \n"
ausgabe += '| | |\n'
ausgabe += '|----|----|\n'
ausgabe += "|_Buchstabenwerte:_|"
ausgabe += "|:blue[Buchstabenwerte:]|"
ausgabe += az[0:-1] + "|\n"
ausgabe += "|_Buchstabenwortwerte:_|"
ausgabe += "|:blue[Buchstabenwortwerte:]|"
ausgabe += eworttxt[0:-1] + "|\n"
ausgabe += "|_Summe aller Buchstabenwerte:_|"
ausgabe += "|:blue[Summe aller Buchstabenwerte:]|"
ausgabe += str(wortsumme) + "|\n"
ausgabe += "|_Quersumme der Summe aller Buchstabenwerte / iterierte Quersumme:_|"
ausgabe += "|:blue[Quersumme der Summe aller Buchstabenwerte / iterierte Quersumme:]|"
ausgabe += str(helper.q_sum(wortsumme)) + " / " + str(helper.iq_sum(wortsumme)) + "|\n"
ausgabe += "|_Buchstabenanzahl pro Wort:_|"
ausgabe += "|:blue[Buchstabenanzahl pro Wort:]|"
ausgabe += banzwtxt[0:-1] + "|\n"
ausgabe += "|_Gesamtanzahl aller Buchstaben:_|"
ausgabe += "|:blue[Gesamtanzahl aller Buchstaben:]|"
ausgabe += str(banzahla) + "|\n"
ausgabe += "|_Wortprodukte(0 wenn kein Buchstabe gefunden):_|"
ausgabe += "|:blue[Wortprodukte(0 wenn kein Buchstabe gefunden):]|"
ausgabe += ewortptxt[0:-1] + "|\n"
ausgabe += "|_Buchstabenwert-Produkt:(Nullen werden ignoriert):_|"
ausgabe += "|:blue[Buchstabenwert-Produkt:(Nullen werden ignoriert):]|"
ausgabe += str(wortprodukt) + "|\n"
return ausgabe
@@ -123,10 +123,10 @@ def buchstabenwert_zu_text(eingabetext):
try:
ausz = int(eingabetext)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!]"
else:
if ausz not in bw:
return "Die eingegebene Zahl ist kein gültiger Buchstabenwert!\n"
return ":red[Die eingegebene Zahl ist kein gültiger Buchstabenwert!]"
else:
return bw[ausz]
else:
@@ -145,9 +145,9 @@ def buchstabenwert_zu_text(eingabetext):
else:
ignor = ignor + str(z) + " "
if ignor != "":
ausgabe_text += "_Achtung folgendes wurde ignoriert:_ \n"
ausgabe_text += ":red[Achtung folgendes wurde ignoriert:] \n"
ausgabe_text += ignor + " \n \n"
ausgabe_text += "_umgewandelte Zeichen:_ \n"
ausgabe_text += ":blue[umgewandelte Zeichen:] \n"
ausgabe_text += atxt
return ausgabe_text
@@ -174,8 +174,8 @@ def zeichenanzahl(eingabetext):
for key in anzahl:
s.append(key)
s.sort()
ausgabetext += f"Es wurden {len(anzahl)} unterschiedliche Zeichen gefunden. \n"
ausgabetext += "| Zeichen | Anzahl |\n|----|----|\n"
ausgabetext += f"Es wurden __:orange[{len(anzahl)}]__ unterschiedliche Zeichen gefunden. \n"
ausgabetext += "| :blue[Zeichen] | :blue[Anzahl] |\n|----|----|\n"
for i in s:
if ord(i) == 9:
ausgabetext += f"|TAB|{anzahl[i]}|\n"
@@ -203,9 +203,9 @@ def quersummen(eingabetext):
try:
ausz = int(eingabetext)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!]"
else:
return f"_Quersumme:_ {helper.q_sum(ausz)} \n_iterierte Quersumme:_ {helper.iq_sum(ausz)}"
return f" :blue[Quersumme:] {helper.q_sum(ausz)} \n:blue[iterierte Quersumme:] {helper.iq_sum(ausz)}"
else:
ausgabetext = ""
txt = eingabetext.split(se)
@@ -221,11 +221,11 @@ def quersummen(eingabetext):
qtxt = qtxt + str(helper.q_sum(az)) + "/"
iqtxt = iqtxt + str(helper.iq_sum(az)) + "/"
if ignor != "":
ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
ausgabetext += ":red[Achtung nicht erkannte Zeichen:] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_Quersummen:_ \n"
ausgabetext += ":blue[Quersummen:] \n"
ausgabetext += qtxt[:-1] + " \n \n"
ausgabetext += "_iterierte Quersummen_ \n"
ausgabetext += ":blue[iterierte Quersummen] \n"
ausgabetext += iqtxt[:-1]
return ausgabetext
@@ -252,17 +252,17 @@ def einschluss_count(eingabetext):
wz_ohne += 1
wortsummenliste_ohne.append(wz_ohne)
wortsummenliste_mit.append(wz_mit)
ausgabetext = "__mit 4__ \n"
ausgabetext += "_insgesamt gefundene Einschlüsse:_ "
ausgabetext = "__:orange[mit 4]__ \n"
ausgabetext += ":blue[insgesamt gefundene Einschlüsse:] "
ausgabetext += f"{sum(wortsummenliste_mit)} \n"
ausgabetext += "_Einschlüsse pro Wort:_ "
ausgabetext += ":blue[Einschlüsse pro Wort:] "
for z in wortsummenliste_mit:
ausgabetext += f"{z} "
ausgabetext += " \n \n"
ausgabetext += "__ohne 4__ \n"
ausgabetext += "_insgesamt gefundene Einschlüsse:_ "
ausgabetext += "__:orange[ohne 4]__ \n"
ausgabetext += ":blue[insgesamt gefundene Einschlüsse:] "
ausgabetext += f"{sum(wortsummenliste_ohne)} \n"
ausgabetext += "_Einschlüsse pro Wort:_ "
ausgabetext += ":blue[Einschlüsse pro Wort:] "
for z in wortsummenliste_ohne:
ausgabetext += f"{z} "
return ausgabetext
@@ -289,7 +289,7 @@ def morse_to_abc(eingabetext):
if sign == "/":
atxt = atxt + " "
elif sign not in alphabet:
atxt = atxt + "#"
atxt = atxt + ":red[#]"
else:
atxt = atxt + alphabet[sign]
return atxt
@@ -416,7 +416,7 @@ def dez_to_ascii(eingabetext):
try:
ausz = int(eingabetext)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!]"
else:
return chr(ausz)
else:
@@ -432,9 +432,9 @@ def dez_to_ascii(eingabetext):
else:
atxt = atxt + chr(az)
if ignor != "":
ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
ausgabetext += ":red[Achtung nicht erkannte Zeichen:] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += ":blue[umgewandelte Zeichen:] \n"
ausgabetext += atxt
return ausgabetext
@@ -465,7 +465,7 @@ def hex_to_ascii(eingabetext):
try:
ausz = int(eingabetext, 16)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!]"
else:
return chr(ausz)
else:
@@ -481,9 +481,9 @@ def hex_to_ascii(eingabetext):
else:
atxt = atxt + chr(az)
if ignor != "":
ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
ausgabetext += ":red[Achtung nicht erkannte Zeichen] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += ":blue[umgewandelte Zeichen:] \n"
ausgabetext += atxt
return ausgabetext
@@ -513,7 +513,7 @@ def octal_to_ascii(eingabetext):
try:
ausz = int(eingabetext, 8)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!]"
else:
return chr(ausz)
else:
@@ -529,9 +529,9 @@ def octal_to_ascii(eingabetext):
else:
atxt = atxt + chr(az)
if ignor != "":
ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
ausgabetext += ":red[Achtung nicht erkannte Zeichen] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += ":blue[umgewandelte Zeichen:] \n"
ausgabetext += atxt
return ausgabetext
@@ -553,8 +553,8 @@ def ascii_to_bin8(eingabetext):
z = []
for i in eingabetext:
if ord(i) > 255:
return ("Sorry der Eingabetext enthält Zeichen,welche sich nicht mit 8 bit in binär darstellen "
"lassen!")
return (":red[Sorry der Eingabetext enthält Zeichen,welche sich nicht mit 8 bit in binär darstellen "
"lassen!]")
z.append("{:0>8b}".format(ord(i)))
return ' '.join(z)
@@ -574,7 +574,7 @@ def bin_to_ascii(eingabetext):
try:
ausz = int(eingabetext, 2)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!]"
else:
return chr(ausz)
else:
@@ -590,9 +590,9 @@ def bin_to_ascii(eingabetext):
else:
atxt = atxt + chr(az)
if ignor != "":
ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n"
ausgabetext += ":red[Achtung nicht erkannte Zeichen] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_umgewandelte Zeichen:_ \n"
ausgabetext += ":blue[umgewandelte Zeichen:] \n"
ausgabetext += atxt
return ausgabetext
@@ -624,11 +624,11 @@ def zahlwortsuche_de(eingabetext):
if tt:
atxt = atxt + b
if atxt == "":
return "Leider keine Zahlwörter gefunden!"
return ":red[Leider keine Zahlwörter gefunden!]"
else:
ausgabetext = "_Gefundene Zahlwörter:_ \n"
ausgabetext = ":blue[Gefundene Zahlwörter:] \n"
ausgabetext += atxt + " \n \n"
ausgabetext += "_Eingangstext:_ \n"
ausgabetext += ":blue[Eingangstext:] \n"
ausgabetext += ntxt
return ausgabetext
@@ -661,11 +661,11 @@ def zahlwortsuche_en(eingabetext):
if tt:
atxt = atxt + b
if atxt == "":
return "Leider keine Zahlwörter gefunden!"
return ":red[Leider keine Zahlwörter gefunden!]"
else:
ausgabetext = "_Gefundene Zahlwörter:_ \n"
ausgabetext = ":blue[Gefundene Zahlwörter:] \n"
ausgabetext += atxt + " \n \n"
ausgabetext += "_Eingangstext:_ \n"
ausgabetext += ":blue[Eingangstext:] \n"
ausgabetext += ntxt
return ausgabetext
@@ -750,7 +750,7 @@ def kenny_raten(eingabetext):
tri = txt2[i:i + 3]
if tri in wbk:
atxt = atxt + wbk[tri]
ausgabetext += f"_{p}_ \n"
ausgabetext += f":blue[{p}] \n"
ausgabetext += f"{atxt} \n \n"
return ausgabetext
@@ -779,12 +779,12 @@ def primzahlalphabet_dekodieren(eingabetext):
try:
ausz = int(eingabetext)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!]"
else:
if ausz in pdict:
return pdict[ausz]
else:
return eingabetext + " ist keine Primzahl oder größer als 1 Million!"
return f":red[{eingabetext} ist keine Primzahl oder größer als 1 Million!]"
else:
ausgabetext = ""
txt = eingabetext.split(se)
@@ -801,9 +801,9 @@ def primzahlalphabet_dekodieren(eingabetext):
else:
ignor = ignor + str(z) + " "
if ignor != "":
ausgabetext += "_ignoriert wurde:_ \n"
ausgabetext += ":red[ignoriert wurde:] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_umgewandelte Zahlen:_ \n"
ausgabetext += ":blue[umgewandelte Zahlen:] \n"
ausgabetext += atxt
return ausgabetext
@@ -815,16 +815,16 @@ def primzahlpruefen(eingabetext):
try:
ausz = int(eingabetext)
except ValueError:
return "Keine Zahl erkannt!"
return ":red[Keine Zahl erkannt!]"
else:
if ausz > 1299709:
return ("Sorry, aber ich mag nur die ersten 100,000 Primzahlen, das sind Zahlen bis maximal "
"1,299,709 !")
return (":red[Sorry, aber ich mag nur die ersten 100,000 Primzahlen, das sind Zahlen bis maximal "
"1,299,709 !]")
primes = helper.primzahlliste(1299710)
if ausz not in primes:
return f"{ausz:,} ist keine Primzahl"
return f":orange[{ausz:,}] ist keine Primzahl"
else:
return f"{ausz:,} ist die {primes.index(ausz) + 1:,}. Primzahl"
return f":orange[{ausz:,}] ist die :orange[{primes.index(ausz) + 1:,}.] Primzahl"
def nte_primzahl(eingabetext):
eingabetext = eingabetext.rstrip()
@@ -834,12 +834,12 @@ def nte_primzahl(eingabetext):
try:
ausz = int(eingabetext)
except ValueError:
return "Keine Zahl erkannt!"
return ":red[Keine Zahl erkannt!]"
if ausz > 100000:
return "Sorry, aber ich mag nur die ersten 100,000 Primzahlen, das sind Zahlen bis maximal 1,299,709 !"
return ":red[Sorry, aber ich mag nur die ersten 100,000 Primzahlen, das sind Zahlen bis maximal 1,299,709 !]"
else:
primes = helper.primzahlliste(1299710)
return f"Die {ausz:,}. Primzahl lautet: {primes[ausz - 1]:,}"
return f"Die :orange[{ausz:,}.] Primzahl lautet: :orange[{primes[ausz - 1]:,}]"
def primfaktoren(eingabetext):
eingabetext = eingabetext.rstrip()
@@ -849,20 +849,20 @@ def primfaktoren(eingabetext):
try:
n = int(eingabetext)
except ValueError:
return "Es konnte leider keine Zahl erkannt werden."
return ":red[Es konnte leider keine Zahl erkannt werden.]"
faktoren = []
for i in chain([2], range(3, n // 2 + 1, 2)):
if i > 100000000:
return ("Sorry, aber die Primfaktorensuche wurde abgebrochen, da mindestens 1 Faktor größer als "
"100 Millionen ist.")
return (":red[Sorry, aber die Primfaktorensuche wurde abgebrochen, da mindestens 1 Faktor größer als "
"100 Millionen ist.]")
while n % i == 0:
faktoren.append(i)
n = n // i
if i > n:
break
out = f"_Die Zahl {eingabetext} hat folgende Primfaktoren:_ \n"
out = f"_Die Zahl :orange[{eingabetext}] hat folgende Primfaktoren:_ \n"
if not faktoren:
return f"Die Zahl {eingabetext} ist eine Primzahl!!"
return f"Die Zahl :orange[{eingabetext}] ist eine Primzahl!!"
else:
for z in faktoren:
out += str(z) + ", "
@@ -884,9 +884,9 @@ def dez_to_hex_oct_bin(eingabetext):
try:
ausz = int(eingabetext)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!]"
else:
return "Dez: {0:} \nHEX: {0:X} \nOCT: {0:o} \nBIN: {0:b}".format(ausz)
return ":blue[DEZ:] {0:} \n:blue[HEX:] {0:X} \n:blue[OCT:] {0:o} \n:blue[BIN:] {0:b}".format(ausz)
else:
ausgabetext = ""
txt = eingabetext.split(se)
@@ -902,11 +902,11 @@ def dez_to_hex_oct_bin(eingabetext):
octtxt = octtxt + "{:o}".format(az) + "/"
bintxt = bintxt + "{:b}".format(az) + "/"
if ignor != "":
ausgabetext += f"_Achtung nicht erkannte Zeichen:_ {ignor} \n"
ausgabetext += f"_DEZ:_ {deztxt[:-1]} \n"
ausgabetext += f"_HEX:_ {hextxt[:-1]} \n"
ausgabetext += f"_OCT:_ {octtxt[:-1]} \n"
ausgabetext += f"_BIN:_ {bintxt[:-1]} \n"
ausgabetext += f":red[Achtung nicht erkannte Zeichen] {ignor} \n"
ausgabetext += f":blue[DEZ:] {deztxt[:-1]} \n"
ausgabetext += f":blue[HEX:] {hextxt[:-1]} \n"
ausgabetext += f":blue[OCT:] {octtxt[:-1]} \n"
ausgabetext += f":blue[BIN:] {bintxt[:-1]} \n"
return ausgabetext
def hex_to_dez_oct_bin(eingabetext):
@@ -925,9 +925,9 @@ def hex_to_dez_oct_bin(eingabetext):
try:
ausz = int(eingabetext, 16)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!]"
else:
return "HEX: {0:X} \nDez: {0:} \nOCT: {0:o} \nBIN: {0:b}".format(ausz)
return ":blue[HEX:] {0:X} \n:blue[DEZ:] {0:} \n:blue[OCT:] {0:o} \n:blue[BIN:] {0:b}".format(ausz)
else:
ausgabetext = ""
txt = eingabetext.split(se)
@@ -943,11 +943,11 @@ def hex_to_dez_oct_bin(eingabetext):
octtxt = octtxt + "{:o}".format(az) + "/"
bintxt = bintxt + "{:b}".format(az) + "/"
if ignor != "":
ausgabetext += f"_Achtung nicht erkannte Zeichen:_ {ignor} \n"
ausgabetext += f"_HEX:_ {hextxt[:-1]} \n"
ausgabetext += f"_DEZ:_ {deztxt[:-1]} \n"
ausgabetext += f"_OCT:_ {octtxt[:-1]} \n"
ausgabetext += f"_BIN:_ {bintxt[:-1]} \n"
ausgabetext += f":red[Achtung nicht erkannte Zeichen] {ignor} \n"
ausgabetext += f":blue[HEX:] {hextxt[:-1]} \n"
ausgabetext += f":blue[DEZ:] {deztxt[:-1]} \n"
ausgabetext += f":blue[OCT:] {octtxt[:-1]} \n"
ausgabetext += f":blue[BIN:] {bintxt[:-1]} \n"
return ausgabetext
def oct_to_hex_dez_bin(eingabetext):
@@ -966,9 +966,9 @@ def oct_to_hex_dez_bin(eingabetext):
try:
ausz = int(eingabetext, 8)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!]"
else:
return "OCT: {0:o} \nHEX: {0:X} \nDez: {0:} \nBIN: {0:b}".format(ausz)
return ":blue[OCT:] {0:o} \n:blue[HEX:] {0:X} \n:blue[DEZ:] {0:} \n:blue[BIN:] {0:b}".format(ausz)
else:
ausgabetext = ""
txt = eingabetext.split(se)
@@ -984,11 +984,11 @@ def oct_to_hex_dez_bin(eingabetext):
octtxt = octtxt + "{:o}".format(az) + "/"
bintxt = bintxt + "{:b}".format(az) + "/"
if ignor != "":
ausgabetext += f"_Achtung nicht erkannte Zeichen:_ {ignor} \n"
ausgabetext += f"_OCT:_ {octtxt[:-1]} \n"
ausgabetext += f"_HEX:_ {hextxt[:-1]} \n"
ausgabetext += f"_DEZ:_ {deztxt[:-1]} \n"
ausgabetext += f"_BIN:_ {bintxt[:-1]} \n"
ausgabetext += f":red[Achtung nicht erkannte Zeichen] {ignor} \n"
ausgabetext += f":blue[OCT:] {octtxt[:-1]} \n"
ausgabetext += f":blue[HEX:] {hextxt[:-1]} \n"
ausgabetext += f":blue[DEZ:] {deztxt[:-1]} \n"
ausgabetext += f":blue[BIN:] {bintxt[:-1]} \n"
return ausgabetext
def bin_to_hex_dez_oct(eingabetext):
@@ -1007,9 +1007,9 @@ def bin_to_hex_dez_oct(eingabetext):
try:
ausz = int(eingabetext, 2)
except ValueError:
return "Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!"
return ":red[Keine Zahl oder gültiges Trennzeichen (, ; / _ | oder Leerzeichen) erkannt!]"
else:
return "BIN: {0:b} \nHEX: {0:X} \nDez: {0:} \nOCT: {0:o}".format(ausz)
return ":blue[BIN:] {0:b} \n:blue[HEX:] {0:X} \n:blue[DEZ:] {0:} \n:blue[OCT:] {0:o}".format(ausz)
else:
ausgabetext = ""
txt = eingabetext.split(se)
@@ -1025,11 +1025,11 @@ def bin_to_hex_dez_oct(eingabetext):
octtxt = octtxt + "{:o}".format(az) + "/"
bintxt = bintxt + "{:b}".format(az) + "/"
if ignor != "":
ausgabetext += f"_Achtung nicht erkannte Zeichen:_ {ignor} \n"
ausgabetext += f"_BIN:_ {bintxt[:-1]} \n"
ausgabetext += f"_HEX:_ {hextxt[:-1]} \n"
ausgabetext += f"_DEZ:_ {deztxt[:-1]} \n"
ausgabetext += f"_OCT:_ {octtxt[:-1]} \n"
ausgabetext += f":red[Achtung nicht erkannte Zeichen] {ignor} \n"
ausgabetext += f":blue[BIN:] {bintxt[:-1]} \n"
ausgabetext += f":blue[HEX:] {hextxt[:-1]} \n"
ausgabetext += f":blue[DEZ:] {deztxt[:-1]} \n"
ausgabetext += f":blue[OCT:] {octtxt[:-1]} \n"
return ausgabetext
def abc_to_tomtom(eingabetext):
@@ -1053,9 +1053,9 @@ def abc_to_tomtom(eingabetext):
else:
atxt = atxt + alphabet[b.lower()]
if ignor != "":
ausgabetext += "_ignorierte Zeichen:_ \n"
ausgabetext += ":red[ignorierte Zeichen:] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_kodierter Text:_ \n"
ausgabetext += ":blue[kodierter Text:] \n"
ausgabetext += atxt
return ausgabetext
@@ -1105,9 +1105,9 @@ def text_to_slashpipe(eingabetext):
else:
atxt = atxt + alphabet[b.lower()]
if ignor != "":
ausgabetext += "_ignorierte Zeichen:_ \n"
ausgabetext += ":red[ignorierte Zeichen:] \n"
ausgabetext += ignor + " \n \n"
ausgabetext += "_kodierter Text:_ \n"
ausgabetext += ":blue[kodierter Text:] \n"
ausgabetext += atxt
return ausgabetext
@@ -1167,7 +1167,7 @@ def periodensystem(eingabetext):
if eingabetext in um_pse:
return str(um_pse[eingabetext])
else:
return "Keine gültige Eingabe erkannt!"
return ":red[Keine gültige Eingabe erkannt!]"
else:
return pse[ausz]
else:
@@ -1182,7 +1182,7 @@ def periodensystem(eingabetext):
az = int(z)
except ValueError:
if z in um_pse:
atxt3 += z + ":" + str(um_pse[z]) + " "
atxt3 += f"|{z}|{str(um_pse[z])}|\n"
else:
ignor = ignor + z + " "
else:
@@ -1192,13 +1192,13 @@ def periodensystem(eingabetext):
else:
ignor = ignor + z + " "
if ignor != "":
ausgabetext += "_Achtung nicht erkannte Zeichen:_ \n" + ignor + " \n \n"
ausgabetext += ":red[Achtung nicht erkannte Zeichen] \n" + ignor + " \n \n"
if atxt != "":
ausgabetext += "_Symbole:_ \n" + atxt + " \n \n"
ausgabetext += ":blue[Symbole:] \n" + atxt + " \n \n"
if atxt2 != "":
ausgabetext += "_Nur Anfangsbuchstaben:_ \n" + atxt2 + " \n \n"
ausgabetext += ":blue[Nur Anfangsbuchstaben:] \n" + atxt2 + " \n \n"
if atxt3 != "":
ausgabetext += "_Symbol:Ordnungszahl_ \n" + atxt3
ausgabetext += "|:blue[Symbol]|:blue[Ordnungszahl]|\n|-|-|\n" + atxt3
return ausgabetext
def naknak_to_text(eingabetext):
@@ -1220,7 +1220,7 @@ def naknak_to_text(eingabetext):
utxt = utxt + nakwb[nak]
z = 1
atxt = urllib_parse_unquote(utxt)
return "_dekodiertes Geschnatter:_ \n" + atxt
return f":blue[dekodiertes Geschnatter:] \n{atxt}"
def navajo_to_text(eingabetext):
nabc = {"WOL-LA-CHEE": "A", "BE-LA-SANA": "A", "TSE-NILL": "A", "NA-HASH-CHID": "B", "SHUSH": "B", "TOISH-JEH": "B",
@@ -1245,7 +1245,7 @@ def navajo_to_text(eingabetext):
w = wort.upper()
if w in nabc:
atxt = atxt + nabc[w]
return "_dekodierter Text:_ \n" + atxt
return ":blue[dekodierter Text:] \n" + atxt
def pi_suche(eingabetext):
eingabetext = eingabetext.rstrip()
@@ -1255,7 +1255,7 @@ def pi_suche(eingabetext):
try:
piread = open("./data/pi.txt", "r")
except FileNotFoundError:
return "Sorry es scheint die Datei pi.txt zu fehlen, welche von dieser Funktion benötigt wird."
return ":red[Sorry es scheint die Datei pi.txt zu fehlen, welche von dieser Funktion benötigt wird.]"
else:
pistr = ""
for zeile in piread:
@@ -1265,21 +1265,22 @@ def pi_suche(eingabetext):
try:
zahlx = int(eingabetext)
except ValueError:
return "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!"
return ":red[Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!]"
else:
ausgabetext = "_PI (Kreiszahl)_ \n \n"
ausgabetext = ":blue[PI (Kreiszahl)] \n \n"
pos = pistr.find(eingabetext)
if pilen >= zahlx > 0:
ausgabetext += (f"_Die {zahlx}. Nachkommstelle lautet:_ {pistr[zahlx + 1]} \n_20 Stellen ab "
f"{zahlx}. Nachkommstelle:_ {pistr[zahlx + 1:zahlx + 21]}... \n \n")
ausgabetext += (f"Die :orange[{zahlx}.] Nachkommstelle lautet: :orange[{pistr[zahlx + 1]}] \n"
f"20 Stellen ab :orange[{zahlx}.] Nachkommstelle: "
f":orange[{pistr[zahlx + 1:zahlx + 21]}...] \n \n")
else:
ausgabetext += f"_Die verwendete pi.txt kennt leider nur {pilen:,} Nachkommstellen._ \n \n"
ausgabetext += f"Die verwendete pi.txt kennt leider nur :orange[{pilen:,}] Nachkommstellen. \n \n"
if pos == -1:
ausgabetext += f"_Zahlenreihe in {pilen:,} Nachkommastellen nicht zu finden._"
ausgabetext += f"Zahlenreihe in :orange[{pilen:,}] Nachkommastellen nicht zu finden."
else:
ausgabetext += (f'erstes Vorkommen von Zahlenfolge "{eingabetext.rstrip()}" ab {pos - 1}. '
f'Nachkommastelle \n20 Stellen ab {pos - 1}. Nachkommstelle: '
f'{pistr[pos:pos + 20]}...')
ausgabetext += (f'erstes Vorkommen von Zahlenfolge :orange[{eingabetext.rstrip()}] ab '
f':orange[{pos - 1}.] Nachkommastelle \n20 Stellen ab :orange[{pos - 1}.] '
f'Nachkommstelle: :orange[{pistr[pos:pos + 20]}...]')
return ausgabetext
def euler_suche(eingabetext):
@@ -1290,7 +1291,7 @@ def euler_suche(eingabetext):
try:
eread = open("./data/e.txt", "r")
except FileNotFoundError:
return "Sorry es scheint die Datei e.txt zu fehlen, welche von dieser Funktion benötigt wird."
return ":red[Sorry es scheint die Datei e.txt zu fehlen, welche von dieser Funktion benötigt wird.]"
else:
estr = ""
for zeile in eread:
@@ -1300,21 +1301,22 @@ def euler_suche(eingabetext):
try:
zahlx = int(eingabetext)
except ValueError:
return "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!"
return ":red[Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!]"
else:
ausgabetext = "_e (Eulersche Zahl)_ \n \n"
ausgabetext = ":blue[e (Eulersche Zahl)] \n \n"
pos = estr.find(eingabetext)
if elen >= zahlx > 0:
ausgabetext += (f"_Die {zahlx}. Nachkommstelle lautet:_ {estr[zahlx + 1]} \n_20 Stellen ab "
f"{zahlx}. Nachkommstelle:_ {estr[zahlx + 1:zahlx + 21]}... \n \n")
ausgabetext += (f"Die :orange[{zahlx}.] Nachkommstelle lautet: :orange[{estr[zahlx + 1]}] \n"
f"20 Stellen ab :orange[{zahlx}.] Nachkommstelle: "
f":orange[{estr[zahlx + 1:zahlx + 21]}...] \n \n")
else:
ausgabetext += f"_Die verwendete pi.txt kennt leider nur {elen:,} Nachkommstellen._ \n \n"
ausgabetext += f"Die verwendete e.txt kennt leider nur :orange[{elen:,}] Nachkommstellen. \n \n"
if pos == -1:
ausgabetext += f"_Zahlenreihe in {elen:,} Nachkommastellen nicht zu finden._"
ausgabetext += f"Zahlenreihe in :orange[{elen:,}] Nachkommastellen nicht zu finden."
else:
ausgabetext += (f'erstes Vorkommen von Zahlenfolge "{eingabetext.rstrip()}" ab {pos - 1}. '
f'Nachkommastelle \n20 Stellen ab {pos - 1}. Nachkommstelle: '
f'{estr[pos:pos + 20]}...')
ausgabetext += (f'erstes Vorkommen von Zahlenfolge :orange[{eingabetext.rstrip()}] ab '
f':orange[{pos - 1}.] Nachkommastelle \n20 Stellen ab :orange[{pos - 1}.] '
f'Nachkommstelle: :orange[{estr[pos:pos + 20]}...]')
return ausgabetext
def goldener_schnitt_suche(eingabetext):
@@ -1325,7 +1327,7 @@ def goldener_schnitt_suche(eingabetext):
try:
phiread = open("./data/phi.txt", "r")
except ValueError:
return "Sorry es scheint die Datei phi.txt zu fehlen, welche von dieser Funktion benötigt wird."
return ":red[Sorry es scheint die Datei phi.txt zu fehlen, welche von dieser Funktion benötigt wird.]"
else:
phistr = ""
for zeile in phiread:
@@ -1335,21 +1337,23 @@ def goldener_schnitt_suche(eingabetext):
try:
zahlx = int(eingabetext)
except ValueError:
return "Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!"
return ":red[Sorry aber ohne gültige Zahleneingabe funktioniert das nicht!]"
else:
ausgabetext = "_phi (Goldener Schnitt)_ \n \n"
ausgabetext = ":blue[phi (Goldener Schnitt)] \n \n"
pos = phistr.find(eingabetext)
if philen >= zahlx > 0:
ausgabetext += (f"_Die {zahlx}. Nachkommstelle lautet:_ {phistr[zahlx + 1]} \n_20 Stellen ab "
f"{zahlx}. Nachkommstelle:_ {phistr[zahlx + 1:zahlx + 21]}... \n \n")
ausgabetext += (f"Die :orange[{zahlx}.] Nachkommstelle lautet: :orange[{phistr[zahlx + 1]}] \n"
f"20 Stellen ab :orange[{zahlx}.] Nachkommstelle: "
f":orange[{phistr[zahlx + 1:zahlx + 21]}...] \n \n")
else:
ausgabetext += f"_Die verwendete pi.txt kennt leider nur {philen:,} Nachkommstellen._ \n \n"
ausgabetext += (f"Die verwendete pi.txt kennt leider nur :orange[{philen:,}] "
f"Nachkommstellen. \n \n")
if pos == -1:
ausgabetext += f"_Zahlenreihe in {philen:,} Nachkommastellen nicht zu finden._"
ausgabetext += f"Zahlenreihe in :orange[{philen:,}] Nachkommastellen nicht zu finden."
else:
ausgabetext += (f'erstes Vorkommen von Zahlenfolge "{eingabetext.rstrip()}" ab {pos - 1}. '
f'Nachkommastelle \n20 Stellen ab {pos - 1}. Nachkommstelle: '
f'{phistr[pos:pos + 20]}...')
ausgabetext += (f'erstes Vorkommen von Zahlenfolge :orange[{eingabetext.rstrip()}] ab '
f':orange[{pos - 1}.] Nachkommastelle \n20 Stellen ab :orange[{pos - 1}.] '
f'Nachkommstelle: :orange[{phistr[pos:pos + 20]}...]')
return ausgabetext
def anagramm_suche_de(eingabetext):
@@ -1361,10 +1365,10 @@ def anagramm_suche_de(eingabetext):
wbfile = open("./data/german.dic", "r",
encoding="iso-8859-15") # german.dic von https://sourceforge.net/projects/germandict/
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
eingabezaehl = helper.wortzaehl(eingabetext)
ausgabetext = "_gefundene Anagramme:_ \n"
ausgabetext = ":blue[gefundene Anagramme:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
if eingabetext.upper() == zeile.upper():
@@ -1384,10 +1388,10 @@ def anagramm_suche_en(eingabetext):
try:
wbfile = open("./data/en_US-large.txt", "r", encoding="UTF-8")
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
eingabezaehl = helper.wortzaehl(eingabetext)
ausgabetext = "_gefundene Anagramme:_ \n"
ausgabetext = ":blue[gefundene Anagramme:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
if eingabetext.upper() == zeile.upper():
@@ -1407,9 +1411,9 @@ def wortsuche_de(eingabetext):
try:
wbfile = open("./data/german.dic", "r", encoding="iso-8859-15")
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
ausgabetext = "_im Wörterbuch gefundene passende Wörter:_ \n"
ausgabetext = ":blue[im Wörterbuch gefundene passende Wörter:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
if len(eingabetext) != len(zeile):
@@ -1433,9 +1437,9 @@ def wortsuche_en(eingabetext):
try:
wbfile = open("./data/en_US-large.txt", "r", encoding="UTF-8")
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
ausgabetext = "_im Wörterbuch gefundene passende Wörter:_ \n"
ausgabetext = ":blue[im Wörterbuch gefundene passende Wörter:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
if len(eingabetext) != len(zeile):
@@ -1465,18 +1469,19 @@ def remorse_de(eingabetext):
testfile.close()
if eingabetext == "GENERATE":
helper.remorse_generate_morsede()
return "Remorse-Wörterbuch wurde erzeugt und wird ab dem nächsten Aufruf der Funktion benutzt."
return (":green[Remorse-Wörterbuch wurde erzeugt und wird ab dem nächsten Aufruf der Funktion "
"benutzt.]")
else:
ausgabetext = ("_Da das Remorse-Wörterbuch noch nicht generiert wurde, wurde das normale_ "
"_Wörterbuch für die Suche benutzt, das dauert zwar ca. 5x so lange, aber geht_ "
"_auch._ \n"
"_Um das Remorse-Wörterbuch zu erzeugen bitte das Wort:_ __GENERATE__ _ins_ "
"_Eingabefeld eingeben und die Funktion starten._ \n \n")
ausgabetext = (":green[Da das Remorse-Wörterbuch noch nicht generiert wurde, wurde das normale "
"Wörterbuch für die Suche benutzt, das dauert zwar ca. 5x so lange, aber geht "
"auch. \n"
"Um das Remorse-Wörterbuch zu erzeugen bitte das Wort:] :orange[GENERATE] "
":green[ins Eingabefeld eingeben und die Funktion starten.] \n \n")
return ausgabetext + helper.remorse_germandic(eingabetext)
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
ausgabetext = "_der eingegebene Morsecode kann für folgendes stehen:_ \n"
ausgabetext = ":blue[der eingegebene Morsecode kann für folgendes stehen:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
mline = zeile.split(",")
@@ -1505,9 +1510,9 @@ def remorse_en(eingabetext):
try:
wbfile = open("./data/en_US-large.txt", "r", encoding="UTF-8")
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
ausgabetext = "_der eingegebene Morsecode kann für folgendes stehen:_ \n"
ausgabetext = ":blue[der eingegebene Morsecode kann für folgendes stehen:] \n"
if eingabetext in ualphabet:
ausgabetext += ualphabet[eingabetext] + " \n"
for zeile in wbfile:
@@ -1536,17 +1541,17 @@ def t9_de(eingabetext):
testfile.close()
if eingabetext == "GENERATE":
helper.t9_generate_t9de()
return "t9-Wörterbuch wurde erzeugt und wird ab dem nächsten Aufruf der Funktion benutzt."
return ":green[t9-Wörterbuch wurde erzeugt und wird ab dem nächsten Aufruf der Funktion benutzt.]"
else:
ausgabetext = ("_Da das T9-Wörterbuch nicht vorhanden ist, wurde das normale Wörterbuch für die_ "
"_Suche benutzt. Das dauert zwar ca. 7x so lange, aber geht auch._ \n"
"_Um das spezielle T9-Wörterbuch zu erzeugen bitte das Wort:_ __GENERATE__ _ins_ "
"_Eingabefeld eingeben und die Funktion starten._ \n \n")
ausgabetext = (":green[Da das T9-Wörterbuch nicht vorhanden ist, wurde das normale Wörterbuch für "
"die Suche benutzt. Das dauert zwar ca. 7x so lange, aber geht auch. \n"
"Um das spezielle T9-Wörterbuch zu erzeugen bitte das Wort:] :orange[GENERATE] "
":green[ins Eingabefeld eingeben und die Funktion starten.] \n \n")
return ausgabetext + helper.t9_germandic(eingabetext)
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
ausgabetext = "_der eingegebene T9-Code kann für folgendes stehen:_ \n"
ausgabetext = ":blue[der eingegebene T9-Code kann für folgendes stehen:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
mline = zeile.split(",")
@@ -1571,9 +1576,9 @@ def t9_en(eingabetext):
try:
wbfile = open("./data/en_US-large.txt", "r", encoding="UTF-8")
except FileNotFoundError:
return "Leider konnte die Wörterbuchdatei nicht geladen werden."
return ":red[Leider konnte die Wörterbuchdatei nicht geladen werden.]"
else:
ausgabetext = "_der eingegebene T9-Code kann für folgendes stehen:_ \n"
ausgabetext = ":blue[der eingegebene T9-Code kann für folgendes stehen:] \n"
for zeile in wbfile:
zeile = zeile.strip(" \t\n\r")
mzeile = ""
@@ -1601,7 +1606,7 @@ def vigenere(eingabetext, pw):
else:
for b in pw:
if b.upper() not in bw:
return "Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!"
return ":red[Das Passwort darf nur die Buchstaben A-Z / a-z enthalten!]"
pwl = len(pw)
encoded_text = ""
encoded_text_s = "" # wenn Leer und Sonderzeichen Schlüsselbuchstaben verbrauchen