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
Buchstaben zählen
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()
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()
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.
Jetzt kannst Du noch schauen, welche Methoden solch ein Counter-Objekt hat und welche davon genau das tut, was Du brauchst.
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()
Das ist Unsinn gewesen.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.
@__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.