Seite 1 von 1
Problem mit Verschieben der Buchstaben in einer Liste
Verfasst: Samstag 17. Mai 2008, 20:27
von Evil4President
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
Verfasst: Samstag 17. Mai 2008, 20:53
von nkoehring
Was willst du denn eigentlich machen? ^^
Ich werd nicht so recht schlau daraus.
Verfasst: Samstag 17. Mai 2008, 20:54
von sma
Willst du dies erreichen?
Stefan
Verfasst: Samstag 17. Mai 2008, 20:59
von Evil4President
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.
Verfasst: Samstag 17. Mai 2008, 21:02
von nkoehring
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]
Verfasst: Samstag 17. Mai 2008, 21:13
von Evil4President
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!
Verfasst: Samstag 17. Mai 2008, 21:38
von nkoehring
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.
Verfasst: Samstag 17. Mai 2008, 21:47
von numerix
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'
Verfasst: Samstag 17. Mai 2008, 22:10
von Evil4President
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.
Verfasst: Samstag 17. Mai 2008, 23:24
von audax
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?
Verfasst: Sonntag 18. Mai 2008, 07:51
von sma
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
Verfasst: Sonntag 18. Mai 2008, 08:33
von Trundle
audax hat geschrieben:Warum sollte man alles doppelt erklären?
Weil es so schön einfach und bequem ist.
Verfasst: Sonntag 18. Mai 2008, 08:59
von BlackJack
Aber nur für den Fragesteller. Und auch für den wird's unbequem wenn die RTFMs anfangen.

Verfasst: Montag 19. Mai 2008, 21:56
von Evil4President
@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...
Verfasst: Dienstag 20. Mai 2008, 10:26
von 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
