Problem mit Verschieben der Buchstaben in einer Liste

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:

Hi all,
habe in meinem letzten Thread die Lösung gefunden, um ein Wort in seine Buchstaben "aufzuspalten"... Habe daher testhalber einmal folgendes Miniskript geschrieben, bei dem jedoch ein Fehler entsteht, der mir scheinbar wieder durch einen kleinen Denkfehler passiert ist, den ich dummerweise mal wieder nicht finden kann:-(
Hier erstmal der Code:

Code: Alles auswählen

verschieben=input('Eingeben: ')
liste=''
text='HALLO'
neu=list(text)
laenge=len(text)
for i in range(0,laenge):
    rest=verschieben%laenge
    if i+rest>laenge-1:
        rest2=(i+rest)-laenge
        liste+=neu[i+rest2]
    else:
        liste+=neu[i+rest]
print liste
Wenn ich als "verschieben" zum Beispiel 1 eingebe, bekomme ich als Ergebnis "ALLOO"... Ich denke in dem "if-Teil", in dem geprüft wird, ob die Summe außerhalb des range läge, ist der Fehler, ich komme aber icht dahinter. So wie es jetzt ist, müsste er doch einfach den Rest berechnen und so zum Anfang der Liste kehren und dort weiterrechnen...

Bitte um Hilfe
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Was willst du denn eigentlich machen? ^^
Ich werd nicht so recht schlau daraus.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Willst du dies erreichen?

Code: Alles auswählen

liste = text[1:] + text[0]
Stefan
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Naja, ich erläutere ;-)
Ich will hier ein Wort quasi so chiffrieren, dass er die Buchstaben um die Zahl verschiebt, die ich am Angang eingebe... So sollte aus "HALLO" zum Beispiel "ALLOH" werden... Denke, so sollte das relativ klar sein...

@sma: So gibt er mir zumindest für die Verschiebung um 1 das richtige Ergebnis aus. Aber das soll ja variabel sein... Ich kenne allerding auch diese Syntax nicht, kannst du mir das evtl erklären, was das genau macht. Vielleicht kann ich dann ja auch Variablen einbinden, statt der Zahlen, dass es variiert werden kann.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Du kannst das Beispiel von sma aber wunderbar variabel machen.

Meine Variante haette drei Zeilen:

Code: Alles auswählen

verschieben = 1
text = list("hallo")
print ''.join(text[verschieben:] + text[:verschieben])
EDIT: Ich weiß aber garnicht, ob es dir ueberhaupt was bringt. Dazu solltest du dich einmal mit Slices auseinandersetzen (die Doppelpunkte bei den Listen).

Also mal damit herumexperimentieren, was passiert wenn man sowas hier macht:

Code: Alles auswählen

liste = list("HALLO")
print liste[-1]
print liste[1:]
print liste[1:3]
print liste[1:-2]
print liste[:-3]
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

AHHHH^^
also wenn ich das durch mein Rumprobieren jetzt richtig verstanden habe, werden durch diese ":" in den eckigen Klammern die Buchstaben in einer Menge ausgegeben, wobei der letzte Wert nicht erreicht wird, oder? Damit wäre mir dann auch deine Variante sehr logisch und sympatisch ;-)

Vielen Dank schonmal!
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Ja, dieser Doppelpunkt ist aehnlich dem Sternchen bei einer Suchanfrage.
  • liste[x:] heißt von x bis Ende.
  • liste[:x] heißt vom Anfang bis x-1 (weil von Null an gezaehlt wird).
  • liste[x:y] gibt die Elemente von Position x bis Position y-1 zurueck.
  • list[:] gibt die Liste komplett zurueck (genauer genommen eine Kopie)
  • Negative Werte zaehlen einfach Rueckwaerts.
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Evil4President hat geschrieben:AHHHH^^
also wenn ich das durch mein Rumprobieren jetzt richtig verstanden habe, werden durch diese ":" in den eckigen Klammern die Buchstaben in einer Menge ausgegeben, wobei der letzte Wert nicht erreicht wird, oder? Damit wäre mir dann auch deine Variante sehr logisch und sympatisch ;-)
Vielen Dank schonmal!
Das sind Basics! Lies doch mal im Tutorial. Das bringt vermutlich noch mehr Erhellung.

