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 :

Manipulation d'un vecteur basée sur certaines valeurs de ses élements


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut Manipulation d'un vecteur basée sur certaines valeurs de ses élements
    Bonjour,

    Par plusieurs boucles conditionnelles, j'obtiens un vecteur valeur qui contient 6 valeurs soit de 1 ou de -1.

    Je voudrais émettre des conditions sur ce vecteur, du genre prendre en compte certaines combinaisons pour de futures instructions :

    la première combinaison est par exemple : [1,1,a,b,c,d] quelle que soit la valeur logique de a,b,c,d !

    Existe t'il une instruction qui puisse prendre en compte cela?
    du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if valeur == [1,1,.,.,.,.]
      instructions
    else
        continue
    Merci !

    M.

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 491
    Par défaut
    quelque chose du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (vecteur[0]==1 and vecteur[1]==1)

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    Je suis bien d'accord que cela semble le plus logique, mais compte tenu que je dois prendre en compte 6 combinaisons de combinaisons :

    C1 = [1,1,.,.,.,.]
    C2 = [-1,-1,.,.,.,.]
    C3 = [.,.,1,1,.,.]
    C4 = [.,.,-1,-1,.,.]
    C5 = [.,.,.,.,1,1]
    C6 = [.,.,.,.,-1,-1]

    Je dois mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (C[0] ==  C[1]  or/and C[2] == C[3]  or/and  C[4] == C[5] ):
       instructions
    Y'a t'il une instruction or/and ou and/or?

    Je crois que ce code résume tous les cas.

    M.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    or/and ? Je pense que c'est simplement un or que tu veux. Le ou logique n'est pas un ou exclusif. En français, "ou" a plutôt le sens d'un ou exclusif, d'où l'utilisation de et/ou dans un texte, mais en logique (et donc dans tous les langages de programmation), le "ou" est vrai même quand les deux alternatives sont vraies.

    Si tu n'as jamais vu cela (ce qui m'étonnerait tout de même), renseigne-toi sur la logique booléenne, c'est absolument essentiel en informatique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if C[0] == C[1] or C[2] == C[3] or C[4] == C[5]:
       instructions

  5. #5
    Membre émérite
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Par défaut
    bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (C[0] ==  C[1] or C[2] == C[3] or C[4] == C[5])
    par rapport à l'exemple que tu donnes cette condition est satisfaisante.

    edit: grilled by dividee

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 88
    Par défaut
    Bonjour,

    Je retire mon dernier message Trop de programmation tue la logique ^^ !!

    Je viens de m'en rendre compte en pensant à la table logique du OU

    M.

  7. #7
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    compte tenu que je dois prendre en compte 6 combinaisons de combinaisons :
     
    C1 = [1,1,.,.,.,.]
    C2 = [-1,-1,.,.,.,.]
    C3 = [.,.,1,1,.,.]
    C4 = [.,.,-1,-1,.,.]
    C5 = [.,.,.,.,1,1]
    C6 = [.,.,.,.,-1,-1]
    Une solution pourrait être d'utiliser héritage et surcharge.

    Principe: vous classez vos listes en fonction de ces critères. la nature d'une opération sera spécifique au type de liste.
    Note: vous avez déjà classé vos listes mais vous ne leur avez pas encore associé une 'vrai' class.

    Soit C la classe correspondant à vos listes L.
    Dessous vous avez C1, C2, C3 qui traduisent :
    L[0]==L[1]
    L[2]==L[3]
    L[4]==L[5]
    Puis la déclinaison -1/1
    C11 = [1,1,.,.,.,.]
    C12 = [-1,-1,.,.,.,.]
    C21 = [.,.,1,1,.,.]
    C22 = [.,.,-1,-1,.,.]
    C31 = [.,.,.,.,1,1]
    C32 = [.,.,.,.,-1,-1][/CODE]

    C1, C2, C3, C4, C5, C6 sont des sous classes de C fonction de la position/valeur de la paire (1, 1) ou (-1, -1) dans L.
    La trame est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class C(object): pass
    class C1(C): pass
    class C11(C1): pass
    class C12(C1): pass
    class C2(C): pass
    ...
    Ensuite vous avez une fonction 'factory' qui vous retourne le Cn correspondant au L:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def factory(L):
        u1, u2, v1, v2, w1, w2 = L
        if (u1, u2) == (1, 1) : return C11(L)
        ....
    On a fait quoi?
    Nous avons matérialisé vos classes de listes en 'vraies' class.
    C, C1, C11, C12, C2, ... définissent une arborescence dont la racine est C et les feuilles sont C11, C12,...

    La factory permet d'associer à tout L une instance c du Cij qui va bien donc
    isinstance(c, C), isinstance(c, C1), isinstance(c, C12) vous permettent de savoir ce qu'est c.... C'est proche de ce que vous aviez déjà...

    Surcharge:
    Je voudrais émettre des conditions sur ce vecteur, du genre prendre en compte certaines combinaisons pour de futures instructions
    instruction == methode ou fonction associée à notre c.

    Exemple: somme des éléments de L autres que les (1,1) qui nous ont permis de les classer. Appelons la somme
    le calcul de la somme varie - est spécialisé - selon que c est C1, C2 ou C3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class C1(C):
       def somme(self):
             return sum(self._L[:4]) 
    class C2(C): 
       def somme(self):
             return sum(self._L[-2:]+self._L[:2]) 
    class C3(C):
       def somme(self):
             return sum(self._L[-4:])
    Cela fait, comment ca va fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c = factory(L)
    print c.somme()
    Et voilà...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  8. #8
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Très belle solution !

  9. #9
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Citation Envoyé par rambc Voir le message
    Très belle solution !
    Merci mais Manal est tellement le nez dans ses listes depuis la semaine dernière que je ne suis pas certain qu'il puisse avaler cela.
    On verra bien
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Enumération : recherche sur base de la valeur
    Par crawling5 dans le forum Langage
    Réponses: 7
    Dernier message: 21/09/2018, 17h17
  2. [XL-2003] Requette SQL basée sur la valeur d'une cellule
    Par Tsade9 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 24/10/2011, 10h57
  3. Mise à jour basée sur certains champs bien déterminés
    Par ToniConti dans le forum Pentaho
    Réponses: 4
    Dernier message: 06/04/2010, 16h08
  4. requete SQL basée sur une valeur d'un edit
    Par imeneimene dans le forum Bases de données
    Réponses: 2
    Dernier message: 11/06/2009, 08h54
  5. Progress bar basée sur une valeur
    Par Norin dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 11/02/2008, 16h45

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