14
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

私はPythonが初めてです。上に貼り付けたプログラムは、具体的には「if temp == dna2:」行で「インデントでのタブとスペースの一貫性のない使用」というエラーを表示します。インデントがどのように間違っているかを知るために誰かが私を助けてくれますか?

4

6 に答える 6

21

インデントにスペースとタブが混同されていることを意味します。タブまたはスペースと一致するように修正する必要があります。

于 2012-10-20T14:11:14.957 に答える
5

線をよく見ると

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

コードでは、各行の先頭にある「スペース」が異なる方法で「構築」されていることがわかります。ある場合には、タブと他のスペースを使用します。または、両方にタブとスペースがある場合、それらは異なる組み合わせで使用されます。

各行の先頭にカーソルを置き、右矢印キーを使用して文字を「ウォーク」することで、これを調べることができます。行ごとにカーソルの動きが異なることがわかります。

修正するには、各行の先頭にあるタブとスペースを削除し、各行に同じ文字で再挿入します。

今後回避するには、タブ キーまたはスペース キーのみを使用してインデントするように自分自身を訓練し、タブをスペースに自動的に変換するようにエディターを設定することを検討してください。

于 2012-10-20T15:17:31.520 に答える
1

「良い」IDE を持っていると仮定すると、「タブ」の代わりに 4 つのスペースを作るようにタブ キーを設定するのが最善です。そうすれば、問題が少なくなり、他の人と作業するときの良い習慣になります。

于 2012-10-20T15:06:07.003 に答える
1

私はしばらくの間、この問題にほとんど頭を悩ませていました。私は CentOS Ec2 を使用していましたが、次のことができることがわかりました。

vim <ファイル名>
書き込み/挿入モードの場合は Escape キーを押します
:セットリスト

スペースは、シンボルなどの行末として表示されます。$役に立ちます。

于 2020-03-27T22:29:41.700 に答える