auf Variablen zugreifen?
Hallo, vielleicht kann mir jemand helfen. Ist wahrscheinlich ein ganz einfaches Problem, aber ich habe bisher keine Erfahrung mit Python. Also folgendes Problem: var1 = x var2= y Befehl("(var1 + text)","(var2 + text)") Ich habe var1 und var2 definiert und möchte diese Werte dann in der Befehlszeile verwenden, aber er schreibt immer var1 statt x bzw. var2 statt y hin. An den Klammern und Anführungszeichen darf ich nichts ändern und auch ohne Klammern funktioniert es nicht. Was mache ich falsch? Vielen Dank Gruß Daniel _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Daniel Hasenpusch wrote:
Hallo,
vielleicht kann mir jemand helfen. Ist wahrscheinlich ein ganz einfaches Problem, aber ich habe bisher keine Erfahrung mit Python. Also folgendes Problem:
var1 = x var2= y
Befehl("(var1 + text)","(var2 + text)")
Ich habe var1 und var2 definiert und möchte diese Werte dann in der Befehlszeile verwenden, aber er schreibt immer var1 statt x bzw. var2 statt y hin. An den Klammern und Anführungszeichen darf ich nichts ändern und auch ohne Klammern funktioniert es nicht. Was mache ich falsch?
So einiges. Alles was in Anführungszeichen steht ist ein String. Um den Wert einer Variablen in einen String einzufügen gibts ne Menge Möglichkeiten - zB so "%s + text" % var1 Allerdings klappt das nur wenn var1 ein String ist. Ausserdem sieht das was du da veranstaltest so aus als ob du versuchen möchtest den Inhalt von var1 mit dem von text zu verketten. Das klappt so auch nicht. Letztlich solltest du uns lieber etwas deutlicher erzählen was du vor hast , dann können wir was vorschlagen. Denn auch " An den Klammern und Anführungszeichen darf ich nichts ändern und auch ohne Klammern funktioniert es nicht." hört sich seltsam an - wenn du nix ändern darfst, dann darfste ja nicht programmieren.... Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
On 19.Jul 2005 - 23:56:23, Diez B. Roggisch wrote:
Daniel Hasenpusch wrote:
Hallo, vielleicht kann mir jemand helfen. Ist wahrscheinlich ein ganz einfaches Problem, aber ich habe bisher keine Erfahrung mit Python. Also folgendes Problem: var1 = x var2= y Befehl("(var1 + text)","(var2 + text)") Ich habe var1 und var2 definiert und möchte diese Werte dann in der Befehlszeile verwenden, aber er schreibt immer var1 statt x bzw. var2 statt y hin. An den Klammern und Anführungszeichen darf ich nichts ändern und auch ohne Klammern funktioniert es nicht. Was mache ich falsch?
So einiges. Alles was in Anführungszeichen steht ist ein String. Um den Wert einer Variablen in einen String einzufügen gibts ne Menge Möglichkeiten - zB so
"%s + text" % var1
Allerdings klappt das nur wenn var1 ein String ist.
Sicher? Hab grad folgendes im Interpreter getestet und es ging: var=4 neueVar="(%s)" % var print neueVar liefert "(4)" Ich denke im Gegensatz zum einfachen Verketten von Strings, wendet die Substitution durchaus str() auf die Variablen an. Andreas -- You will live a long, healthy, happy life and make bags of money. _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Sicher? Hab grad folgendes im Interpreter getestet und es ging:
var=4 neueVar="(%s)" % var print neueVar
liefert "(4)"
Ich denke im Gegensatz zum einfachen Verketten von Strings, wendet die Substitution durchaus str() auf die Variablen an.
Mag sein das ich da etwas generalisiert habe. Das hier geht nämlich nicht
"%i" % "5" TypeError: int argument required
Und str() kann ja auch uU nicht sein, was man wirklich haben möchte. MfG Diez _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
Hallo, Diez B. Roggisch schrieb:
Sicher? Hab grad folgendes im Interpreter getestet und es ging:
var=4 neueVar="(%s)" % var print neueVar
liefert "(4)"
Ich denke im Gegensatz zum einfachen Verketten von Strings, wendet die Substitution durchaus str() auf die Variablen an.
Mag sein das ich da etwas generalisiert habe. Das hier geht nämlich nicht
"%i" % "5" TypeError: int argument required
Und str() kann ja auch uU nicht sein, was man wirklich haben möchte.
Tja, etwas Theorie und das Lesen Handbuchs machen das Leben klarer :-) '%s' String (converts any python object using str()) '%r' String (converts any python object using repr()) '%i' Signed integer decimal. Damit sollte klar sein, weshalb '%s'% 4 funktioniert und '%i' % "4" eben nicht. Aber das geht auch: Eine Klasse, die __int__ unterstützt.
class I: ... def __init__(self, attr): ... self.attr = attr ... def __int__(self): ... return int(self.attr) ... print '%i' % I("4") 4
-- Schönen Gruß - Regards Hartmut Goebel | Hartmut Goebel | IT-Security -- effizient | | h.goebel@goebel-consult.de | www.goebel-consult.de | _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
On, Tue Jul 19, 2005, Daniel Hasenpusch wrote: [...]
var1 = x var2= y
Befehl("(var1 + text)","(var2 + text)")
Ich habe var1 und var2 definiert und möchte diese Werte dann in der Befehlszeile verwenden, aber er schreibt immer var1 statt x bzw. var2 statt y hin. An den Klammern und Anführungszeichen darf ich nichts ändern und auch ohne Klammern funktioniert es nicht. Was mache ich falsch?
Du substituierst nicht. Statt dessen uebergibst du zwei Zeichenketten an 'Befehl'. Substituiere var1 und var2 z.B. wie folgt (so es denn int-Werte sind): Befehl ("(%d + text)" % var1 ,"(%d + text)" % var2) Siehe auch http://python.org/doc/current/lib/typesseq-strings.html gruss Marcus _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
On 19.Jul 2005 - 23:44:13, Daniel Hasenpusch wrote:
Hallo,
vielleicht kann mir jemand helfen. Ist wahrscheinlich ein ganz einfaches Problem, aber ich habe bisher keine Erfahrung mit Python. Also folgendes Problem:
var1 = x var2= y
Befehl("(var1 + text)","(var2 + text)")
Ich habe var1 und var2 definiert und möchte diese Werte dann in der Befehlszeile verwenden, aber er schreibt immer var1 statt x bzw. var2 statt y hin. An den Klammern und Anführungszeichen darf ich nichts ändern und auch ohne Klammern funktioniert es nicht. Was mache ich falsch?
Wieso darfst du an den Anfuehrungszeichen und Klammern nichts aendern? Was du wahrscheinlich willst (unter der Vorraussetzung, dass Befehl 2 Strings als Argumente erwartet) ist: Befehl("("+var1+text+")","("+var2+text+")") Aber ohne ein paar mehr Info's dazu was das ganze bewirken soll ist das nur geraten. Andreas -- You could live a better life, if you had a better mind and a better body. _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de
participants (5)
-
Andreas Pakulat
-
Daniel Hasenpusch
-
Diez B. Roggisch
-
Hartmut Goebel
-
Marcus von Appen