zeichen zählen + rückwärts

This commit is contained in:
2025-07-22 13:34:48 +02:00
parent 4568f65866
commit 5ed64edcef
2 changed files with 63 additions and 56 deletions

View File

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

View File

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