web-dev-qa-db-fra.com

Utilisation incohérente des tabulations et des espaces dans l'indentation

def contains_sequence(dna1, dna2):
    ''' (str, str) -> bool

    Return True if and only if DNA sequence dna2 occurs in the DNA sequence
    dna1.

    >>> contains_sequence('ATCGGC', 'GG')
    True
    >>> contains_sequence('ATCGGC', 'GT')
    False

    '''
    b=False
    len2=len(dna2)
    i=0
    for j in dna1:
        temp=dna1[i:i+len2]
        if temp == dna2:
            b=True
        i=i+1
    return b

Je suis nouveau sur Python. Le programme collé ci-dessus me donne une erreur "Utilisation incohérente des tabulations et des espaces dans l'indentation" à la ligne "si temp == dna2:" spécifiquement. Quelqu'un peut-il m'aider s'il vous plaît à découvrir comment l'indentation est incorrecte?

12
knightcool

Cela signifie que vous avez mélangé des espaces et des onglets dans l'indentation. Vous devez corriger cela pour être cohérent avec les tabulations ou les espaces.

20
poke

Si vous regardez attentivement les lignes 

    temp=dna1[i:i+len2]
    if temp == dna2:

dans votre code, vous verrez que "l'espace" au début de chaque ligne est "construit" différemment. Dans un cas, il utilise des onglets et dans les autres espaces, ou, si les deux ont des onglets et des espaces, ils sont utilisés dans des combinaisons différentes.

Vous pouvez examiner cela en plaçant votre curseur au début de chaque ligne et en utilisant la touche flèche droite pour "parcourir" votre chemin à travers les caractères. Vous verrez que le curseur se déplace différemment sur chaque ligne.

Pour résoudre ce problème, supprimez les tabulations et les espaces au début de chaque ligne et ré-insérez-les avec les mêmes caractères sur chaque ligne.

Pour éviter à l'avenir, apprenez à utiliser uniquement la touche de tabulation OR la touche d'espacement à mettre en retrait et envisagez de configurer votre éditeur pour qu'il convertisse automatiquement les tabulations en espaces.

4
Larry Lustig

En supposant que vous ayez un "bon" IDE, il est préférable de définir la clé de tabulation de manière à créer 4 espaces au lieu d'un "tab", de cette manière, vous aurez moins de problèmes, et c'est une bonne pratique, car vous travaillerez avec d'autres personnes. 

1
razi

Selon les chaînes de votre doc

votre code:

b=False
len2=len(dna2)
i=0
for j in dna1:
    temp=dna1[i:i+len2]
    if temp == dna2:
        b=True
    i=i+1
return b

Ce code beaucoup Big peut être simplifié à une ligne

return dna1.find(dna2)>=0

Aussi, si vous n'êtes pas bon avec les empreintes dans l'éditeur 'vim', il est bon de s'exercer dans IDLE3

0
D3vil_Mind