Seite 1 von 1
kleine Frage zu Slicings
Verfasst: Samstag 24. Mai 2008, 17:16
von Evil4President
Hi Leute!
Ich habe in meinem Chiffrier-Algorithmus nun zusätzlich noch eingebaut, dass der verschobene Text durch Slicings in sich versetzt wird. Allerdings ist die Ausgabe etwas unschick, da er an der "Nahtstelle" der beiden Slicings einen Zeilenumbruch einfügt

Hat jemand eine Idee, wie man diesen verhindern kann?
Hier mal der Code:
Code: Alles auswählen
textneu=list (geheim)
chiffriert_v=textneu[zahl:]+textneu[:zahl]
chiffriert=''
for i in chiffriert_v:
chiffriert += i
return chiffriert
Die Variable "geheim" ist der bereits verschobene Text aus einem vorhergehenden Algorithmus.
So sieht eine Reihe aus, in der man zum Beispiel das Wort "hallo" mit einer Verschiebung um 3 verschlüsselt:
hallo -> kdoor -> or \n kdo ( das \n steht hier für den Zeilenumbruch, wie ihr euch wrschl denken könnt

)
Hoffe, mir kann jemand helfen.
MFG evil4president
Verfasst: Samstag 24. Mai 2008, 17:28
von Leonidas
Am Ende deines eingabetextes wird wohl ein Zeilenumbruch sein, wenn du die Strings zerteils und wieder zusammensetzt ist der logischerweise dann irgendwo mittendrin.
Verfasst: Samstag 24. Mai 2008, 17:34
von Evil4President
Hatte ich mir auch überlegt. Jedoch gebe ich keinen Zeilenumbruch mit ein durch Return oder Ähnliches. Wenn ich mit .get('0.0',END) das Textfeld auslese... liest er dann bis zu der Stelle aus, an der das letzte Zeichen ist, oder bis zum wirklichen Ende des Textfeldes? Wäre es die zweite Variante, liegt es wohl daran...
Update:
Ich sehe gerade auch, dass er mir als Länge des eingegebenen Textes "Hallo" 6 ausgibt, anstatt 5... Könnte das was mit dem Problem zu tun haben?
Verfasst: Samstag 24. Mai 2008, 17:43
von Leonidas
Dann mach mal ein ``print repr(textneu)`` zwischen Zeile zwei und drei rein (also nach der "Verschlüsselung" und vor dem aufteilen) und sag was da rauskommt.
Verfasst: Samstag 24. Mai 2008, 18:00
von Evil4President
Also das Ergebnis:
Das heißt, er liest einen Zeilenumbruch mit aus. Daher gehe ich davon aus, dass bis zum Ende des Textfeldes ausgelesen wird!? Korrigeirt mich, falls ich das falsch schlussfolgere...
Habe jetzt bei
http://effbot.org nachgeschaut. Es gibt da die Möglichkeit die Zeilen eines Textfeldes auszulesen. Jedoch weiß ich nicht wie ich die Methode "+ count lines" in den Programmablauf einbauen könnte. Hätte dann gedacht, dass ich die Menge an Zeilen in einer Variable "zeilen" speichere und dann bis zum Punkt 'zeilen.end' auslesen lasse.
Verfasst: Samstag 24. Mai 2008, 18:05
von Leonidas
Code: Alles auswählen
textneu = geheim.rstrip()
chiffriert = textneu[zahl:] + textneu[:zahl]
return chiffriert
Verfasst: Samstag 24. Mai 2008, 18:15
von Evil4President
Also mit der Methode ".rstrip()" gehts jetzt. Aber wo ist der Unterschied, wenn es als Unicode umgewandelt weiterverarbeitet wird...?
Dann noch zu meinem letzten Post: Wie kann man denn die Zeilenzahl eines Textfeldes auslesen? Ich weiß nicht, wie ich die Variante einbauen kann.
Verfasst: Samstag 24. Mai 2008, 18:32
von Leonidas
Evil4President hat geschrieben:Also mit der Methode ".rstrip()" gehts jetzt. Aber wo ist der Unterschied, wenn es als Unicode umgewandelt weiterverarbeitet wird...?
Keiner, ``.rstrip()`` entfernt ja nur alle Whitespaces am Ende des Strings. Also auch die Newlines.
Evil4President hat geschrieben:Dann noch zu meinem letzten Post: Wie kann man denn die Zeilenzahl eines Textfeldes auslesen? Ich weiß nicht, wie ich die Variante einbauen kann.
An der Anzahl der Zeilenumbrüche (``\n``). 0 = 1 Zeile, 1 = 2 Zeilen,.. n = n+ 1 Zeilen.
Verfasst: Sonntag 25. Mai 2008, 11:09
von Evil4President
Ok, vielen Dank für die Hilfe Leonidas! Jetzt funktioniert alles
