2010-03-21 5 views
5

En Python, si je devais avoir une entrée utilisateur le nombre X, puis le programme entre dans une boucle for dans laquelle l'utilisateur entre X valeurs, est-il un moyen/Est-ce une mauvaise idée d'avoir des noms de variables automatiquement incrémentés?Comment incrémenter les noms de variables/Est-ce une mauvaise idée

-à-dire:

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

Puis-je faire des noms de variables incrémenter comme ça pour que je puisse avoir le nombre de variables que les entrées de l'utilisateur? Ou devrais-je utiliser une méthode complètement différente telle que l'ajout de toutes les nouvelles valeurs sur une liste?

+5

Utilisez plutôt une liste. –

+2

Ou dictionnaire, saisi par la valeur d'index. –

+1

ok je comprends que l'utilisation d'une liste/dictionnaire est mieux. mais juste par curiosité complète, est-ce une façon de le faire de la manière demandée? – tom

Répondre

11

Vous devez ajouter toutes les valeurs à une liste, ce qui vous permet de parcourir facilement les valeurs plus tard et de ne pas encombrer votre espace de noms de variables et de magie inutiles.

8

devrais-je utiliser une méthode complètement différente tels que tous les annexant les nouvelles valeurs sur une liste?

Oui, vous pouvez utiliser un list. Vous pouvez également utiliser un mapping pour cela.

faire des noms de variables comme incrémenter que

Non, c'est une idée effroyablement mauvaise.


"mais juste par curiosité complète, est-ce une façon de le faire de la manière demandée?"

Oui, mais c'est clairement une horrible mauvaise idée. Donc, il ne sert à rien de le montrer. C'est une chose terrible et terrible à tenter.

6

Bien que l'utilisation d'une liste ou d'un dictionnaire soit bien sûr la bonne approche, il est possible de créer des variables nommées, en utilisant exec(). Vous allez manquer sur toutes les opérations pratiques que les listes et les dictionnaires fournissent (pensez len(), l'insertion, la suppression, le tri, etc.), mais il est possible:

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

exec() accepte et exécute chaînes contenant des expressions Python valides. Donc le morceau de code ci-dessus génère et exécute du code à la volée.

2

Peut-être que cela vous aidera.

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 vous cherchez à faire une variable incrémentielle, cela fonctionne pour moi. Je n'ai aucune idée si c'est une programmation propre ou non ... :)

Faites attention