Vous êtes ici : Accueil / Forums & ML / Forums Python / Forum général Python / un incrémenteur qui ne veut pas s'incrémenter

un incrémenteur qui ne veut pas s'incrémenter

Remonter à Forum général Python
  • un incrémenteur qui ne veut pas s'incrémenter

    Envoyé par fripette le 26 Octobre 2006 à 14:56
    Bonjour, Je suis Fripette petite nouvelle dans ce monde (profil biologiste convertie depuis peu à l'informatique)

    donc voilà mon problème, j'ai une fonction veut parcourir une séquence de liste de caractères
    ex seq1= ('0','1','1','0')

    je veux comparer cette séquence à d'autres séquences.Donc j'ai fait une récursive mais le score qui va me permettre d'interpréter mon résultat ne s'incrémente pas du tout!voilà ma modeste fonction:

    def implication(tu):
    sequence=[('0','0','0','1'),('0','-1','0','1'),
    ('0','0','1','1'),('1','-1','1','1')]
    nom=['A','B','C','D']
    i=tu
    print i, len(sequence) # i représente l'indice de ma séquence à initialisation i=o
    for j in xrange(1,len(sequence)): #je compare seq[i] à toutes les autres d'où j
    score=0
    for k in xrange(len(sequence[i])): #je compare chaque élèment de ma séq

    seq1=sequence[i][k]
    seq2=sequence[j][k]
    #print seq1, seq2 seq1 et seq2 sont des chiffres

    if seq1==seq2:
    continue

    elif seq1==0:
    score=score+1

    elif seq1==1 and seq2==0:
    score=score -1

    elif seq1==1 and seq2==-1:
    score=score +1

    elif seq1==-1 and seq2==0:
    score=score -1

    elif seq1==-1 and seq2==1:
    score=score -1

    if score ==0:
    print 'on ne peut rien dire sur le lien entre', nom[i], 'et', nom[j]

    elif score>0:
    print 'la séquence', nom[j], 'peut être un stade plus avancé de', nom[i]

    else:
    print 'la séquence', nom[j], 'ne peut pas être un stade plus avancé de', nom[i]

    if i!=(len(sequence)-1): #permet de faire ma récursive
    implication(i+1)


    implication(0)
    donc voilà mon score ne s'incrémente pas, un truc tout bête pourtant ajouter 1,-1.Je ne vois vraiment pas où est mon erreur.
    Merci
    • Re: un incrémenteur qui ne veut pas s'incrémenter

      Envoyé par bader le 27 Octobre 2006 à 11:14
      Toujours pas très lisible, mais passons, qu'est-ce que le "score" ?
      Si tu veux comparer des tuples à quoi sert "nom" ?
      • Re: un incrémenteur qui ne veut pas s'incrémenter

        Envoyé par fripette le 27 Octobre 2006 à 12:06
        je veux bien améliorer la lisibilité mais je n'arrive pas à indenter les lignes correctement.
        La liste nom correspond et associé à la liste séquence c'est pour éviter les indices trop lourds. nom[0] est le nom de ma séquence[0]

        pour ce qui est du score, les séquences sont representatifs de cancer.
        je veux finalement pour faire simple savoir si sequence[0] et identique à séquence[1]
        et en fonction du score j'en tirerai le resultat vu ds les il elif et else de la fin de ma fonction:

        est ce que la sequence 1 peut etre une evolution de cancer de la sequence 2
        cad le cancer 2 pourra evoluer en un cancer 1.
        voilà


    • Re: un incrémenteur qui ne veut pas s'incrémenter

      Envoyé par bader le 28 Octobre 2006 à 17:33
      Pourquoi au lieu de cette ribambelles de tuple, n'utilises-tu pas un dictionnaire regroupant l'ensemble des séquences (chacune sous forme de tuple cette fois-ci) indexé par leurs noms ?
      Pour la comparaison ça serait très simple, il suffit de parcourir l'ensemble du dictionnaire de comparer chacune des entrées si l'index n'est pas le même que celui comparé.
      Pour l'indentation je pense que c'est parce que tu utilises des tabulations au lieu d'espace ce qui est très fortement déconseillé.
    • Re: un incrémenteur qui ne veut pas s'incrémenter

      Envoyé par domtom le 26 Octobre 2006 à 16:08
      Salut

      Ton code est un peu illisible et il semblerait que certains crochets [ ] aient été supprimés par le moteur du wiki. Pour éviter ce problème :
      1) écris ton code entre [ code] et [ /code]
      2) ajoutes un espace après chaque crochets ouvrants dans le code lui-même

      Et cela deviendra plus facile pour t'aider...

      DomTom
      • Re: un incrémenteur qui ne veut pas s'incrémenter

        Envoyé par fripette le 26 Octobre 2006 à 16:20
        Merci pour ton détail important!

        def implication(tu):
        sequence=[('0','0','0','1'),('0','-1','0','1'),
        ('0','0','1','1'),('1','-1','1','1')]
        nom=['A','B','C','D']
        i=tu
        print i, len(sequence) # i représente l'indice de ma séquence à initialisation i=o
        for j in xrange(1,len(sequence)): #je compare seqà toutes les autres d'où j
        score=0
        for k in xrange(len(sequence)): #je compare chaque élèment de ma séq

        seq1=sequence
        seq2=sequence
        #print seq1, seq2 seq1 et seq2 sont des chiffres
        [code]
        if seq1==seq2:
        continue

        elif seq1==0:
        score=score+1

        elif seq1==1 and seq2==0:
        score=score -1

        elif seq1==1 and seq2==-1:
        score=score +1

        elif seq1==-1 and seq2==0:
        score=score -1

        elif seq1==-1 and seq2==1:
        score=score -1

        if score ==0:
        print 'on ne peut rien dire sur le lien entre', nom, 'et', nom

        elif score>0:
        print 'la séquence', nom, 'peut être un stade plus avancé de', nom

        else:
        print 'la séquence', nom, 'ne peut pas être un stade plus avancé de', nom

        if i!=(len(sequence)-1): #permet de faire ma récursive
        implication(i+1)


        implication(0)
Rendu par Ploneboard