Cäsar-Chiffre

Bei der Cäsar-Verschlüsselung wird jeder Buchstabe einer Nachricht einfach immer um eine bestimmte Entfernung k nach rechts „verschoben“. Ist z. B. k = 3, so würde aus dem Wort „CAESAR“ das Wort „FDHVDU“ werden, da C zu F wird, A zu D und immer so weiter. Es wird also gewissermaßen auf jeden Buchstaben eine Zahl k „addiert“. Dabei handelt es sich um eine zyklische Addition. Das heisst, dass man wieder bei A beginnt, wenn man über den Buchstaben Z hinauskommt.

Um einen so verschlüsselten Geheimtext zu entschlüsseln, wendet man dasselbe Verfahren an, nur dass man nicht k addiert, sondern k subtrahiert (im Spezialfall k = 13 erhält man so das ROT13-Verfahren, bei es egal ist, ob man addiert oder subtrahiert).

Schreibe eine Funktion, die ein mit dem Cäsar-Verfahren verschlüsseltes Wort wieder entschlüsselt und das entschlüsselte Wort zurückgibt. Das verschlüsselte Wort wird als Parameter s in die Funktion übergeben, der zur Verschlüsselung verwendete Wert k ebenfalls.

Hinweise: Das Argument, das in s übergeben wird, enthält ausschließlich Großbuchstaben von A bis Z (es enthält keine Leerzeichen oder sonstigen Sonderzeichen). Für den Wert k gilt: 0 < k < 26.


Beispiel

Eingabe:

k = 3
s = "WRSVHFUHW"

Ausgabe:

"TOPSECRET"

Erklärung: Alle Buchstaben werden um 3 Positionen im Alphabet nach links verschoben (da wir entschlüsseln) und so entsteht das Lösungswort.


Falls du Probleme hast, diese Aufgabe zu lösen, kannst du dir einen Hinweis geben lassen:

1. Hinweis anzeigen

Für diese Aufgabe musst du Zeichen in Zahlen umwandeln können und andersherum. Dafür gibt es Unicode, und in unserem Fall reicht sogar der deutlich einfachere ASCII-Code.

2. Hinweis anzeigen

Um ein Zeichen in eine Zahl umzuwandeln, kannst du in Python die ord()-Funktion verwenden. Die Umwandlung in die andere Richtung erfolgt mit chr().

Lass dir vielleicht erst einmal die ASCII-Codes aller Zeichen in s ausgeben und überlege, was dann der nächste Schritt wäre:

for c in s:
    print(c, ord(c))
class Task:
    def decode_caesar(self, s, k):
        # Ersetze 'pass' durch deine Lösung
        pass
Impressum und Datenschutz