2013-09-30 3 views
0

EDIT: Это не дублирующий вопрос. Полученный ответ фактически создает новые переменные/объекты внутри программы. То, что это может быть или не быть тем, что на самом деле лучше для меня, не имеет значения. «Дубликат», который был предложен, фактически не создает новую переменную «объект»/«, она просто манипулирует полномочиями словаря.
Это не дублирующий ответ.Создание переменных внутри программы

Я хочу, чтобы пользовательские переменные в программе Python.

Например, я хотел бы иметь

raw_input('Enter new variable: ') 

И, возможно, человек хочет назвать свою новую переменную «X» и, возможно, также установить его равным целому числу 0.

Тогда, если это ему подходит, возможно, создать другую переменную «Y» с raw_input() ... и Z, или ABC PHI OMEGA ... так до тех пор, пока он любит. ... соответственно, устанавливая их, скажем, целыми числами.

Это похоже на работу для списка. Это только работа для списка, добавления и вызова из списка?

Помните, что я хочу назвать/создать новую переменную ex nihilo. Я не задаю тупого вопроса о том, как установить целое число в переменную с raw_input() или что-то еще.

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

+5

'Если вы спросите, почему это происходит потому, что у меня есть подозрение, наивные, что это будет быстрее в долгосрочной run.' Это не будет. Используй словарь. –

+0

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

+0

Мне нужно подумать об этом, но, наконец, я наконец получил реальный ответ на этот вопрос, а не «лучший ответ на мою проблему». –

ответ

0

1) То, что вы просите это плохая идея. Вы почти наверняка не хотите этого делать.

2) Вот как это сделать:

name = raw_input("Name the variable:") 
value = raw_input("And the value?") 
exec("{} = {}".format(name, value)) 
+0

Привет, спасибо. Теперь я вижу одну проблему с этим, по крайней мере, и это то, что я делаю с этими переменными, которых я еще не знаю. Почему бы вам не сделать это? Единственный другой способ, который я видел, это просто использовать append для списка, но я всегда читал, что это медленно. –

6

В этом случае, использование словаря будет хорошей идеей:

varis = {} # a dictionary of variables, just name/value pairs 
v = raw_input('Enter new variable: ') 

varis[v] = "some value" # "create" a variable with the name stored in `v` 

varis[v]    # "access" the variable's value 
=> "some value" 
+0

Возможно, я был недостаточно ясен. Кажется, что если бы это было зациклировано, то вхождение нового значения в v уничтожило бы старое значение. Я не хочу уничтожать старое значение/переменную. –

+1

Нет, @ user2179612, данные сохраняются в словаре 'varis'. Если пользователь сначала ввел «john», а затем «mary», то 'varis [" john "]' будет продолжать существовать даже после создания 'varis [" mary "]'. –

+0

Хм хорошо. Ну, Роб получает галочку, потому что он дал мне технически правильный ответ на мой вопрос, хотя это также решает проблему. В конце дня «Джон» по-прежнему остается ниткой. –

Смежные вопросы