Hallo, hat jemand von euch den Quelltext für Caesar?
also zum Verschlüsseln und Entschlüsseln
Vielen Dank im Voraus
Caesar-Verschlüsselung
Zeig doch mal, was du bis jetzt hast. Lies dir mal den Thread "an alle Informatikstudenten" durch, damit du weisst, warum wir dir hier nicht sofort die Lösung präsentieren.singstar hat geschrieben:zeig mal den Quelltext bitte, ich bin noch nich so gut in Python
Es geht übrigens in einer Zeile, das ist aber schon für fortgeschrittene.
ROT-13?
wie hoch sind denn die Anforderungen an den erbrachten Aufwand?
Reichen 17 Zeichen schon? Der Aufruf einer der Methoden eines Strings?
wie hoch sind denn die Anforderungen an den erbrachten Aufwand?
Reichen 17 Zeichen schon? Der Aufruf einer der Methoden eines Strings?
Ne invoces expellere non possis
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
Es geht auch in 16 Zeichen, aber
Code: Alles auswählen
In [57]: "Dafuer gibt's bestimmt keine Eins.".encode('rot13')
Out[57]: "Qnshre tvog'f orfgvzzg xrvar Rvaf."
ich hab eine Oberfläche mit einem Button "Verschlüsseln" und ich hab einen
Entry, wo der Text steht, der verschlüsselt werden soll
Das ist mein Quelltext
aber auf meiner Oberfläche wird der Text nich verschlüsselt
Entry, wo der Text steht, der verschlüsselt werden soll
Das ist mein Quelltext
aber auf meiner Oberfläche wird der Text nich verschlüsselt
Code: Alles auswählen
def caesar_code (self, orginal):
s = "c" #3 Verschiebungen von c aus
for i in range (0, len (orginal)):
if orginal [i] == "\n" or orginal [i] == " " : s = s + orginal [i]
else :
x = ((ord (orginal [i]) - ord ('C')) + self.schub) % 26 + ord ('A')#Verschiebung um 1(2.Buchstabe)
s = s + chr (x) #Alphabetreihenfolge
return s
An dem Quelltext sieht man jetzt nicht wie Du die Methode benutzt. Schreib die Verschlüsselung am besten als eigene Funktion, welche die Zeichenkette und den Schlüssel (Wert für Verschiebung) als Argumente bekommt. Dann kannst Du die Funktion unabhängig von der GUI testen.singstar hat geschrieben:Das ist mein Quelltext aber auf meiner Oberfläche wird der Text nich verschlüsselt
Der Quelltext ist sehr unübersichtlich formatiert. Versuch am besten Dich an die Empfehlungen in PEP 8 zu halten.Code: Alles auswählen
def caesar_code (self, orginal): s = "c" #3 Verschiebungen von c aus for i in range (0, len (orginal)): if orginal [i] == "\n" or orginal [i] == " " : s = s + orginal [i] else : x = ((ord (orginal [i]) - ord ('C')) + self.schub) % 26 + ord ('A')#Verschiebung um 1(2.Buchstabe) s = s + chr (x) #Alphabetreihenfolge return s
Im wesentlichen: Einrücken mit 4 Leerzeichen pro Ebene. Leerzeichen um binäre Operatoren aber keine zwischen Namen und Indexzugriffen oder Argumenten für Funktionen. Zeilenlänge nicht grösser als 80 Zeichen. Für Blöcke eine neue Zeile anfangen, auch wenn es sich nur um eine Anweisung handelt.
Man kann in Python direkt über die Elemente von Listen iterieren und muss das nicht über einen Index lösen. Also:
Code: Alles auswählen
for i in xrange(0, len(text)):
do_something_with(text[i])
# =>
for character in text:
do_something_with(character)
Das liegt aber wohl eher daran, dass du vergisst, den Chiffretext anzuzeigen.singstar hat geschrieben:ich hab eine Oberfläche mit einem Button "Verschlüsseln" und ich hab einen
Entry, wo der Text steht, der verschlüsselt werden soll
Das ist mein Quelltext
aber auf meiner Oberfläche wird der Text nich verschlüsselt.
Dein Code funktioniert nämlich, soll heißen, er gibt Buchstabensalat aus, wenn man in auf Klartext anwendet (nachdem das self.schub in Z 7 durch eine Zahl ersetzt hat).
Allerdings habe ich nicht geprüft, ob das wirklich eine Cäsar-Chiffre ist, dazu bin ich jetzt zu faul
Ansonsten bitte an PEP 8 halten. Das macht das Ganze lesbarer...
zu PEP8: Bitte ganz besonders die Leerzeichen vor den runden bzw. eckigen Klammern von Funktionsaufrufen bzw. Listen/Dicts weglassen.
Code: Alles auswählen
s = s + chr(65)
# lässt sich weitaus kürzer schreiben als
s += chr(65)
# analog gibt es für die anderen
# arithmetischen ("Rechen-")Operatoren
# die Kurzschreibweisen -=, *= und /=
# ----------------------
if orginal[i] == "\n" or orginal[i] == " ":
# lässt sich deutlich verkürzen (besonders für mehr als zwei Einträge) zu
if original[i] in ("\n", " "): # verwendet ein Tupel wie (1, 2), eine Liste [1, 2] geht natürlich auch
# oder speziell bei Strings sogar zu:
if original[i] in "\n ":