Schleife für jedes Zeichen in einem string in Python decoder ring
Ich versuche eine einfache decoder-ring in Python.
Beispiel:
a=b, `b=c, c=d, etc.
Ich will das Skript, um eine codierte Nachricht und die Ausgabe der dekodierten Nachricht.
Ich zum Beispiel würde die Eingabe "ifmmp"
und es ausgeben würde "hello"
.
Habe ich mir überlegt, ich brauche split alle Zeichen und Schleife durch Sie und ändern Sie Ihre chr()
oder ord()
Werte.
Scheint es nicht zu sein, keine Dokumentation für dieses in python.
- Welche Unterlagen genau meinst du fehlt?
for
loops dokumentiert sind, sindchr()
undord()
. Denken Sie daran, dass strings unveränderlich sind, so dass Sie nicht ändern Sie einfach eine Zeichenfolge in eine andere, die Sie haben, um eine völlig neue string mit dem neuen Wert. Auch, es sei denn, das ist Hausaufgaben, wie eine einfache for-Schleife, die Sie wahrscheinlich wollen, um zu vergessen Schleifen vollständig und rufenstring.translate()
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa:
Natürlich, dies ist nur der Umgang mit kleinen Buchstaben, nicht Kapital.
new_s += chr(n)
erstellt eine neue Zeichenfolge, die für jedes Zeichen von s ist. Wenn der text ist 10000 lang, Sie sehen die unnütze Arbeit... Eine große Mangel ist, dass Großbuchstaben behandelt werden, in der Tat, wie alle Charaktere, die eine ord() < 97, ist zu sagen, Ziffern, Großbuchstaben, Zeichen !"#$%'()*+,-./:;<=>?@[]^_` und \t \r \n und andere... Mehr in der edit meiner AntwortVergessen Schleifen, Wann immer möglich, verwenden Sie die integrierten Funktionen in Python:
maketrans
ist eine statische Funktion derbytes
undbytearrays
in Python 3 stackoverflow.com/questions/3031045/...Ergebnis
.
Bearbeiten
Ich schrieb den Algorithmus von Joachim (Funktion besser()) und ich schrieb meine eigene Lösung nicht mit maketrans() ( yop() ) :
Ergebnis
Jedoch meine Funktion yop() ist langsamer als die Funktion besser()
.
Bearbeiten
Nun die Funktion better_yop() hat eine Geschwindigkeit entspricht der Geschwindigkeit des besser()
Allerdings besser() scheint etwas schneller als better_yop(). Da ist es auch einfacher, besser() ist die beste
Ich würde empfehlen, den decoder ring ein Wörterbuch. Dann öffnen Sie die input-Datei für das Lesen, Lesen Sie die Datei in einer Schleife durch ein Zeichen in einer Zeit, und verwenden Sie das Wörterbuch zu übersetzen, um eine Ausgabe-string. Schließlich schreiben Sie, dass die Zeichenfolge in eine Datei.