-2

私は新しい..私のスクリプトはかなり長いので、特定の部分を書き留めます。

str= ''
#str is a long DNA sequence

def FIND_UPPER(str):
    global x
    x=str.upper()
    y=0
    while y>(-1):
        y=x.find('CTTTGATTCCT')
        z=x[y+11:y+22]
        x=x[y+23:]

        variability(z)

#variability is another function

FIND_UPPER(str)

そして、私はこのメッセージを受け取ります:

リストのインデックスは str ではなく整数でなければなりません

それらの行について:

variability(z)
FIND UPPER(str)

どうすればこれを修正できますか? ありがとう

編集: これは変動性です:

A=[0]*10
C=[0]*10
T=[0]*10
G=[0]*10

def variability(z):
    for i in z:
        if i=='A': 
            A[i]=A[i]+1
            i=i+1

        elif i=='T':
            T[i]=T[i]+1
            i=i+1

        elif i=='C':
            C[i]=C[i]+1
            i=i+1

        elif i=='G':
            G[i]=G[i]+1
            i=i+1

    return G
    return C
    return T
    return A

私はそれを修正しました。私が正しいかどうか教えてもらえますか? :

def variability(z):
    for i in range(len(z)):
        if i=='A': 
            A[i]=z[i]
            A[i]+=1
            i+=1

        elif i=='T':
            T[i]=z[i]
            T[i]+=1
            i+=1

        elif i=='C':
            C[i]=z[i]
            C[i]+=1
            i+=1

        elif i=='G':
            G[i]=z[i]
            G[i]+=1
            i+=1

    return G,C,T,A
4

2 に答える 2

0

ループでは、次のようなことをしなければなりません:

for i in range(len(z)):
    letter = A[i]

範囲関数の結果を反復すると、「i」は数値を取ります。文字列を反復処理すると、文字列の各文字が取得されます

then 比較変数「文字」

if letter == 'A':
    ...

変数関数には注意してください。最初の return ステートメントの値のみが返されます。

于 2013-08-21T10:30:17.850 に答える