Hallo, alle miteinander,
Ich habe folgende Aufgabe gestellt bekommen:
Sie und Ihr bester Freund/Ihre beste Freundin möchten den Inhalt Ihrer Nachrichten (auf den ersten Blick) unlesbar machen. Um dies zu erreichen, haben Sie sich folgendes Verfahren ausgedacht. Jeden Morgen sehen Sie sich und einigen sich auf eine Zahl (ein Integer). Sie verwenden die ASCII-Tabelle (siehe unten) und verschieben jedes Zeichen Ihrer Nachricht um die vereinbarte Zahl. Allerdings beschränken Sie sich nur auf die Zeichen der Tabelle zwischen (*beide Randwerte eingeschlossen*) den Indizes *33* und *126*.
**Aufgabe:** Schreiben Sie eine Funktion, die den ursprünglichen Satz und die Zahl, auf die Sie sich geeinigt haben, als Argumente nimmt. Die Funktion soll diesen Satz "verschlüsseln", indem sie jedes Zeichen um die angegebene Zahl verschiebt. Dabei bezieht sich das Verschieben auf den entsprechenden Index eines Zeichens in der ASCII Tabelle. Der Rückgabewert Ihrer Funktion ist der "verschlüsselte" Satz (ein String). *Sie können davon ausgehen, dass alle Sätze nur Symbole enthalten, die in der unten stehenden ASCII-Tabelle enthalten sind.*
Wie bereits erwähnt, basiert die Kodierung auf der ASCII-Tabelle und ist auf die Zeichen zwischen Index 33 ('!') und Index 126 ('~') beschränkt. Die Verschiebung des Zeichens 'y' um 10 ergibt zum Beispiel '%'. **Alle Zeichen, die nicht in diesem Bereich enthalten sind (z. B. Leerzeichen), sollen unverändert in den neuen Satz übernommen werden.**
Pythons eingebaute Funktionen [`ord()`](https://www.geeksforgeeks.org/ord-function-python/) und [`chr()`](https://www.geeksforgeeks.org/chr-in-python/) sind sehr hilfreich bei der Umwandlung von Zeichen in die entsprechenden (ASCII) Dezimalzahlen (Indices) und umgekehrt. Sie können und sollen diese Funktionen verwenden, um diese Aufgabe zu lösen!
Folgendes habe ich dann versucht:
code = input("Code: ")
shift = int(input("Verschiebungsfaktor: "))
encoded = "".join(chr((ord(char) + shift) %
print("Verschlüsselter Code:", encoded)
Ich bekomme dann folgende Fehlermeldung:
File "C:\Users\Andie La Seule\PycharmProjects\testProjekt\main.py", line 5
^
SyntaxError: unexpected EOF while parsing
Process finished with exit code 1
Was mache ich falsch?
Viele Grüße von einer absoluten Anfängerin
Verschlüsselung / Geheimsprache
Okay.... Ist der Punkt der Fehler?
Ich möchte eine Funktion schreiben, die unter bestimmten Vorgaben, Text verschlüsselt und auch wieder entschlüsselt. Ich weiß einfach nicht, wie ich das machen soll. Völliges Blackout.
Aber lieben Dank für Deine Antwort....
Ich möchte eine Funktion schreiben, die unter bestimmten Vorgaben, Text verschlüsselt und auch wieder entschlüsselt. Ich weiß einfach nicht, wie ich das machen soll. Völliges Blackout.
Aber lieben Dank für Deine Antwort....
- pillmuncher
- User
- Beiträge: 1484
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
@: Wenn du eine Klammer aufmachst, musst du sie auch wieder schließen. Insbesondere bedeutet das, dass die Anzahl der schließenden Klammern gleich der öffnenden sein muss.
In specifications, Murphy's Law supersedes Ohm's.
Okay....alles klar. Danke. Mal sehen, wie ich da weiter kommepillmuncher hat geschrieben: ↑Dienstag 30. November 2021, 17:48 @: Wenn du eine Klammer aufmachst, musst du sie auch wieder schließen. Insbesondere bedeutet das, dass die Anzahl der schließenden Klammern gleich der öffnenden sein muss.
In der Zeile "encoded" fehlte das Durchlaufen der einzelnen Buchstaben der zu verschlüsselnden Nachricht:
Nach Aufgabenstellung bildet "y" bei Verschiebung um 10 auf "%" ab; Erhält man einen Index der größer als 126 ist, sollte man somit wieder am Anfang des Bereichs 33 anfangen nach dem richtigen Zeichen zu suchen.
Als Denkanstoß ist hier die Division mit Rest, in Python der Operator mod, zu nennen.
Code: Alles auswählen
msg = input("Code: ")
shift = int(input("Verschiebungsfaktor: "))
encoded = ''.join([chr(ord(char)+shift) for char in msg])
print("Verschlüsselter Code:", encoded)
Als Denkanstoß ist hier die Division mit Rest, in Python der Operator mod, zu nennen.