我无法让我的代码完全按照我的意愿行事。我想定义一个函数,它接受两个数字作为参数,并使用这些数字来查看以前存储为字符串的 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