Polybius-Quadrat-Verschlüsselung in Python

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/strings -.-> lab-302701{{"Polybius-Quadrat-Verschlüsselung in Python"}} python/conditional_statements -.-> lab-302701{{"Polybius-Quadrat-Verschlüsselung in Python"}} python/for_loops -.-> lab-302701{{"Polybius-Quadrat-Verschlüsselung in Python"}} python/lists -.-> lab-302701{{"Polybius-Quadrat-Verschlüsselung in Python"}} python/function_definition -.-> lab-302701{{"Polybius-Quadrat-Verschlüsselung in Python"}} python/data_collections -.-> lab-302701{{"Polybius-Quadrat-Verschlüsselung in Python"}} end

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.

  1. Öffne die Datei polybius.py in deinem Code-Editor.
  2. 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.

  1. 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.

  1. 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.

  1. 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.

Text verschlüsseln

In diesem Schritt lernst du, wie du den Eingabetext mit dem Polybius-Quadrat verschlüsselst.

  1. 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.

  1. 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.

  1. Führe die Datei polybius.py aus und gib einen Eingabetext zum Verschlüsseln an.
python3 polybius.py
  1. 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.

✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.