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