Re: Caesar-Verschlüsselung
Verfasst: Freitag 17. September 2010, 20:53
`text.lower()` gibt eine Kopie des Strings wieder. Und es ist sehr unperformant bei jedem Buchstaben von neuem zu zählen. Anbieten würde sich da ein defaultdict.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
from string import ascii_lowercase as abc
s = "Das ist ein Test, ob es klappt"
print max(zip(map(s.lower().count,abc),abc))[1]
.Den am häufigsten Buchstaben als "e" zu identifizieren dürfte in der Regel wohl nicht ausreichen
darauf wär ich nicht gekommen, is cool und echt gut, ich galube ich habs soweit auch verstanden was du da treibst.print max(zip(map(s.lower().count,abc),abc))[1]
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()