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 :

problème avec la boucle for


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    étudiante
    Inscrit en
    Mai 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Mai 2011
    Messages : 41
    Par défaut problème avec la boucle for
    bonjour,

    j'ai créé un script qui extraire des paramètres appelés Min et Max et à partir des ces paramètres , il calcule des autres output (par exemple sig_stat)
    le script est le suivant:
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    #-----------------------------------------------------------HCF1------------------------------------------------------------------
     
     
     
    # determine the stress value at the second frame of the second step
    # in the "SKIN" element set (HCF1)
    stressField = odb.steps['Load'].frames[2].fieldOutputs['S']
    stressField1 = odb.steps['Load'].frames[3].fieldOutputs['S']
    topCenter = odb.rootAssembly.instances['V20110406-1-1'].elementSets['SKIN']
    Stress = stressField.getSubset(region=topCenter, position=CENTROID).values
    Stress1 = stressField1.getSubset(region=topCenter, position=CENTROID).values
     
     
    # calculate the static, dynamic and equivalent stresses
    if choix=='Goodman':
        for value in Stress :
            print ('Element: %6d\tMax: %f\n'%(value.elementLabel,value.minPrincipal))
        for e in Stress1:
            print ('Element: %6d\tMin: %f\n'%(e.elementLabel,e.minPrincipal))
        sig_stat= (value.minPrincipal + e.minPrincipal)/2
        sig_dyn= (value.minPrincipal - e.minPrincipal)/2
        #print ('sig_stat: %f\tsig_dyn: %f\n'%(sig_stat,sig_dyn))
        alpha_G = abs(sig_D_mean/((sig_dyn/sig_stat)+(sig_D_mean/Rm)))*((1+(sig_dyn/sig_stat)**2)/(sig_dyn**2+sig_stat**2))**0.5
        sig_eq_Goodman = (Rm*sig_dyn)/(Rm-(sig_stat/alpha_G))
        if sig_eq_Goodman > y[0]:
            N_cycle = 0
        elif sig_eq_Goodman <= y[-1]:
                N_cycle = 1.0E+10
        else:
            i=0
            len_y=len(y)
            while (i < len_y - 1):
                if (sig_eq_Goodman < y[i]) and (sig_eq_Goodman > y[i+1]):
                    N_cycle = x[i+1]-((y[i+1]-sig_eq_Goodman)*(x[i+1]-x[i])/(y[i+1]-y[i]))
                    break
                i=i+1
        #print ('N_cycle : %E\n'%(N_cycle))
        f1.write('Instance: %s\tElement: %6d\tMax: %f\tMin: %f\tSig_stat: %f\tSig_dyn: %f\talpha_G: %f\tSig_eq_Goodman: %f\tN_cycle: %E\n'%(value.instance.name,value.elementLabel,value.minPrincipal,e.minPrincipal,sig_stat,sig_dyn,alpha_G,sig_eq_Goodman,N_cycle))
    ma problème est que pour les 2 boucles for je veux que elles affichent en parallèle les valeurs de min et max mais si je met le 2 ème boucle dans la première elle me donne pour chaque valeur de Max tous les valeurs de Min
    et si j'ai mis chacun indépendant de l'autre je ne peux pas afficher tous les valeurs de Min et Max dans le fichiers texte crée car il m'affiche seulement les deux derniers valeurs . de même pour le syg_stat et sig_dyn il faut que le même rang d'élément de deux boucles for pour les calculer c'est à dire pour le 1 er Min et le 1er Max on a le 1er sig_dyn ou sig_stat.

    je ne sais pas si ma question est claire mais j'ai besoin d'aide car je suis bloquée.

    merci d'avance

  2. #2
    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,

    Serait-ce ceci que tu veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
        for idx, value in enumerate(Stress ):
            print ('Element: %6d\tMax: %f\n'%(value.elementLabel,value.minPrincipal))
            e = Stress1[idx]
            print ('Element: %6d\tMin: %f\n'%(e.elementLabel,e.minPrincipal))

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour,

    enumerate ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> l1 = [1, 2, 3, 4, 5]
    >>> l2 = [10, 20, 30, 40, 50]
    >>> for i, e in enumerate(l1):
    ...     print(e, l2[i])
    ...
    (1, 10)
    (2, 20)
    (3, 30)
    (4, 40)
    (5, 50)
    @+

  4. #4
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Ou encore (J'ai tendance a l'oublier zip)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> for v in zip(l1, l2):
    ...     print v
    ...
    (1, 10)
    (2, 20)
    (3, 30)
    (4, 40)
    (5, 50)
    @++

  5. #5
    Membre averti
    Femme Profil pro
    étudiante
    Inscrit en
    Mai 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : étudiante

    Informations forums :
    Inscription : Mai 2011
    Messages : 41
    Par défaut
    merci beaucoup pour les réponses. ça marche bien maintenant

    Cordialement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/11/2007, 15h25
  2. Réponses: 3
    Dernier message: 24/05/2007, 17h56
  3. problème avec une boucle For
    Par mademoizel dans le forum ASP
    Réponses: 3
    Dernier message: 24/03/2007, 13h20
  4. Réponses: 2
    Dernier message: 29/08/2006, 13h59
  5. Problème avec une boucle for
    Par cisse18 dans le forum Général JavaScript
    Réponses: 20
    Dernier message: 29/03/2006, 16h50

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