Den am häufigsten Buchstaben als "e" zu identifizieren dürfte in der Regel wohl nicht ausreichen
.
Bei meinen Testobjekten hats bis jetzt immer funktioniert, was könnt ich denn noch mit einbauen?
print max(zip(map(s.lower().count,abc),abc))[1]
darauf wär ich nicht gekommen, is cool und echt gut, ich galube ich habs soweit auch verstanden was du da treibst.
Hab meinen Code auch so umgebaut, ist es in ordnung wenn def einlesen def haufigkeit_buchstabe aufruft und den text als Prameter übergibt?
Code: Alles auswählen
from string import ascii_lowercase as abc
#Datei mit Codierten-Daten vorher erstellen(.txt), und als Parameter(dateipfad) angeben.
#Das Zeichen, das am haufigsten vorkommt wird ausgegeben.
def einlesen(dateipfad):
datei = open(dateipfad)
text = datei.read()
datei.close()
haufigkeit_buchstabe(text)
[code=python]#Das Zeichen, das am haufigsten im Text vorkommt wird ausgegeben.
def haufigkeit_buchstabe(text):
print max(zip(map(text.lower().count, abc), abc))[1]
#Der Index(Buchstabe der am haufigsten vorkommt als Parameter angeben) zum verschieben zu 'e' wird ermittelt.
def index(buchstabe_max):
buchstabe_max = buchstabe_max
verschiebe_index = abc.index('e') - abc.index(buchstabe_max)
print verschiebe_index
#Eingelesene Textdatei(Parameter) wird um den als Parameter angegebenen Wert verschoben und ausgegeben.
def verschieben(verschiebe_index, dateipfad):
datei = open(dateipfad)
text = datei.read()
verschiebe_index = verschiebe_index
text_ausgabe = []
for z in text.lower():
if z not in abc:
text_ausgabe.append(z)
else:
a = abc.index(z)
b = a + verschiebe_index
b = b % len(abc)
text_ausgabe.append(abc[b])
print ''.join(text_ausgabe)
datei.close()