13

在 Python 中,如果我让用户输入数字 X,然后程序进入用户输入 X 值的 for 循环,有没有办法/让变量名自动递增是个坏主意?

IE:

user inputs '6'  
value_1 = ...  
value_2 = ...  
value_3 = ...  
value_4 = ...  
value_5 = ...  
value_6 = ...

我可以让变量名称像这样递增,以便我可以拥有用户输入的变量数量吗?还是应该使用完全不同的方法,例如将所有新值附加到列表中?

4

4 回答 4

15

您应该将所有值附加到一个列表中,这样您以后就可以轻松地遍历这些值,并且不会用无用的变量和魔法乱扔您的命名空间。

于 2010-03-21T19:46:22.760 回答
10

虽然在这里使用列表或字典当然是正确的方法,但可以使用 exec() 创建命名变量。您会错过列表和字典提供的所有便捷操作(想想 len()、插入、删除、排序等),但有可能:

count = raw_input('Number of variables:')
for i in xrange(count):
    exec('var_' + str(i) + ' = ' + str(i))

exec() 接受并执行包含有效 Python 表达式的字符串。所以上面的代码是动态生成和执行代码的。

于 2010-03-22T11:21:28.670 回答
9

我应该使用完全不同的方法,例如将所有新值附加到列表中吗?

是的,您可以使用list。您也可以为此使用映射。

使变量名像这样递增

不,这是一个可怕的坏主意。


“但出于完全的好奇,这些是按照要求的方式来做的吗?”

是的,但这显然是一个可怕的坏主意。所以,展示它是没有意义的。甚至尝试都是一件可怕的、可怕的事情。

于 2010-03-21T20:29:04.970 回答
0

也许这会帮助你。

filenamee = 'Value_'
counter1 = 1
counter2 = 2
list1 = []
list2 = range(30)    #random number, given len needed
for x in list2:
    counter1 = str(counter1)
    full_name = (filenamee+counter1)
    list1.append(full_name)
    counter1 = counter2
    counter2+=1

for x in list1:
    print(x)

如果您要创建增量变量,这对我有用。我不知道这是否是干净的编程...... :)

小心

于 2015-06-26T21:11:03.693 回答