Strings mit Variablen erstellen

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
Gocia
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2011, 10:40

Hallo Zusammen,
ich verwende gerade das Python Skript zur Auswertung einer ABAQUS Berechnung.
Ich würde gerne in einer Schleife eine bestimmte Anzahl von Elementen aufrufen.
Beispielsweise kann ich mit der nachfolgenden Zeile alle Elemente von 49820 bis 49830 anwählen.
leaf = dgo.LeafFromModelElemLabels(elementLabels=(('BETON_B=250_FEIN', (
'49820:49830', )), ))

Wenn ich jetzt aber anstatt der Zahlen Variablen einsetze
x=49820
y=49830
leaf = dgo.LeafFromModelElemLabels(elementLabels=(('BETON_B=250_FEIN', (
'x:y', )), ))

werden die Elemente nicht mehr ausgewählt.
Weiss jemand wie es richtig geht?

Vielen Dank im Voraus
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Offensichtlich möchte das Programm in dem Parameter einen String haben, in dem zwei durch Semikolon getrennte Zahlen stehen. 'x:y' entspricht dem nun gar nicht und das x ist hier auch keine Variable, sondern einfach ein Teil einer Zeichenkette. Du musst also einen String erzeugen, der den gewünschten Inhalt hat.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das Stichwort lautet String Formatting.
Das Leben ist wie ein Tennisball.
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Wie das geht, was die Kollegen geschrieben haben verrät dir das Python-Tutorial. :)
Gocia
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2011, 10:40

Danke für die schnellen Antworten.
Leider bin ich mit der Verwendung des Pythons Skripts noch nicht so fit. Könntet ihr mir sagen, wie die konkreten Befehle lauten, um aus ein String zu erstellen das aus den Variablen x und y getrennt durch den Doppelpunkt besteht.
Es scheint ja eine Frage der Zeichensetzung zu sein, oder?
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Um es kurz zu machen.
Das Leben ist wie ein Tennisball.
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Gocia hat geschrieben:Es scheint ja eine Frage der Zeichensetzung zu sein, oder?
Nein, es ist eine Frage des Verständnisses dessen was du tust.

In der Dokumentation findest du einen Eintrag über String Formatting und wenn du dich da jetzt noch nicht komplett durcharbeiten möchtest, dann sollten dir die Beispiele zum String Formatting genug Information geben um das Problem zu lösen.
Gocia
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2011, 10:40

Vielen dank für gar nichts, vielleicht war es naiv zu glauben, man könnte in einem Forum eine schnelle und einfache Antwort auf ein vermeintlich einfaches Problem finden. Ich bin jetzt aber selbst auf die Lösung gekommen, wobei die Links hier nicht wirklich hilfreich waren. Wäre es so schwer gewesen mir zu schreiben, dass man Variablen über den Befehl repr() in einen String umwandeln kann?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Gocia hat geschrieben:Vielen dank für gar nichts, vielleicht war es naiv zu glauben, man könnte in einem Forum eine schnelle und einfache Antwort auf ein vermeintlich einfaches Problem finden.
Wir sind dann wohl von falschen Voraussetzungen ausgegangen. Hättest du gleich gesagt "Python interessiert mich nicht und ich habe keine Ahnung davon und möchte es auch nicht lernen. Ich brauche nur jemanden, der mein Problem löst.", dann hätten wir entsprechend reagiert. So aber sind wir fälschlicherweise davon ausgegangen, dass du wissen möchtest wie die Lösung funktioniert.
Gocia hat geschrieben:Ich bin jetzt aber selbst auf die Lösung gekommen, wobei die Links hier nicht wirklich hilfreich waren.
Das spricht eindeutig dafür, dass dir Grundlagen fehlen. Ich habe nicht damit gerechnet, dass es bei dem ersten Beispiel zur Stringformatierung Verständnisschwierigkeiten gibt.

Code: Alles auswählen

>>> '{0}, {1}, {2}'.format('a', 'b', 'c')
'a, b, c'
Gocia hat geschrieben:Wäre es so schwer gewesen mir zu schreiben, dass man Variablen über den Befehl repr() in einen String umwandeln kann?
Ja, da wir ungern falsche Antworten geben. repr() tut nicht das, was du glaubst das es tut. Anders ausgedrückt: Bei dir funktioniert es anscheinend im Moment, aber das muss nicht so sein. Hättest du Folgendes erwartet?

Code: Alles auswählen

>>> repr(9876543210)
'9876543210L'
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Gocia hat geschrieben:Wäre es so schwer gewesen mir zu schreiben, dass man Variablen über den Befehl repr() in einen String umwandeln kann?
Das wäre nicht schwer, sondern falsch gewesen. Wenn Du 'repr()' zum Erzeugen eines strings verwenden möchtest, wirst Du früher oder später an die Wand fahren...
Hättest Du die Dir empfohlenen Links angeschaut, wärst Du auf sowas gestoßen:

Code: Alles auswählen

x = 49820
y = 49830
'{0}:{1}'.format(x, y)
Ich könnte mir vorstellen, dass Du etwas in der Art gebastelt hast:

Code: Alles auswählen

x = 49820
y = 49830
str(x) + ':' + str(y)
Wobei Du eben zur Umwandlung der Zahlen die an dieser Stelle völlig falsche Funktion 'repr()' statt 'str()' verwendet hast. Stimmt's? :wink:

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Gocia
User
Beiträge: 4
Registriert: Dienstag 3. Mai 2011, 10:40

Na gut, ich muss mich für meine Reaktion ein wenig entschuldigen, allerdings hätte ich mich gefreut, wenn die letzten Beiträge früher gekommen wären. Nicht jeder hat die Zeit sich zur Lösung eines kleines Problems von Grund auf in ein Thema einzuarbeiten. Die Beispiele habe ich gelesen, konnte daraus aber nicht auf die richtige Formulierung schließen.
Vielen Dank mutetella für die Berichtigung
Ist die str() Formulierung grundsätzlich der repr() Formulierung vorzuziehen?
Ich habe tatsächlich die repr() + ':' repr() Formulierung verwendet :wink:
lunar

@Gocia: "str()" und "repr()" haben vollkommen unterschiedliche Aufgaben, daher kann man die Frage, was vorzuziehen ist, nur mit "kommt darauf an" beantworten. Die Dokumentation von str() und repr() klärt Dich über die Details auf, zusammenfassend ist "str()" eher zur lesbaren Ausgabe von Werten gedacht, während "repr()" mehr Debugging und der testweise Ausgabe von Werten dient.

Zur anderen Diskussion: Mag sein, dass Dir die Zeit fehlt, Dich in Python einzuarbeiten, doch was tust Du, wenn uns in der Konsequenz irgendwann die Zeit oder die Lust fehlt, Deine Probleme zu lösen? Wir helfen, aber weitaus lieber mit Hilfe zur Selbsthilfe und nur sehr ungerne mit Komplettlösungen für anderer Leute Probleme. In diesem Fall ist das nun nicht weiter tragisch, da das Problem und dementsprechend auch die Komplettlösung trivial ist, aber bei komplexeren Problemen, die weitaus mehr Einarbeitung verlangen als diese Kleinigkeit, müssen auch wir recherieren, eventuell etwas ausprobieren oder überlegen, und das fällt nicht leicht, wenn der Fragesteller selbst nicht Lust und Zeit aufbringt, sich in das Problem einzuarbeiten. Das nur als Anmerkung, und vielleicht als Hinweis für die Zukunft :)
Antworten