Von String in Variablenname ändern

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
thomasgull
User
Beiträge: 48
Registriert: Samstag 2. Februar 2013, 18:52

Guten Morgen miteinander

Ich habe eine Frage:

Ich kriege in der Variable InFeld1 den String "kanal1", "kanal2" oder so

Weiteroben im Programm habe ich eine Zuodnungsliste mit: kanal1= TPCANHandle(0x51), kanal2= TPCANHandle(0x52, ....)

nun weiter unten muss ich einer Varaiblen den kanal aus der Liste zuordnen.

nun könnte ich natürlich:
if InFeld1=="kanal1":
variableX=kanal1 #variable aus Liste
nun könnte ich natürlich:
elif InFeld1=="kanal2":
variableX=kanal2 #variable aus Liste


.....

es gibt sicher eine einfachere Variante dies zu tätigen indem ich den String in einen Variablenname umtaufe so zusagen.

Danke und schönen Tag
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Deine "Zuordnungsliste" scheint keine zu sein; vielmehr ein Haufen durchnummerierter Namen.

Du willst keine Namen durchnummerieren!

Verwende statt dessen Listen (list, []) und Wörterbücher (dict, {}).

Es wird Dir leichter fallen, Dein Problem zu lösen.

Grüße ... bwbg
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
thomasgull
User
Beiträge: 48
Registriert: Samstag 2. Februar 2013, 18:52

Danke für den Tipp ich werde es mir mal anschauen, nur die "Zuordnungsliste ist im Programmteil schon gegeben und desshald wolte ich darauf zugreifen

Danke
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Wenn ich das richtig interpretiere (mehr Infos sind immer besser), kannst Du die Zuordnungsliste (mit einer echten Liste) auch recht einfach mit einer for-Schleife oder einer List-Comprehension (LC) selbst erzeugen.

Aber schaue Dir zunächst die von mir genannten list und dicts an. for und LC ergeben sich dann fast von alleine daraus.

Grüße ... bwbg
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
gottlieb
User
Beiträge: 21
Registriert: Freitag 15. März 2013, 14:22

Moin,
wenn ich dich richtig verstanden habe könnte dir der vars()[]-Befehl was nutzen.
Hab sowas ähnliches gemacht. Schau dir den Befehl mal in einer Doku an.
Gruß
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Auf die locals zuzugreifen, halte ich für eine ganz schlechte Idee und wäre hier sicherlich kontraproduktiv. Wenn diese durchnummerierten Namen aus einer Bibliothek stammen gehört der Maintainer geschlagen ;)

Grüße ... bwbg
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Antworten