2010-03-21 13 views
5

En Python, si tuviese un usuario ingrese el número X, y luego el programa ingrese un ciclo for en el cual el usuario ingresa valores X, hay una forma/¿es una mala idea que los nombres de variables aumenten automáticamente?Cómo incrementar los nombres de las variables/¿Es esta una mala idea

es decir:

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

¿Puedo hacer que los nombres de variables incrementar así para que yo pueda tener el número de variables que el usuario introduce? ¿O debería usar un método completamente diferente, como agregar todos los nuevos valores en una lista?

+5

Usa una lista. –

+2

O diccionario, marcado por el valor del índice. –

+1

bien Entiendo que usar una lista/diccionario es mejor. pero solo por completa curiosidad, ¿es esta una manera de hacerlo de la manera solicitada? – tom

Respuesta

11

Debe agregar todos los valores a una lista, que le permite iterar fácilmente a través de los valores más adelante, así como no ensuciar su espacio de nombres con variables inútiles y magia.

8

debo utilizar un método completamente diferente tales como anexar todos los nuevos valores en una lista?

Sí, puede usar un list. También puede usar un mapping para esto.

crea nombres de las variables se incrementan al igual que

No. Eso es una mala idea terriblemente.


"pero solo por curiosidad, ¿es esta una forma de hacerlo de la manera solicitada?"

Sí, pero es claramente una horrible idea horrible. Entonces, no tiene sentido mostrarlo. Es algo terrible, terrible incluso intentarlo.

6

Si bien el uso de una lista o un diccionario es, por supuesto, el enfoque correcto aquí, es posible crear variables con nombre, utilizando exec(). Usted se pierda en todas las operaciones convenientes que las listas y diccionarios proporcionan (piensa en len(), insertar, eliminar, clasificación, etc.), pero es posible:

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

exec() acepta y ejecuta cadenas que contienen expresiones de Python válidas. Entonces, la pieza de código anterior genera y ejecuta código sobre la marcha.

2

Quizás esto te ayude.

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) 

Si está buscando hacer una variable incremental, esto funciona para mí. No tengo ni idea si esta es una programación limpia o no ... :)

Cuida

Cuestiones relacionadas