import string def text_analysieren(text): ''' Der Text soll analysiert werden und die Zahl des Auftretens der Buchstaben zurueckgegeben werden. Die Satzzeichen und das EOF ignoriere ich einfach. Die Funktion wird damit sehr knapp. ''' result = {} # Verarbeiten for a in string.ascii_lowercase: result[a] = text.lower().count(a) return result def analyseergebnis_ausgeben(analyseergebnis): ''' Erledige die Ausgabe, an die folgende Anfordeungen gestellt sind: a.) Buchstabe und Anzahl in einer Zeile b.) Für jedes Auftreten ein "*" c.) Zwei oder mehr Buchstaben mit identischer Haeufigkeit des Auftretens sollen in alphabetischer Reihenfolge ausgegeben werden ''' # Ich schaue mir die Daten an keys = analyseergebnis.keys() values = list(analyseergebnis.values()) values.sort(reverse=True) # Ich drehe das Wörterbuch um und # muss vermeiden, dass Buchstaben ueberschrieben werden w2 = {} liste = [] for key in keys: item = w2.get(analyseergebnis[key],0) if item == 0: w2[analyseergebnis[key]] = [key] else: item.append(key) w2[analyseergebnis[key]] = item # Wir holen uns die Schluessel keys = list(w2.keys()) keys.sort(reverse=True) for key in keys: liste = w2[key] liste.sort() for a in liste: print(a.upper(),"*" * key) text = """I have a dream that one day this nation will rise up and live out the true meaning of its creed: "We hold these truths to be self-evident, that all men are created equal." I have a dream that my four little children will one day live in a nation where they will not be judged by the color of their skin but by the content of their character. ###""" analyseergebnis = text_analysieren(text) analyseergebnis_ausgeben(analyseergebnis)Das Skript erledigt die Aufgabe ist aber wahrscheinlich noch nicht elegant genug. Insbesondere das Schieben der Daten von einem Wörterbuch ins nächste könnte vielleicht umgangen werden; das ist ein Bauchgefühl.
Was die Ausgabe angeht, so gibt obiges Skript für den Beispieltext (siehe Quelltext) ein korrektes Ergebnis aus:
E ***************************************Optimierung gewünscht ;D
T *******************************
A **********************
I ********************
H ******************
L *****************
N *****************
R ****************
O ***************
D ************
U ********
C *******
S *******
Y ******
B *****
F *****
M *****
V *****
W *****
G **
J *
K *
P *
Q *
X
Z
Keine Kommentare:
Kommentar veröffentlichen