Edit: Wenn es nicht falsch verstanden habe, dann willst du doch nicht mehr als das, oder?

Code: Alles auswählen

>>> p = 3
>>> alt = "Hundemarke"
>>> neu = alt[p:]+alt[:p]
>>> neu
'demarkeHun'
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

Ja, so dachte ich es mir auch ;)

Das mit dem Tutorial hatte ich auch vor, allerdings fehlte mir bis dato die Zeit, da die Tutorials doch sehr umfangreich sind ;-)
Habe mir aber vorgenommen diese durchzuarbeiten, damit es nicht so häufig zu solchen Sachen kommt. Aber die Lösung von dir (pütone) ist doch eigentlich dasselbe was mir oben schonmal vorgeschlagen wurde ;) und damit das was ich wollte :) Wusste nur nicht, wie man das einfach umsetzen kann... Wollte das in einer for-Schleife realisieren, aber da kams zu Fehlern.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Zuerst das Tutorial, vorher sag, ich kann da zwar nur für mich sprechen, aber das wird anderen sicher auch so gehen, ich nichts mehr.

Das Ding ist unglaublich gut und sollte nicht verachtet werden. Warum sollte man alles doppelt erklären?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Evil4President hat geschrieben:Das mit dem Tutorial hatte ich auch vor, allerdings fehlte mir bis dato die Zeit, da die Tutorials doch sehr umfangreich sind ;-)
Und wie lange hast du im Vergleich dazu an deiner ersten Lösung gebastelt? Wie lange hat es gedauert, hier zu fragen? Vielleicht hilft dir ja eine deutsche Version des Tutorials (ein bisschen angestaubt, aber ausreichend für dein Problem)?

Übrigens, wusstest du, dass man auf gesichterparty.de dein Profil lesen kann, ohne angemeldet zu sein? Die Betreiber haben da ein sehr fragwürdiges Konzept, was "privacay" angeht muss ich schon sagen. Statt dort Zeit zu verbringen, könntest du ja das Python-Tutorial lesen ;)

Stefan
Benutzeravatar
Trundle
User
Beiträge: 591
Registriert: Dienstag 3. Juli 2007, 16:45

audax hat geschrieben:Warum sollte man alles doppelt erklären?
Weil es so schön einfach und bequem ist.
BlackJack

Aber nur für den Fragesteller. Und auch für den wird's unbequem wenn die RTFMs anfangen. :-)
Evil4President
User
Beiträge: 83
Registriert: Dienstag 15. Januar 2008, 15:39
Kontaktdaten:

@sma: bei gesichterparty.de verbringe ich fast garkeine Zeit (zumindest nicht solche in der ich dort aktiv bin) Falls man darauf einblick hat, wie lange ich online bin, kann es sein, dass da lange Zeiten stehen, während denen ich zu 98% nie anwesend bin. Allerdings hat die mangelnde Zeit für das Tutorial andere zeitbedingte Gründe (btw: ich sitze falls das gedacht wird, nicht den ganzen Tag auf dem Sessel zum Chatten. Habe bessere Sachen zu tun ;-)).

Mein erstes Projekt konnte ich sowie weitere relatv leicht lösen (unter anderem mit Hilfe durch "A byte of Python"), da ich Informatik an der Schule habe und wir da mehr oder weniger viel gesagt bekamen... Nur bei komplexeren Programmen fangen Probleme zu Funktionen, Methoden etc an...
lunar

sma hat geschrieben:Übrigens, wusstest du, dass man auf gesichterparty.de dein Profil lesen kann, ohne angemeldet zu sein? Die Betreiber haben da ein sehr fragwürdiges Konzept, was "privacay" angeht muss ich schon sagen. Statt dort Zeit zu verbringen, könntest du ja das Python-Tutorial lesen ;)
Sag mal, googlest du nach jedem, mit dem du hier postest? Wenn dem so ist, würde ich ja zu gerne wissen, was du so über mich rausgefunden hast ;)

Btw, ob es "privacy" ist, wenn man einen Login erfordert, bezweifele ich mal. Fake Accounts sind auch schnell erstellt, insofern ist der Betreiber wenigstens ehrlich und täuscht nichts vor ;)
Antworten