コードで自分のやりたいことを正確に実行するのに問題があります。引数として2つの数値を取り、その数値を使用して、以前は文字列として格納されていたRNAコードのセクションを調べる関数を定義したいと思います。
次に、「a」と「u」のペアと「g」と「c」のペアになるように、セクション内のすべての可能な塩基対をカウントしたいと思います。ただし、ペア間には3文字のギャップが必要であり、ペアをクロスオーバーすることはできません。たとえば、rna[4]がrna[10]とペアになっている場合、rna[5]はrna[12]とペアにできません。ただし、ペアが4と10の間、つまり5と9の間に発生した場合は、問題ありません。
これまでのところ私は
def base_pairs(x,y):
return (x=='a' and y=='u' or
x=='u' and y=='a' or
x=='c' and y=='g' or
x=='g' and y=='c' or
x=='g' and y=='u' or
x=='u' and y=='g' )
rna = raw_input('Enter RNA sequence: ')
n = len(rna)
def opt(x,y):
for i in range(x,y-5):
j = i+4
if base_pairs(rna[i],rna[j])==1:
print i,j
a = i
b = j
if b-a > 3:
if base_pairs(a+1,b-1)==1:
print a+1,b-1
a = a+1
b = b-1
else:
j=j+1
たとえば、accguugacgcagと入力すると、opt(0,12)を使用して0,4 5,11 6,10を取得したいのですが、現在は0,4しか取得していません。