pour créer des variables : concaténer un nom + un chiffre
  • pilou
    member
    Posts: 34
    Joined: Sun Dec 20, 2009 1:53 am
    Location: Lyon France
    Contact:

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

    by pilou » Thu Dec 31, 2009 1:21 am

    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
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Thu Dec 31, 2009 12:06 pm

    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
  • pilou
    member
    Posts: 34
    Joined: Sun Dec 20, 2009 1:53 am
    Location: Lyon France
    Contact:

    by pilou » Thu Dec 31, 2009 1:43 pm

    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.
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Thu Dec 31, 2009 5:29 pm

    le pense que les list sont plus appropriées pour ce que tu veux faire, c'est aussi plus flexible!
  • pilou
    member
    Posts: 34
    Joined: Sun Dec 20, 2009 1:53 am
    Location: Lyon France
    Contact:

    by pilou » Sat Jan 02, 2010 11:52 pm

    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 ?
  • User avatar
    david
    garageCube team
    Posts: 217
    Joined: Tue Jan 08, 2008 1:14 am
    Location: Antibes, France

    by david » Mon Jan 04, 2010 10:47 am

    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
  • pilou
    member
    Posts: 34
    Joined: Sun Dec 20, 2009 1:53 am
    Location: Lyon France
    Contact:

    by pilou » Sun Jan 10, 2010 11:23 pm

    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.
  • User avatar
    sigmasix
    master
    Posts: 1224
    Joined: Thu Dec 02, 2004 2:12 pm
    Location: gva | switzerland
    Contact:

    by sigmasix » Mon Jan 11, 2010 10:37 pm

    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)
  • User avatar
    boris
    garageCube team
    Posts: 911
    Joined: Mon Jun 28, 2004 12:36 am
    Location: Geneva
    Contact:

    by boris » Sat Jan 16, 2010 4:18 am

    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)
    Boris * garageCube team

Who is online

Users browsing this forum: No registered users and 12 guests