Seite 1 von 1
Dechiffrierung mit Python
Verfasst: Donnerstag 15. November 2018, 20:53
von pleasehelp!
Hallo,
ich bin Schülerin und muss ein Entschlüsselungsprogramm schreiben (ohne den Schlüssel zu kennen). Also auf jeden Fall eine Häufigkeitsanalyse der im Text vorkommenden Buchstaben machen. Komme da schon nicht weiter, also kann mir da jemand helfen?
Vielen Dank schonmal
Re: Dechiffrierung mit Python
Verfasst: Donnerstag 15. November 2018, 21:58
von __deets__
Was hast du denn probiert ? Hausaufgaben fertig liefern tun wir hier aus Prinzip eigentlich nicht.
Re: Dechiffrierung mit Python
Verfasst: Donnerstag 15. November 2018, 21:58
von ThomasL
google mal nach "python text häufigkeitsanalyse", ich sehe da Links die dir helfen
Re: Dechiffrierung mit Python
Verfasst: Donnerstag 15. November 2018, 23:23
von __blackjack__
Ich werfe mal einen `collections.Counter` in den Raum.

Re: Dechiffrierung mit Python
Verfasst: Samstag 17. November 2018, 13:14
von pleasehelp!
Hey, also ja es ist ein Projekt, aber ich brauche die Hilfe bei der Häufigkritsanalyse, habe eine while schleife probiert und versuche ein dict um die anzahl der buchstaben zu speichern, allerdings klappt der zugriff darauf auch nicht.
Re: Dechiffrierung mit Python
Verfasst: Samstag 17. November 2018, 13:18
von pleasehelp!
Hey
also habe mal das grobe Gerüst kopiert, aber das mit dict.items() bringt auch eine Fehlermeldung... achso ich muss mit Phyton 3.2.5 programmieren, ich glaube da gibt es ja unterschiede zu anderen Versionen.
Code: Alles auswählen
buchstabe = {'A' : 0,"B" : 0,"C" : 0,"D" : 0,"E" : 0,"F" : 0,"G" : 0,"H" : 0,"I" : 0,"J" : 0,"K" : 0,"L" : 0,"M" : 0,"N" : 0,"O" : 0,"P" : 0,"Q" : 0,"R" : 0,"S" : 0,"T" : 0,"U" : 0,"V" : 0,"W" : 0,"X" : 0,"Y" : 0,"Z" : 0,"Ä" : 0,"Ö" : 0,"Ü" : 0,"!" : 0, "." : 0, "," : 0, " " : 0}
text = input("Texteingabe: ")
text.replace("ß", "!")
text.upper()
text = list(text)
a = 0
while a < len(text):
for buchstabe in dict.items():
if text[a] == buchstabe:
dict[buchstabe] = dict[buchstabe] + 1
a = a +1
Re: Dechiffrierung mit Python
Verfasst: Samstag 17. November 2018, 13:26
von pleasehelp!
ThomasL hat geschrieben: Donnerstag 15. November 2018, 21:58
google mal nach "python text häufigkeitsanalyse", ich sehe da Links die dir helfen
Habe leider noch nichts gefunden, dass ich verstehe, muss das später erklären könne und es muss nicht nur funktionieren...
Aber trotzdem danke!
Re: Dechiffrierung mit Python
Verfasst: Samstag 17. November 2018, 17:26
von Sirius3
Wenn eine Fehlermeldung kommt, wäre es gut, wenn Du auch sagst welche und wo (Traceback). Strings sind unveränderlich, replace oder upper liefert also als Ergebnis einen neuen String. Eine while-Schleife ist ziemlich umständlich, wenn man auch direkt mit einer for-Schleife über die Zeichen des Strings iterieren könnte. Ein Wörterbuch ist ja gerade dafür da, das man auf Schlüssel direkt zugreifen kann, da ist die for-Schleife über alle Elemente des Wörterbuchs nicht richtig.
Re: Dechiffrierung mit Python
Verfasst: Samstag 24. November 2018, 07:24
von pleasehelp!
Sirius3 hat geschrieben: Samstag 17. November 2018, 17:26
Wenn eine Fehlermeldung kommt, wäre es gut, wenn Du auch sagst welche und wo (Traceback). Strings sind unveränderlich, replace oder upper liefert also als Ergebnis einen neuen String. Eine while-Schleife ist ziemlich umständlich, wenn man auch direkt mit einer for-Schleife über die Zeichen des Strings iterieren könnte. Ein Wörterbuch ist ja gerade dafür da, das man auf Schlüssel direkt zugreifen kann, da ist die for-Schleife über alle Elemente des Wörterbuchs nicht richtig.
Danke, ich habe die Häufigkeitsanalyse hinbekommen, alleridngs fehlt mir jetzt noch wie ich alle Zeichen eines Textes zähle...
Re: Dechiffrierung mit Python
Verfasst: Samstag 24. November 2018, 08:31
von pleasehelp!
Hey, auch da habe ich mittlerweile Hilfe bekommen, danke für alles!
Re: Dechiffrierung mit Python
Verfasst: Samstag 24. November 2018, 10:37
von /me
Ein Hinweis noch (um die Antwort von Sirius3 mit Code zu versehen).
Das alleine tut gar nichts. Genauer gesagt: es nimmt den String der in text steht, erstellt daraus einen String in Großbuchstaben und gibt diesen zurück. Du ignorierst diesen Rückgabewert aber. text selber ändert sich durch den Aufruf der Funktion nicht. Wenn text nachher den String in Großbuchstaben haben soll, dann musst du den Rückgabewert zuweisen::
Für text.replace gilt das gleiche. Du bräuchtest daher
Code: Alles auswählen
text = text.replace("ß", "!")
text = text.upper()
# oder in einer Zeile
text = text.replace("ß", "!").upper()
Re: Dechiffrierung mit Python
Verfasst: Donnerstag 29. November 2018, 18:08
von pleasehelp!
@/me
Ok, dann weiß ich Bescheid.
Re: Dechiffrierung mit Python
Verfasst: Donnerstag 29. November 2018, 18:10
von pleasehelp!
Ich habe das ganze mal etwas gekürzt komme aber bei der Ersetzung der Buchstaben, durch die schon nach Häufigkeit Sortierten in einer Liste nicht weiter.
Habe mal was probiert, vielleicht hat jemand einen Tipp für mich.
Code: Alles auswählen
from operator import itemgetter
##Informationen für den weiteren Verlauf
anzahl = dict.fromkeys(string.ascii_uppercase + 'ßÄÖÜ', 0)
ersetzungh = ["E", "N", "I", "R", "S", "T", "A", "H", "D", "U", "L", "C", "G", "M", "O", "B", "W", "F", "K","Z", "V", "P", "Ü", "Ä", "ß", "Ö", "J", "Y", "X", "Q"]
##Informationseingabe des Benutzers
print("Herzlich Willkommen bei ihrem Entschlüsselungsprogramm.", "\n", "Bitte geben sie bei der folgenden Texteingabe ihren zu entschlüsselten Text ein.")
text = input("Texteingabe: ")
for character in text.upper():
if character in anzahl:
anzahl[character] += 1
daten = list(sorted(anzahl.items(), key=itemgetter(1), reverse=True))
print(daten)
##Ersetzung
a = 0
for richtig in ersetzungh:
for buchstabe in text:
if buchstabe == daten[a][0]:
buchstabe = richtig
a += 1
print(text)