kleine Frage zu Slicings

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Samstag 24. Mai 2008, 17:16

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
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 24. Mai 2008, 17:28

Am Ende deines eingabetextes wird wohl ein Zeilenumbruch sein, wenn du die Strings zerteils und wieder zusammensetzt ist der logischerweise dann irgendwo mittendrin.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Samstag 24. Mai 2008, 17:34

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?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 24. Mai 2008, 17:43

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Samstag 24. Mai 2008, 18:00

Also das Ergebnis:

Code: Alles auswählen

[u'k', u'd', u'o', u'o', u'o', u'r', u'\n']
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.
Zuletzt geändert von Evil4President am Samstag 24. Mai 2008, 18:07, insgesamt 1-mal geändert.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 24. Mai 2008, 18:05

Code: Alles auswählen

textneu = geheim.rstrip()
chiffriert = textneu[zahl:] + textneu[:zahl]
return chiffriert
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Samstag 24. Mai 2008, 18:15

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.
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Samstag 24. Mai 2008, 18:32

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Sonntag 25. Mai 2008, 11:09

Ok, vielen Dank für die Hilfe Leonidas! Jetzt funktioniert alles ;-)
Antworten