Problem Namen umdrehen geht nicht

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
sebastian3984
User
Beiträge: 21
Registriert: Samstag 15. Mai 2010, 17:55

Meine Idee
Ich habe mir überlegt ein einfaches kleines Programm zu machen um einen Namen umzudrehen.

Mein Problem
Python sagt das die Synaxt falsch ist

Bild

Ich habe versucht eine Variable in k.A wie das heist ^^ zu schreiben aber es geht nicht.

Mein Python Code

Code: Alles auswählen

'''
Titel: Namen Umdrehen
Beschreibung: Dreht den Eingegebenen Namen um.
Autor: @Sebastian
'''
eingabe =(raw_input("Geben sie ihren Namen ein: "))
laenge = len(eingabe)
string_umgedreht = [laenge::-1] # <- Wie soll ich hier die Variable angeben ?
print string_umgedreht
Nicht sauer sein wen die Frage dumm ist aber ich lern ja Python ^^

MFG Sebastian
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Wenn man ein sog. Slicing vornimmt (das sind die eckigen Klammern in deinem Beispiel), muß man angeben, was "geschnitten" werden soll. Das hast du ja auch erkannt. Wenn du dir dein Tutorial oder wo auch immer du das [laenge::-1] her hast noch mal genauer anschaust, solltest du eigentlich sehen, wo da die Variable ins Spiel kommt. Ansonsten google mal nach "python" und "slicing".
sebastian3984
User
Beiträge: 21
Registriert: Samstag 15. Mai 2010, 17:55

Ehm habe schon ein TuT aber da ist das bsp nicht drin. Bitte eine andere Loesung vorschlagen hab die idee ausm kopf gehabt xD

Ich benutz das galileo openbook python
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Selbst im Openbook sollte das erklärt sein. Sliciing ist letztlich ja auch nur Variante des indizierten Zugriffs. Wie würdest du denn auf das i-te Element einer Liste zugreifen?

Verstehe bitte, warum wir dir hier nicht einfach die Lösung vorkauen wollen. Eine Programmiersprache zu lernen geht nur durch eigenes anwenden. Wenn wir dir hier einfach hinklatschen wie man es macht und du es einfach abschreibst lernst du weniger dabei. Programmieren lernen heißt auch, den Umgang mit Referenzen und der Dokumentation zu erlernen. Mit dem Stichwort "slicing" z.B. solltest du schnell fündig werden. Das Credo hier im Forum läßt sich am Besten mit "Hilfe zur Selbsthilfe" umschreiben. Wir helfen gerne bei komplexeren Problemen, möchten aber im Gegenzug auch sehen, daß unsere Hilfe auf fruchtbaren Boden fällt.
sebastian3984
User
Beiträge: 21
Registriert: Samstag 15. Mai 2010, 17:55

Ich wuerde die loesung ja nicht einfach abschreiben sondern versuchen zu verstehen
BlackJack

@sebastian3984: An welchen Namen wird denn die Zeichenkette gebunden, die der Benutzer eingibt? Und welcher Name muss in dem Ausdruck, der diese Zeichenkette dann umdrehen soll, auf jeden Fall schon einmal vorkommen?

Erklär doch mal in Worten im Detail was Du denkst was jede Zeile die Du geschrieben hast, genau für Auswirkungen hat.
sebastian3984
User
Beiträge: 21
Registriert: Samstag 15. Mai 2010, 17:55

Code: Alles auswählen

'''
Titel: Namen Umdrehen
Beschreibung: Dreht den Eingegebenen Namen um.
Autor: @Sebastian
'''
eingabe =(raw_input("Geben sie ihren Namen ein: ")) # Benutzer eingabe wird eingelesen und in den string gespeichert
laenge = len(eingabe) # Variable laenge wird angelegt und die laenger der variable eingabe wird geprueft
string_umgedreht = [laenge::-1] # string wird umgedreht die laenge von der eingabe wurde als variable eingebunden
print string_umgedreht # Variable wird ausgegeben
 
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

sebastian3984 hat geschrieben:

Code: Alles auswählen


string_umgedreht = [laenge::-1] # string wird umgedreht die laenge von der eingabe wurde als variable eingebunden

 
Gut. Die Länge der Eingabe hast du eingebunden. Ob du die brauchst, lasse ich mal dahingestellt. Aus der Zuweisung und dem verwendeten Namen schließe ich mal, daß da am Ende die umgedrehte Eingabe bei rauskommen soll ( schlau, gell? ). Schauen wir uns also den rechten Teil an. Da scheint die Länge irgendeine Rolle zu spielen. Aber kannst du nur aus der Länge die (umgedrehte) Eingabe bestimmen? Was fehlt, und wo könnte es hinkommen? Hast du schon mal einfach probiert? Daß du dir "[::-1]" aus den Fingern gezogen hast, nehme ich dir übrigens nicht ab. Du mußt es irgendwo gesehen haben. Wo? In welchem Zusammenhang?
sebastian3984
User
Beiträge: 21
Registriert: Samstag 15. Mai 2010, 17:55

Bild

Das steht im buch

Eine negative Schrittweite bewirkt ein Rückwärtszählen vom Start- zum Endindex, wobei in diesem Fall der Startindex auf ein weiter hinten liegendes Element der Sequenz als der Endindex verweisen muss. Mit einer Schrittweite von -1 lässt sich sehr elegant eine Sequenz »umdrehen«:

>>> name = "ytnoM Python"
>>> name[4::-1]
'Monty'
>>> name[::-1]
'nohtyP Monty'

Bei negativen Schrittweiten vertauschen sich Anfang und Ende der Sequenz. Deshalb wird in dem Beispiel name[4::-1] nicht alles vom vierten bis zum letzten Zeichen, sondern der Teil vom vierten bis zum ersten Zeichen ausgelesen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Na dann hast du ja schon deine Variable. Schau doch mal genau hin, was da umgedreht wird und übernehme das für dein Problem.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
sebastian3984
User
Beiträge: 21
Registriert: Samstag 15. Mai 2010, 17:55

Ich blicks nicht ...
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Schau mal zwischen "=" und "[" ...
sebastian3984
User
Beiträge: 21
Registriert: Samstag 15. Mai 2010, 17:55

ups vergessen THX fuer die hilfe !
Antworten