2017-01-29 3 views
-1

Ich komme vom PHP-Hintergrund, und ich versuche, jede Iteration zu drucken. Ich kann nicht verstehen, wie esPython: Wie man dynamische Variablen druckt

>>> a0, a1, a2 = [12, 5, 8] 
>>> b0, b1, b2 = [5, 9, 11] 
>>> categories = [0, 1, 2] 
>>> for i in categories: 
     print(a+i) 

Fehler in Python zu tun:

Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
NameError: name 'a' is not defined 
>>> for i in categories: 
... print('a'+i) 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
TypeError: cannot concatenate 'str' and 'int' objects 
>>> for i in categories: 
...  print(a+str(i)) 
... 
Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
NameError: name 'a' is not defined 

Ich weiß, es basisch ist, aber ich weiß nicht, wie es zu lösen.

Edit:

>>> print a0 
12 
>>> print a2 
8 

a0, a1, a2 ist variabel. Da ich 0,1,2 in für habe, muss ich nicht a0, a1, a2, b0, b1, b2 manuell schreiben.

+1

Diese Frage wurde oft auf Stack Overflow gestellt. Hier ist eine solche Frage: http://stackoverflow.com/questions/19122345/to-convert-string-to-variable-name –

+0

Ihre Stack-Trace sagt alles. 'NameError: Name 'a' ist nicht definiert 'bedeutet, dass Sie versucht haben auf die Variable' a 'zuzugreifen, die nicht definiert wurde. 'TypeError: kann 'str' und 'int' Objekte nicht verketten bedeutet, dass Sie' + 'Operation auf' str' & 'int' Werten versucht haben (beide sollten gleich sein) –

+0

Wie der Fehler vermuten lässt, ist' name 'a' nicht definiert " –

Antwort

-4
>>> a0, a1, a2 = [12, 5, 8] 
>>> b0, b1, b2 = [5, 9, 11] 
>>> categories = [0, 1, 2] 

for i in categories:   
    print(eval('a'+str(i))) 

eval wird die Zeichenkette in eine Variable machen, so wird variable a0 Druck, a1, a2

output : 
12 
5 
8 
+0

ich bearbeite meine Antwort –

+0

Willkommen bei Stack Overflow! Während Sie das Problem dieses Benutzers möglicherweise gelöst haben, sind Code-Only-Antworten für Benutzer, die in Zukunft auf diese Frage kommen, nicht sehr hilfreich. Bitte bearbeiten Sie Ihre Antwort, um zu erklären, warum Ihr Code das ursprüngliche Problem löst. –

+0

@Joe C, ich habe meine Antwort bearbeiten, tut mir leid. –

1

Ich glaube nicht, dass Sie es auf diese Weise in Python tun würde. Mehr Pythonic wäre, die Werte als eine Liste oder ein Array wie zu speichern:

a = [1, 2, 3] 
cat = [0, 1, 2] 
for i in cat: 
    print(a[i])