IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

concatenation et boucle


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Par défaut concatenation et boucle
    bonjour

    voila, j'ai une boucle que je voudrai racourcir..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    for i in range(len(cc)):  # nbr de materiaux trouves
     
            if len(cc)==1:        # 1 materiau
                tab1=cc[0]
                mat1min1 = var50[0]
                mat1max1 = var80[0]
                mat1temp1= var70[0]
            if len(cc)==2:        # 2 materiaux
                tab1=cc[0]
                tab2=cc[1]
                mat1min1 = var50[0]
                mat1max1 = var80[0]
                mat1temp1= var70[0]
                mat2min2 = var50[1]
                mat2max2 = var80[1]
                mat2temp2= var70[1]
            if len(cc)==3:        # 3 materiaux
                tab1=cc[0]
                tab2=cc[1]
                tab3=cc[2]
                mat1min1 = var50[0]
                mat1max1 = var80[0]
                mat1temp1= var70[0]
                mat2min2 = var50[1]
                mat2max2 = var80[1]
                mat2temp2= var70[1]
                mat3min3 = var50[2]
                mat3max3 = var80[2]
                mat3temp3= var70[2]
    ......
    y a t il moyen avec une concatenation d'indice de racourcir la boucle

    je pensais a ecrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if len(cc)==j:
         matmin = "matmin" + str(j)
    l'affectation matmin= var50[j] marche pas

  2. #2
    Membre Expert
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    952
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 952
    Par défaut
    Salut,

    Vu que ton code n'est pas un "code minimal reproduisant l'erreur et capable d'être lancé", je ne peux pas t'aider.

    Si matmin est une chaine de caractères (ce que je n'ai pas le moyen de savoir), c'est normal que l'affectation ne marche pas. Il faut transformer ta chaine en liste, et seulement après tu pourras changer un élément.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    chaine = "Developpez"
    caracteres = [car for car in chaine]
    caracteres[4] = "X"
    chaine = ""
    for car in caracteres:
        chaine += car
    print chaine
    A+

    Pfeuh

  3. #3
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Pour simplifier ton code il serait préférable que tu ranges tes données dans des conteneurs.

    Cela se résumerait à quelque chose comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    mats = [{}, {}, {}]
    tabs = []
     
    for i, val in enumerate(cc):
        tabs.append(cc)
        mats[i]['min'] = var50[i]
        mats[i]['max'] = var80[i]
        mats[i]['temp'] = var70[i]
    Créer autant de noms que tu as de données à traiter n'est pas très rationnel et est bien souvent cause d'erreurs.

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Par défaut concatenation et boucle
    oui c'est ca....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    mats = [{}, {}, {}]
        tabs = []
        letab= []
     
    for i, val in enumerate(cc):
            tabs.append(cc)
            letab.append(tabs[0][i])
            mats[i]['min']  = var50[i]
            mats[i]['max']  = var80[i]
            mats[i]['temp'] = var70[i]
     
     
        print 'letab', letab
    le probleme si par exemple pour letab

    print letab donne :

    [<Material: CV66>, <Material: Al2O3>, <Material: CN56>]

    j'ai a traiter letab[0], letab[1], letab[2] c'est a dire CV66, Al203 CN56

    et je sais pas comment relire letab car je l'envoie vers un fichier javascript

    et je connais pas au depart la taille de letab

    ca peut etre 1, 2,...10 elements

    d'ou tous ces if que je mettais...

    il y a moyen d'initialiser au depart ?

    si j'ai 2 elements et que j'essai d'envoyer letab[3] je n'ai pas en retour l'erreur list index out of range

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Ben, là je ne saisi pas très bien la question.

    Tu ne sais pas comment relire letab pour l'envoyer vers du javascript ?

    Et dans un boucle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for tab in letab:
        send_to_jscrip(tab)
    De quelle manière communiques-tu avec javascript ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 202
    Par défaut concatenation et boucle
    j'ai avancé vers la solution

    j'ai reglé le probleme javascript

    une premiere fonction envoie la liste (de 3 elements) cree avec enumerate vers un fichier javascript qui renvoie des donnees vers une autre fonction python

    je recupere dans ma fonction python une liste letab avec

    letab : [<Material: CV66>, <Material: Al2O3>, <Material: CN56>]

    le passage par javascript a transformé letab en chaine de 55 caracteres

    alors que je voudrai qu'il soit lu comme une liste de 3 elements CV66, Al2O3, CN56

    cette fois ci enumerate marche pas

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Ma question reste d'actualité,

    De quelle manière communiques-tu avec javascript ?

Discussions similaires

  1. requete concatenation en boucle
    Par cell dans le forum SQL
    Réponses: 1
    Dernier message: 15/10/2010, 15h03
  2. [Batch] Concatenation dans une boucle
    Par madislak dans le forum Windows
    Réponses: 5
    Dernier message: 26/06/2007, 13h08
  3. Concatenation a l'interieur de la declaration d'une boucle for
    Par Benjamin2tours dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2007, 10h28
  4. Boucle et concatenation
    Par dafalri dans le forum Langage
    Réponses: 4
    Dernier message: 08/12/2006, 14h28
  5. Boucle en VB et concatenation
    Par m3n2o dans le forum IHM
    Réponses: 3
    Dernier message: 08/06/2006, 09h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo