Caesar-Verschlüsselung
`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.
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Den am häufigsten Buchstaben als "e" zu identifizieren dürfte in der Regel wohl nicht ausreichen.
Abgesehen davon werden in der Funktion einlesen() auch zwei Dinge vermischt, die eigentlich nichts miteinander zu tun haben. Das Ermitteln des am häufigsten vorkommenden Buchstabens hat mit dem Einlesen der Datei nichts zu tun.
Die Ermittlung des häufigsten Buchstabens lässt sich gut auch in 1 Zeile lösen. Eine Möglichkeit wäre diese:
Sollten mehrere Buchstaben mit gleicher Häufigkeit vorkommen, würde so nur der im Alphabet am weitesten hinten stehende zurückgeliefert.
Abgesehen davon werden in der Funktion einlesen() auch zwei Dinge vermischt, die eigentlich nichts miteinander zu tun haben. Das Ermitteln des am häufigsten vorkommenden Buchstabens hat mit dem Einlesen der Datei nichts zu tun.
Die Ermittlung des häufigsten Buchstabens lässt sich gut auch in 1 Zeile lösen. Eine Möglichkeit wäre diese:
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
Bei meinen Testobjekten hats bis jetzt immer funktioniert, was könnt ich denn noch mit einbauen?
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]
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()