From 5ed64edceffd70c8adb0eebf10c2fadccebf8588 Mon Sep 17 00:00:00 2001 From: tebarius Date: Tue, 22 Jul 2025 13:34:48 +0200 Subject: [PATCH] =?UTF-8?q?zeichen=20z=C3=A4hlen=20+=20r=C3=BCckw=C3=A4rts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/app.py | 30 +++++++++++++++--- app/tools.py | 89 ++++++++++++++++++++++------------------------------ 2 files changed, 63 insertions(+), 56 deletions(-) diff --git a/app/app.py b/app/app.py index 1aec8b2..8a761f0 100644 --- a/app/app.py +++ b/app/app.py @@ -1,8 +1,7 @@ # app.py import streamlit as st -from pyarrow.interchange.from_dataframe import map_date_type -from tools import * +import tools standard_output = ('#### Um den HILFE-Text zu einzelnen Funktionen aufzurufen bitte die Funktion mit leerem' ' Eingabefeld aufrufen.') @@ -28,13 +27,24 @@ def auswahl_verarbeiten(): st.session_state.output_text = standard_output st.session_state.map_data = None elif auswahl == "Cesarchiffre (all)": - st.session_state.output_text = cesar_all(text) + st.session_state.output_text = tools.cesar_all(text) st.session_state.map_data = None elif auswahl == "BW,BWW,... ermitteln": - st.session_state.output_text = buchstabenwortwert(text) + 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.map_data = None + elif auswahl == "Zeichenzählen": + st.session_state.output_text = tools.zeichenzaehlen(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.map_data = None + + elif auswahl == "Dummy mit Karte": - output, mapd = funktion_mit_karte(text, additional_parameter) + output, mapd = tools.funktion_mit_karte(text, additional_parameter) st.session_state.output_text = output st.session_state.map_data = mapd @@ -59,6 +69,16 @@ option = st.sidebar.radio("hidden_label", "Dummy mit Karte", "Cesarchiffre (all)", "BW,BWW,... ermitteln", + "Buchstabenwert->Text", + "Zeichenzählen", + "Text rückwärts", + "", + "", + "", + "", + "", + "", + "", ), key='option', on_change=auswahl_verarbeiten, diff --git a/app/tools.py b/app/tools.py index 7cbdcfe..14c6393 100644 --- a/app/tools.py +++ b/app/tools.py @@ -1,4 +1,4 @@ -from helper import * +import helper import pandas as pd def funktion_mit_karte(text,param): @@ -108,7 +108,7 @@ def buchstabenwortwert(eingabetext): ausgabe += "|_Summe aller Buchstabenwerte:_|" ausgabe += str(wortsumme) + "|\n" ausgabe += "|_Quersumme der Summe aller Buchstabenwerte / iterierte Quersumme:_|" - ausgabe += str(q_sum(wortsumme)) + " / " + str(iq_sum(wortsumme)) + "|\n" + ausgabe += str(helper.q_sum(wortsumme)) + " / " + str(helper.iq_sum(wortsumme)) + "|\n" ausgabe += "|_Buchstabenanzahl pro Wort:_|" ausgabe += banzwtxt[0:-1] + "|\n" ausgabe += "|_Gesamtanzahl aller Buchstaben:_|" @@ -119,27 +119,20 @@ def buchstabenwortwert(eingabetext): ausgabe += str(wortprodukt) + "|\n" return ausgabe - -def buchstabenwertzutext(): +def buchstabenwertzutext(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', 22: 'v', 23: 'w', 24: 'x', 25: 'y', 26: 'z', 27: 'ä', 28: 'ö', 29: 'ü', 30: 'ß'} - eingabetext = Eingabe.get(1.0, END) eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Buchstabenwerte zu Text] -Die eingegebenen Buchstabenwert werden in die -entsprechenden Buchstaben umgewandelt. -(A=1 B=2 .... Ä=27 Ö=28 Ü=29 ß=30) -Als Trennungszeichen zwischen den Zahlen sind -folgende Zeichen erlaubt: | , _ . - / ; , und -Leerzeichen. Bei Verwendung von Leerzeichen -sollten möglichst nur 1 Leerzeichen zwischen -den Zahlen verwendet werden (überzählige -Leerzeichen werden sonst als nicht erkannte -Zeichen behandelt).""" + "\n\n") + return ("### HILFE: [Buchstabenwerte zu Text]\n" + " Die eingegebenen Buchstabenwerte werden in die entsprechenden Buchstaben umgewandelt." + " (A=1 B=2 .... Ä=27 Ö=28 Ü=29 ß=30) Als Trennungszeichen zwischen den Zahlen sind folgende" + " Zeichen erlaubt: | , _ . - / ; , und Leerzeichen. Bei Verwendung von Leerzeichen sollten" + " möglichst nur 1 Leerzeichen zwischen den Zahlen verwendet werden (überzählige Leerzeichen" + " werden sonst als nicht erkannte Zeichen behandelt).") else: se = "" for s in seperator: @@ -151,14 +144,14 @@ Zeichen behandelt).""" + "\n\n") try: ausz = int(eingabetext) except ValueError: - Ausgabe.insert(1.0, "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n", - "re") + return "Keine Zahl oder gültiges Trennzeichen (, ; . / - _ | oder Leerzeichen) erkannt!\n" else: if ausz not in bw: - Ausgabe.insert(1.0, "Die eingegebene Zahl ist kein gültiger Buchstabenwert!\n", "re") + return "Die eingegebene Zahl ist kein gültiger Buchstabenwert!\n" else: - Ausgabe.insert(1.0, bw[ausz] + "\n") + return bw[ausz] else: + ausgabe_text = "" txt = eingabetext.split(se) atxt = "" ignor = "" @@ -172,36 +165,29 @@ Zeichen behandelt).""" + "\n\n") atxt = atxt + bw[az] else: ignor = ignor + str(z) + " " - Ausgabe.insert(1.0, atxt + "\n") - Ausgabe.insert(1.0, "umgewandelte Zeichen:\n", "bu") if ignor != "": - Ausgabe.insert(1.0, ignor + "\n") - Ausgabe.insert(1.0, "Achtung folgendes wurde ignoriert:\n", "re") + ausgabe_text += "_Achtung folgendes wurde ignoriert:_ \n" + ausgabe_text += ignor + " \n" + ausgabe_text += "_umgewandelte Zeichen:_ \n" + ausgabe_text += atxt + return ausgabe_text - -def zeichenkette_rueckwaerts(): - - eingabetext = Eingabe.get(1.0, END) +def zeichenkette_rueckwaerts(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Zeichenkette rückwärts] -Diese Funktion gibt die eingegebene Zeichenkette -von hinten nach vorn gelesen aus.\n""") + return ("### HILFE: [Zeichenkette rückwärts]\n" + "Diese Funktion gibt die eingegebene Zeichenkette von hinten nach vorn gelesen aus.") else: - Ausgabe.insert(1.0, eingabetext[::-1] + "\n") + return eingabetext[::-1] - -def zeichenzaehlen(): - - eingabetext = Eingabe.get(1.0, END) +def zeichenzaehlen(eingabetext): eingabetext = eingabetext.rstrip() if eingabetext == "": - Ausgabe.insert(1.0, """HILFE: [Zeichenzählen] -Es wird das Vorkommen jedes einzelnen Zeichens gezählt -und ausgegeben. -Achtung! Leerzeichen, Tabulatorzeichen und Zeilenumbrüche -werden nur vor dem letzten sichtbaren Zeichen gezählt!!!""" + "\n\n") + return ("### HILFE: [Zeichenzählen]\n" + "Es wird das Vorkommen jedes einzelnen Zeichens gezählt und ausgegeben. Achtung! Leerzeichen," + " Tabulatorzeichen und Zeilenumbrüche werden nur vor dem letzten sichtbaren Zeichen gezählt!!!") else: + ausgabetext = "" anzahl = {} for b in eingabetext: if b in anzahl: @@ -211,18 +197,19 @@ werden nur vor dem letzten sichtbaren Zeichen gezählt!!!""" + "\n\n") s = [] for key in anzahl: s.append(key) - s.sort(reverse=True) + s.sort() + ausgabetext += f"Es wurden {len(anzahl)} unterschiedliche Zeichen gefunden. \n" + ausgabetext += "| Zeichen | Anzahl |\n|----|----|\n" for i in s: if ord(i) == 9: - Ausgabe.insert(1.0, "[TAB] = {} mal\n".format(anzahl[i])) + ausgabetext += f"|TAB|{anzahl[i]}|\n" elif ord(i) == 32: - Ausgabe.insert(1.0, "[SPACE] = {} mal\n".format(anzahl[i])) + ausgabetext += f"|SPACE|{anzahl[i]}|\n" elif ord(i) == 10: - Ausgabe.insert(1.0, "[LINEFEED] = {} mal\n".format(anzahl[i])) + ausgabetext += f"|LINEFEED| = {anzahl[i]}|\n" else: - Ausgabe.insert(1.0, "{} = {} mal\n".format(i, anzahl[i])) - Ausgabe.insert(1.0, "Es wurden {} unterschiedliche Zeichen gefunden.\n".format(len(anzahl))) - + ausgabetext += f"|{i}|{anzahl[i]}|\n" + return ausgabetext def quersummen(): seperator = ("|,", "_", ".", "-", "/", ";", ",") @@ -3064,7 +3051,7 @@ Koordinaten ergibt. la = float(text[0]) lo = float(text[1]) if not la < -180 and not la > 180 and not lo < -180 and not lo > 180: - x, y = dec_to_maptiles(la, lo, zoom) + x, y = helper.dec_to_maptiles(la, lo, zoom) Ausgabe.insert(1.0, "Zoom:{:>2} X:{:<10} Y:{}\n".format(zoom, x, y)) except ValueError: pass @@ -3072,9 +3059,9 @@ Koordinaten ergibt. elif len(text) == 2: for zoom in range(30, 0, -1): try: - la, lo = maptiles_to_dec(int(text[0]), int(text[1]), zoom) + la, lo = helper.maptiles_to_dec(int(text[0]), int(text[1]), zoom) if not la < -180 and not la > 180 and not lo < -180 and not lo > 180: - Ausgabe.insert(1.0, "Zoom:{:>2} DEG: {:<23} DEC: {} {}\n".format(zoom, dec_to_deg(la, lo), + Ausgabe.insert(1.0, "Zoom:{:>2} DEG: {:<23} DEC: {} {}\n".format(zoom, helper.dec_to_deg(la, lo), round(la, 5), round(lo, 5))) except ValueError: pass