Page 1 of 1

pour créer des variables : concaténer un nom + un chiffre

Posted: Thu Dec 31, 2009 1:21 am
by pilou
bonsoir
je cherche à générer des variables via une boucle for afin d'avoir moins de lignes à programmer. en clair créer des variables qui s'appellent : pos1 pos2 ... pos10
for i in range (10):
concat('pos',i)=modul8.getValue('direct_layer_movie_timePositionSec', i)

ça ne fonctionne pas :cry:

merci du tuyau

Posted: Thu Dec 31, 2009 12:06 pm
by sigmasix
Salut, tu peux faire une list

Code: Select all

for i in range (10):
    pos[i] = modul8.getValue('direct_layer_movie_timePositionSec', i)


ensuite tu peux récupérer la valeur de 3 en faisant genre

Code: Select all

print pos[3]


Par contre je suis plus trop sur si il faut pas déclarer ta list avant la boucle ou pas, faut tester

Posted: Thu Dec 31, 2009 1:43 pm
by pilou
j'avais pensé au début à créer une liste puis après j'ai cherché du côté de la fonction concat sans succès. je vais tester en liste.

Posted: Thu Dec 31, 2009 5:29 pm
by sigmasix
le pense que les list sont plus appropriées pour ce que tu veux faire, c'est aussi plus flexible!

Posted: Sat Jan 02, 2010 11:52 pm
by pilou
il faut effectivement déclarer les listes. par contre j'ai vraiment besoin de concaténer des noms pour des variables, si quelqu'un à un tuyau ?

Posted: Mon Jan 04, 2010 10:47 am
by david
Bonjour pilou,

pilou wrote:il faut effectivement déclarer les listes. par contre j'ai vraiment besoin de concaténer des noms pour des variables, si quelqu'un à un tuyau ?


si tu veux retrouver une valeur en fonction d'une string, ce qu'il te faut c'est un tableau associatif (string -> valeur), appelé dictionary en Python.

Code: Select all

video_len = {'toto': 10, 'titi': 15}
video_len['foo'] = 12.3
name = 'toto'
print video_len[name]
print video_len

ou

Code: Select all

video_len = {}
video_len['foo'] = 12.3
print video_len


Donc, ensuite, tu peux créer le "nom de variable" que tu veux et stocker sa valeur dans le dictionnaire.

Cordialement.

David

Posted: Sun Jan 10, 2010 11:23 pm
by pilou
merci de cette autre solution. en fait, je cherche à renvoyer des valeurs à plusieurs slider ou afficheurs. j'utilise bcp ce système en php tout comme la fonction Switch case qui n'existe pas en python apparemment.

en fait je travail sur un module qui permet de zapper entre les 10 couches avec vitesse et temps écoulé par couche. je dois donc renvoyer les valeurs aux curseurs que j'ai nommé V1...V10, avec une simple boucle for et en concaténant 'V'+i je pourrais générer le nom des objets à piloter.

Posted: Mon Jan 11, 2010 10:37 pm
by sigmasix
alors utilise la liste, qui est comme un array en php, dans ta boucle tu peux récupérer une valeur dans ta liste très facilement

Code: Select all

#déclaration de la liste
value = []

#insertion des valeurs dans la liste
for i in range(1,11):
    value[i] = module.getValue(name, valueIndex)

#utilisation des valeurs plus tard
for i in range(1,11):
    modul8.setValue('keyword', value[i], layer)

Posted: Sat Jan 16, 2010 4:18 am
by boris
Bonsoir,
tu peux aussi utiliser cette solution, avec le dictionnaire local, qui va faire exactement ce que tu demandais.
ça va te créer 10 variable pos_1,pos_2,Pos_3, etc
pour concaténer tu peux simplement utiliser +

Code: Select all

for x in range (1,11):
   locals()['pos_'+str(x)] = modul8.getValue('direct_layer_movie_timePositionSec', x)