Archive

Un peu d’aide pour comprendre ?

FlorieS

Bonjour,

J’essaye de comprendre l’exercice de la semaine 1.
Pourriez-vous me dire ce qui ne va pas dans ce que j’ai fait s’il-vous-plait ?

J’obtiens un message d’erreur ensuite qui me dit: “TypeError(‘cannot unpack non-iterable int object’)”…
Merci pour votre aide !

ozurfluh

1/ les déclarations en python ne sont pas comme en pseudocode
pour faire simple faire : nbA = 0, nbC = 0, etc.

2/ nbA + 1 ne change rien à nbA. Vous avez voulu faire : nbA += 1 (l’équivalent de nbA = nbA + 1)
idem pour les 3 autres conditions et pour TotalNb

FlorieS

Ah d’accord, merci pour votre réponse !

Camycandy

il y a plus simple

class Calcule_ACGT():

def compter_ACGT(self):
    self.Anb=self.chaine.count(self.GROUP_ATCG[0])
    self.Tnb=self.chaine.count(self.GROUP_ATCG[1])
    self.Cnb=self.chaine.count(self.GROUP_ATCG[2])
    self.Gnb=self.chaine.count(self.GROUP_ATCG[3])
    self.total_ACGT=self.Anb+self.Tnb+self.Cnb+self.Gnb

def compte_AT_GC(self)->(float,float):
    """
        il va compter le nombre de AT et GC dans la chaine d'ADN

    :return: il va remetre les deux valeur en pourcent
    la premier valeur c'est AT et la deuxieme c'est GC
    """
    return (((self.Gnb+self.Cnb)/self.total_ACGT),(self.Anb+self.Tnb)/self.total_ACGT)

def affichage_total(self):
    print("nombre d\'adénine A:",self.Anb)
    print("nombre de cytosine C:",self.Cnb)
    print("nombre de guanine G:",self.Gnb)
    print("nombre de thymine T:",self.Tnb)
    print("nombre d\'adénine A:", self.Anb)
    print("nombre de cytosine AT:", self.ATnb)
    print("nombre de cytosine GC:", self.GCnb)
    print("nombre de nucléotides:",self.total_ACGT)

def __init__(self, chaine:str):
    self.GROUP_ATCG="ATCG"
    self.chaine=chaine+'#'
    self.Anb=0
    self.Cnb=0
    self.Gnb=0
    self.Tnb=0
    self.ATnb=0
    self.GCnb=0
    self.total_ACGT=0

    """ def compte_AT_et_GC(self)->(float,float):

                il va compter le nombre de AT et GC dans la chaine d'ADN

            :return: il va remetre les deux valeur en pourcent
            la premier valeur c'est AT et la deuxieme c'est GC

            i = 0
            while self.chaine[i] != '#':
                if self.chaine[i:i+2] == 'AT':
                   self.ATnb +=1

                elif self.chaine[i:i+2] == 'GC':
                    self.GCnb+=1

                i += 1
            #print(((self.ATnb/(self.ATnb+self.GCnb)),(self.GCnb/(self.ATnb+self.GCnb))))
            return ((self.GCnb/(self.ATnb+self.GCnb)),self.ATnb/(self.ATnb+self.GCnb))
    """

quand pense tu ?