Cäsar-Chiffre¶
Foto von Christian Lendl auf unsplash.com
In diesem Kapitel lernst du:¶
Bereich |
Thema |
|---|---|
🚀 |
Text ver- und entschlüsseln |
⚙ |
Positionen in Strings indizieren |
⚙ |
über Strings iterieren |
💡 |
die Methode |
🔀 |
strings zu verbinden |
🔀 |
einen Index für zwei Strings verwenden |
🐞 |
Indexfehler beheben |
Aufgabe 1: Cäsar-Chiffre¶
Führe folgenden Code aus, der die Cäsar-Chiffre ausgibt:
klartext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
verschluesselt = "DEFGHIJKLMNOPQRSTUVWXYZABC "
for i in range(26):
print(klartext[i], " -> ", verschluesselt[i])
Erkläre was der Code tut.
Aufgabe 2: String-Methoden¶
Erkläre was die Ausdrücke mit dem Text in der Mitte tun.
Aufgabe 3: Über Strings iterieren¶
Das folgende Programm sollte die Positionen jedes Programms im Alphabet ausgeben.
Vervollständige es durch Einsetzen von buchstabe, text, alphabet und position:
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
text = "MEINE GEHEIMBOTSCHAFT"
for buchstabe in ___:
position = ___.find(___)
print(buchstabe, "ist in Position", ___)
Warum ist das Leerzeichen am Ende von alphabet wichtig?
Aufgabe 4: Strings verbinden?¶
Erkläre folgenden Code:
chiffre = "DEFGHIJKLMNOPQRSTUVWXYZABC "
s = ""
s += chiffre[4]
s += chiffre[1]
s += chiffre[8]
s += chiffre[8]
s += chiffre[11]
print(s)
Aufgabe 5: Verschlüsseln¶
Schreibe ein Programm, welches:
ein Klartext-Alphabet und ein verschlüsseltes Alphabe als Strings mit 26 Zeichen + Leerzeichen definiert
eine Nachricht von der Tastatur einliest
einen leeren String als Ergebnis definiert
über jedes Zeichen der Nachricht iteriert
die Position des Zeichens im Klartext-Alphabet findet
die selbe Position im verschlüsselten Alphabet nachschlägt
alle verschlüsselten Zeichen an das Ergebnis anhängt
am Ende das Ergebnis ausgibt
Hinweis
Du solltest nach jedem dieser Schritte in der Lage sein, das Programm auszuführen und zu prüfen was es schon kann.
Aufgabe 6¶
Erkläre warum dieser Code das gleiche wie in Aufgabe 1 tut:
klartext = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(26):
print(klartext[i], " -> ", klartext[(i + 3) % 26])
Kannst du dieses Muster verwenden, um das Verschlüsselungsprogramm zu vereinfachen?
Hinweis
Falls du nicht sicher bist was überhaupt passiert, gib den Wert von i in der Schleife aus.
Aufgabe 7¶
Schreibe ein Programm, um den Text wieder zu entschlüsseln.
Hinweis
Kannst du irgendwie dafür sorgen daß der Eingabestring nur aus Grossbuchstaben besteht?
Reflexionsfragen¶
was passiert wenn hinter einer Stringvariablen eckige Klammern stehen?
wie kannst du über alle Zeichen eines Strings iterieren?
was tut die Methode
str.find()?wie kannst du Zeichen zu einem String hinzufügen?