Einführung
In diesem Projekt lernst du, wie du das Polybius-Quadrat-Verschlüsselungsalgorithmus implementierst. Das Polybius-Quadrat ist ein 5x5-Gitter, das jedem Buchstaben des englischen Alphabets eine Koordinaten-Paar 指定。Indem du Text mit dieser Methode verschlüsselst, kannst du eine codierte Nachricht erstellen, die nur von jemandem entschlüsselt werden kann, der Kenntnisse über das Polybius-Quadrat hat.
👀 Vorschau
## Beispiel 1
text = "tynam"; verschlüsselter_text = "4454331132"
## Beispiel 2
text = "tynam123"; verschlüsselter_text = "4454331132123"
## Beispiel 3
text = "TYnam"; verschlüsselter_text = "4454331132"
## Beispiel 4
text = None; verschlüsselter_text = None
🎯 Aufgaben
In diesem Projekt wirst du lernen:
- Wie du das Polybius-Quadrat definierst
- Wie du Leerzeichen entfernt und Text in Kleinbuchstaben umwandelst
- Wie du leere oder
None-Eingaben behandelst - Wie du Text mit dem Polybius-Quadrat verschlüsselst
- Wie du den verschlüsselten Text zurückgibst
🏆 Errungenschaften
Nach Abschluss dieses Projekts wirst du in der Lage sein:
- Den Begriff des Polybius-Quadrat-Verschlüsselungsalgorithmus zu verstehen
- Den Polybius-Verschlüsselungsalgorithmus in Python zu implementieren
- Text mit dem Polybius-Quadrat zu verschlüsseln und zu entschlüsseln
- Verschiedene Eingabeszenarien zu behandeln, einschließlich leerer oder
None-Eingaben
Leerzeichen entfernen und in Kleinbuchstaben umwandeln
In diesem Schritt lernst du, wie du den Eingabetext für die Verschlüsselung vorbereitest, indem du Leerzeichen entfernt und alle Zeichen in Kleinbuchstaben umwandelst.
- Öffne die Datei
polybius.pyin deinem Code-Editor. - Füge den folgenden Code zur Funktion
polybius_encryption()hinzu:
## Leerzeichen entfernen und in Kleinbuchstaben umwandeln
text = text.replace(" ", "").lower()
Dies entfernt alle Leerzeichen im Eingabetext und wandelt alle Zeichen in Kleinbuchstaben um.
Leere oder None-Eingaben behandeln
In diesem Schritt lernst du, wie du den Fall behandelst, dass der Eingabetext leer oder None ist.
- Füge den folgenden Code am Anfang der Funktion
polybius_encryption()hinzu:
if text is None:
return None
if text == "":
return None
Dies stellt sicher, dass die Funktion None zurückgibt, wenn der Eingabetext None oder eine leere Zeichenkette ist.
- Nachdem du diesen Schritt abgeschlossen hast, ist der Code wie folgt:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Leerzeichen entfernen und in Kleinbuchstaben umwandeln
text = text.replace(" ", "").lower()
if text == "":
return None
Das Polybius-Quadrat einrichten
In diesem Schritt lernst du, wie du das Polybius-Quadrat definierst, das ein 5x5-Gitter ist, das die 26 Buchstaben des englischen Alphabets enthält.
- Nach den vorherigen Schritten definiere das Polybius-Quadrat als Liste von Listen, wobei jede innere Liste eine Zeile des Quadrats darstellt:
polybius_square = [
["a", "b", "c", "d", "e"],
["f", "g", "h", "ij", "k"],
["l", "m", "n", "o", "p"],
["q", "r", "s", "t", "u"],
["v", "w", "x", "y", "z"],
]
Dieses Polybius-Quadrat wird verwendet, um die Buchstaben im Eingabetext auf ihre entsprechenden Koordinaten abzubilden.
Den Text verschlüsseln
In diesem Schritt lernst du, wie du den Eingabetext mit dem Polybius-Quadrat verschlüsselst.
- Nach den vorherigen Schritten füge den folgenden Code zur Funktion
polybius_encryption()hinzu:
encrypted_text = ""
for char in text:
if char.isalpha():
for i, row in enumerate(polybius_square):
for j, ch in enumerate(row):
if char in ch:
encrypted_text += str(i + 1) + str(j + 1)
else:
encrypted_text += char
Dieser Code iteriert über jedes Zeichen im Eingabetext. Wenn das Zeichen ein Buchstabe ist, findet er die entsprechenden Koordinaten im Polybius-Quadrat und fügt sie zur Zeichenkette encrypted_text hinzu. Wenn das Zeichen kein Buchstabe ist, wird es unverändert zur Zeichenkette encrypted_text hinzugefügt.
Den verschlüsselten Text zurückgeben
In diesem letzten Schritt lernst du, wie du den verschlüsselten Text aus der Funktion polybius_encryption() zurückgibst.
- Füge die folgende Zeile am Ende der Funktion
polybius_encryption()hinzu:
return encrypted_text
Dies wird den verschlüsselten Text als Ausgabe der Funktion zurückgeben.
Jetzt sollte die vollständige Funktion polybius_encryption() so aussehen:
def polybius_encryption(text: str) -> str:
if text is None:
return None
## Leerzeichen entfernen und in Kleinbuchstaben umwandeln
text = text.replace(" ", "").lower()
if text == "":
return None
## Das Polybius-Quadrat definieren
polybius_square = [
["a", "b", "c", "d", "e"],
["f", "g", "h", "ij", "k"],
["l", "m", "n", "o", "p"],
["q", "r", "s", "t", "u"],
["v", "w", "x", "y", "z"],
]
encrypted_text = ""
for char in text:
if char.isalpha():
for i, row in enumerate(polybius_square):
for j, ch in enumerate(row):
if char in ch:
encrypted_text += str(i + 1) + str(j + 1)
else:
encrypted_text += char
return encrypted_text
if __name__ == "__main__":
txt = input()
print(polybius_encryption(txt))
Du hast jetzt die Implementierung des Polybius-Verschlüsselungsalgorithmus abgeschlossen. Du kannst deinen Code testen, indem du die Datei polybius.py ausführst und einen Eingabetext zum Verschlüsseln angibst.
- Führe die Datei
polybius.pyaus und gib einen Eingabetext zum Verschlüsseln an.
python3 polybius.py
- Betrachte die Ausgabe des verschlüsselten Texts.
## Beispiel 1
text = "tynam"; encryption_text = "4454331132"
## Beispiel 2
text = "tynam123"; encryption_text = "4454331132123"
## Beispiel 3
text = "TYnam"; encryption_text = "4454331132"
## Beispiel 4
text = None; encryption_text = None
Herzlichen Glückwunsch! Du hast den Polybius-Verschlüsselungsalgorithmus erfolgreich in Python implementiert.
Zusammenfassung
Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.



