2010-03-21 3 views
5

В Python, если бы я должен был ввести пользователя число X, а затем программа вводит цикл for, в котором пользователь вводит значения X, есть ли способ/это плохая идея, чтобы переменные имена автоматически увеличивались?Как увеличивать имена переменных/Это плохая идея

т.е.

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

Могу ли я сделать имена переменных приращения так, чтобы я мог иметь ряд переменных, которые пользователь вводит? Или я должен использовать совершенно другой метод, например добавление всех новых значений в список?

+5

Используйте вместо этого список. –

+2

Или словарь с ключом по значению индекса. –

+1

хорошо, я понимаю, что лучше использовать список/словарь. но только из полного любопытства, это способ сделать это в заданном порядке? – tom

ответ

11

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

8

я должен использовать совершенно другой метод, такие как добавление всех новых значений на список?

Да, вы можете использовать list. Вы также можете использовать для этого mapping.

сделать имена переменных увеличивают как , что

No. Это ужасающе плохая идея.


«но только из полного любопытства, это способ сделать это в заданной манере?»

Да, но это явно ужасающе плохая идея. Таким образом, нет смысла показывать это. Это ужасная, страшная вещь, чтобы даже попытаться.

6

При использовании списка или словаря, конечно, правильный подход здесь, можно создать именованные переменные, используя exec(). Вы пропустите на всех удобных операций, списки и словари обеспечивают (вспомните Len(), вставка, удаление, сортировка и т.д.), но это возможно:

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

Exec() принимает и исполняет которые содержат допустимые выражения Python. Таким образом, вышеупомянутый фрагмент кода генерирует и выполняет код «на лету».

2

Возможно, это поможет вам.

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) 

Если вы ищете инкрементную переменную, это работает на меня. Я не знаю, является ли это чистым программированием или нет ... :)

Позаботьтесь