Seite 1 von 1

Buchstaben zählen

Verfasst: Dienstag 8. Juni 2021, 11:29
von Bruce1009
Hallo Leute,

Könnt ihr mir bei meinem Problem helfen?

Brauche eine Funktion, die einen Text entgegen nimmt
und der am meisten benutzter Buchstabe (mit Anzahl) zurückgibt.

Danke und Gruss
Bruce1009

Re: Buchstaben zählen

Verfasst: Dienstag 8. Juni 2021, 11:40
von __deets__
Wir liefern keine Hausaufgaben auf Bestellung. Was hier auch dick dokumentiert ist. Hilfe zur Selbsthilfe und so. Was hast du probiert? Was ist dir unklar?

Re: Buchstaben zählen

Verfasst: Dienstag 8. Juni 2021, 12:15
von Bruce1009
Geht es auch einfacher als das?

def counter():
text = input("Gebe einen Text ein: ")
text = text.replace(" ", "")
wörter = list(text)
from collections import Counter
dict_wörter = Counter(wörter)
max_val = [keys for keys,values in dict_wörter.items() if values == max(dict_wörter.values())]
print("The most used letter or letters is or are: " + str(max_val))
anzahl=list(dict_wörter.values())
print("You used them " + str(max(anzahl)) + " times.")

counter()

Re: Buchstaben zählen

Verfasst: Dienstag 8. Juni 2021, 12:33
von Sirius3
Das was Du als `wörter` bezeichnest, sind eigentlich keine Wörter. Was sind die Elemente dieser Liste wirklich?
Importe gehören an den Anfang der Datei, damit man gleich weiß, welche Abhängigkeiten dieses Modul hat.
In `dict_wörter` kommt ein Datentyp vor. Das macht man üblicherweise nicht, weil sich der Typ schnell mal ändern kann, und streng genommen ein Counter-Objekt auch kein dict ist. Das Maximum der Values berechnest Du für jeden Schleifendurchlauf Deiner Listcomprehension und nochmal zum Schluß. Das reicht eigentlich einmal.
Ein Item eines Counters ist keine keys und keine values. Warum benutzt Du da Plural?
Strings stückelt man nicht mit + zusammen, sondern benutzt Formatstrings.

Code: Alles auswählen

from collections import Counter

def count_characters():
    text = input("Gebe einen Text ein: ")
    text = text.replace(" ", "")
    character_count = Counter(text)
    maximum_count = max(character_count.values())
    most_common_character = [character for character, count in character_count.items() if count == maximum_count]
    print(f"The most used letter or letters is or are: {most_common_character}")
    print(f"You used them {maximum_count} times.")

count_characters()
Jetzt kannst Du noch schauen, welche Methoden solch ein Counter-Objekt hat und welche davon genau das tut, was Du brauchst.

Re: Buchstaben zählen

Verfasst: Dienstag 8. Juni 2021, 12:37
von __deets__
Das entfernen der Spaces ist auch nicht robust. Wenn sich zwei oder mehr in der Eingabe befinden, passiert Unfug. Ich würde mir die einfach sparen, und am Ende Leerzeichen aus dem Counter schmeißen.
Das ist Unsinn gewesen.

Re: Buchstaben zählen

Verfasst: Dienstag 8. Juni 2021, 12:44
von Sirius3
@__deets__: ich glaube, Du hast split mit replace verwechselt. Aber es gibt natürlich noch viele andere Zeichen, die keine Buchstaben sind, und trotzdem mitgezählt werden. Groß-Klein-Schreibung ist auch noch eine Frage.

Re: Buchstaben zählen

Verfasst: Dienstag 8. Juni 2021, 14:05
von __deets__
@Sirius3 : du hast recht, ich habe mich da irgendwie selbst verwirrt. Ich glaube ich kam aus Richtung zweimal Space -> einmal Space, was für Wortzählung wichtig sein könnte.