我有一组变量: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"
我该如何解决这个问题?
答案 0 :(得分:3)
改为使用数组,定义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
答案 1 :(得分:3)
最好使用一个列表:
x = [10, 2, 30, 40, 50]
for index, value in enumerate(x):
x[index] = value + 10
或dict,如果你想要一些'名字'代表你的价值观:
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)
答案 2 :(得分:0)
整数不可变。获得所需内容的唯一方法是将每个变量重新分配给一个新的整数,并且必须单独对每个变量执行此操作 - 无法创建循环来执行此操作。
作为我的意思的一个例子,如果值是可变的,这就是你可以做的。我已经将每个变量更改为包含列表而不是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
。
答案 3 :(得分:0)
使用字典。
>>> 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