ich habe ein Programm geschrieben zur Dechiffrierung eines Programmes, ich bin neu auf dem Gebiet und entschuldige umständliche Lösungen, aber anders ist es oft schwierig für mich. Also das Problem liegt momentan darin, dass ich bei der Funktion ersetzeneu die Liste ersetzen verändern möchte, allerdings bekomme ich immer den Text der vorherigen dechiffrierung ausgegeben.
Bei Vereinfachungsmöglichkeiten oder Lösungsansätzen kleinster Art bin ich für jede Antwort dankbar.
Code: Alles auswählen
##Informationen für das Programm
from operator import itemgetter
import string
import time
anzahl = dict.fromkeys(string.ascii_uppercase + 'ßÄÖÜ', 0) #alphabet erstellen in dict
ersetzungh = ["e", "n", "d", "i", "a", "s", "r", "h", "t", "u", "l", "c", "g", "m", "o", "b", "w", "f", "k","z", "v", "p", "ü", "ä", "ß", "ö", "j", "y", "x", "q"]
#Definitionen
def liste(daten,index):
neu = []
x = 0
while x < len(daten):
neu.append(daten[x][index])
x += 1
print (neu)
return neu
def übersetzen(datei):
for buchstabe in datei:
a = 0
for buchstaberi in neu:
if buchstabe == buchstaberi:
datei = datei.replace(buchstabe, ersetzungh[a])
break
a += 1
print(datei)
return datei
def ersetzenneu():
global text
global ersetzen
eingabebeendet = 0
while eingabebeendet == 0:
prüfung1 = []
prüfung2 = []
pbeendet = 0
while pbeendet == 0:
s = input("chiffrat: ").upper()
z = input("neues dechiffrat: ").lower()
prüfung1.append(s)
prüfung2.append(z)
i = 0
while i < len(ersetzen):
if s == ersetzen[i][0]:
ersetzen[i][1] = z
break
i += 1
y = len(prüfung2) - 1
if prüfung1[0] != prüfung2[y].upper():
print("Jetzt bitte", z, "ersetzen!")
pbeendet = 0
elif prüfung1[0] == prüfung2[y].upper():
pbeendet = 1
print (ersetzen)
suche = liste(ersetzen, 0)
neuneu = liste(ersetzen, 1)
print(suche, neuneu)
abfragebeendet = 0
while abfragebeendet == 0:
Eingabe = input("Ist die Übersetzungstabelle so richtig? Ja oder Nein? ")
Eingabe = Eingabe.upper()
print ("\n")
if Eingabe == "NEIN":
eingabebeendet = 0
abfragebeendet = 1
elif Eingabe == "JA":
print("Ihr Text wird nun neu übersetzt.", "\n")
time.sleep(0.5)
for buchstabe in text:
a = 0
for buchstaberi in suche:
if buchstabe == buchstaberi:
text = text.replace(buchstabe, neuneu[a])
break
a += 1
print(text)
eingabebeendet = 1
abfragebeendet = 1
else:
print ("\n", "Ihre Eingabe ist leider ungültig. Deshalb erneut die Frage:")
abfragbeendet = 0
print(ersetzen)
return text, ersetzen, neuneu
##Informationseingabe des Benutzers
print("Herzlich Willkommen bei ihrem Entschlüsselungsprogramm.", "\n", "Bitte geben sie bei der folgenden Texteingabe ihren Dateinamen ein.")
x = input("Texteingabe: ")
text = open(x).read()
print(text)
##Formatieren und zählen
for character in text.upper():
if character in anzahl:
anzahl[character] += 1
daten = list(sorted(anzahl.items(), key=itemgetter(1), reverse=True)) #liste mit unterliste erstellen; sortiert nach der zahl; abfallend
print(daten)
##Ersetzung
#Ersetzungstabelle erstellen
neu = liste(daten, 0)
text = text.upper()
ersetzen = []
b = 0
for wert in neu:
ersetzen.append([wert, ersetzungh[b]])
b += 1
print(ersetzen)
#ersetzen
übersetzen(text)
#Prüfung auf Richtigkeit
abfragebeendet = 0
while abfragebeendet == 0:
Eingabe = input("Möchtest du etwas an der Übersetzung ändern? Ja oder Nein?")
Eingabe = Eingabe.upper()
print ("\n")
if Eingabe == "NEIN":
print("Ihr dechiffrierter Text: ", "\n", text)
abfragebeendet = 1
elif Eingabe == "JA":
ersetzenneu()
print(text)
abfragebeendet = 1
else:
print ("\n", "Ihre Eingabe ist leider ungültig. Ja oder nein:")
abfragbeendet = 0