Как включить переменную в другую переменную - PullRequest
0 голосов
/ 02 марта 2012

У меня есть набор переменных: x1, x2, x3, x4, x5.

x1 = 10
x2 = 20
x3 = 30
x4 = 40
x5 = 50
number=1
for looper in range(0,4):
    xnumber = xnumber + 10
    number = number + 1

Чтобы получить: x1 = 20, x2 = 30,и т.д. Потому что я получил:

"'xnumber' is not defined"

Как я могу это исправить?

Ответы [ 4 ]

3 голосов
/ 02 марта 2012

Лучше использовать для этого список:

x = [10, 2, 30, 40, 50]
for index, value in enumerate(x):
    x[index] = value + 10

или диктовку, если вы хотите, чтобы для ваших значений было несколько имен:

x = {'x1': 10, 'x2': 2, 'x3': 30, 'x4': 40, 'x5': 50}
for key, value in x.items():
    x[key] = value + 10

или класс:

class x:
    x1 = 10
    x2 = 2
    x3 = 30
    x4 = 40
    x5 = 50

for index in range(1, 6):
    attr_name = 'x%d' % index
    setattr(x, attr_name, getattr(x, attr_name) + 10)
3 голосов
/ 02 марта 2012

Вместо этого используйте массив, определив x[0] ... x[4] и заменив xnumber на x[number]. Также вы можете обойтись без определения number и использовать индекс цикла:

x = range(5)
x[0] = 10
x[1] = 2
x[2] = 30
x[3] = 40
x[4] = 50
for i in range(0,5):
    x[i] = x[i] + 10
0 голосов
/ 03 марта 2012

Используйте словарь.

>>> d = {'x1':10,'x2':20,'x3':30,'x4':40,'x5':50}
>>> for key in d:
...   d[key] = d[key] + 10
>>> for key in sorted(d):
...   print key, '=', d[key]
...
x1 = 20
x2 = 30
x3 = 40
x4 = 50
x5 = 60
0 голосов
/ 02 марта 2012

Целые числа не являются изменяемыми. Единственный способ получить то, что вы хотите, это переназначить каждую переменную на новое целое число, и вы должны сделать это отдельно для каждой переменной - нет способа создать цикл для этого.

В качестве примера того, что я имею в виду, вот что вы могли бы сделать, если значения были изменяемыми. Я изменил каждую переменную, чтобы она содержала список вместо int.

x1=[10]
x2=[20]
x3=[30]
x4=[40]
x5=[50]
vars = [x1, x2, x3, x4, x5]
for looper in range(0,4):
    vars[looper][0] = vars[looper][0] + 10
print x1,x2,x3,x4,x5
[20] [30] [40] [50] [50]

Обратите внимание, что looper идет только до 3, поэтому он пропускает x5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...