Was ist bei dem Python-Code falsch?


19.07.2022, 14:52

Ich habe noch eine Ergänzung hinzugefügt.

https://pastebin.com/jspfrr9V

Ich denke, dass ein Fehler daran lag, dass die Rotoren nicht geupdated wurden.

schnfz  19.07.2022, 14:09

Was, genau, funktioniert nicht wie erwartet, und genau wie?

Hanibal545 
Fragesteller
 19.07.2022, 14:11

Das Programm sollte eigendlich die Nachricht Verschlüsseln/Entschlüsseln, aber da kommt nur "Unsinn" raus

schnfz  19.07.2022, 14:14

Hast du das überhaupt selbst geschrieben? Wenn ja: man schreibt nicht 70 Zeilen Code und testet danach erstmalig. Welche Teile funktionieren wie erwartet, welche nicht?

Hanibal545 
Fragesteller
 19.07.2022, 15:52

Ja. Ich habe den Code selbst geschrieben.Der Code an sich funktioniert ja auch (kein Fehler).Wenn ich es ausprobiere kommt nur "Unsinn" raus, was ich nicht mehr entschlüsseln kann.

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet
temp = rotor_1[i]

Sollte das nicht eher

temp = rotor_1[message[i]]

lauten?

Und bei "encrypt" dasselbe?

Außerdem: Wenn du das Alphabet beim Verschlüsseln verschiebst, dann hast du beim Entschlüsseln das verschobene Alpühabet und arbeitest mit dem. Da geht natürlich Zeug kaputt.

Am besten Testest du dich selbst mal durch dein Programm durch, gibst dir Zwischenausgaben aus und rechnest das ganze anhand eines Beispieles von Hand durch.

Hanibal545 
Fragesteller
 19.07.2022, 14:33

Ich habe das

temp = rotor_1[message[i]]

umgangen, da ich die Nachricht mit den Buchstaben mit einer For-Schleife durchlaufe.

    for i in message[1:]:

Das zweite problem, welches du ansprichst habe ich schon mit der Funktion

alphabet, rotor_1, rotor_2 = dafault()

gelöst. Die finktion default() resettet nämlich alle Listen/Dictionaries.

Dein 3. Vorschlag habe ich auch gemacht, aber ich habe dort nicht gesehen, wo der Fehler liegt. (ich habe 2 Mal den gleichen Buchstaben in die Nachricht getan, aber dort kommt auch 2 Mal den gleichen Buchstaben raus, was eigentlich nicht sein kann, da sich das Alphabet nach jedem Buchstabe immer rotiert.

1
Destranix  19.07.2022, 14:37
@Hanibal545
da ich die Nachricht mit den Buchstaben mit einer For-Schleife durchlaufe.

Stimmt, ja. Ist etwas verwirrend, da es davor anders gemacht wird und 'i' in der Regel einem Zahlenindex entspricht.

gelöst. Die finktion default() resettet nämlich alle Listen/Dictionaries.

Hm, okay.

ich habe 2 Mal den gleichen Buchstaben in die Nachricht getan, aber dort kommt auch 2 Mal den gleichen Buchstaben raus, was eigentlich nicht sein kann, da sich das Alphabet nach jedem Buchstabe immer rotiert.

Dann gib dir doch einmal dein Alphabet jeweils und schau, ob sich das tatsächlich rotiert.
Ist ja schon ein guter Ansatz, du kannst dir ja prinzipiell für jeden Schritt des encrypt einmal relevante Variablen printen lassen.

2