(在Python 3中)
def melting_temperature(dna_sequence, formula):
if formula == 'c':
return melting_temperature_count(dna_sequence)
else:
modern = melting_temperature_count(dna_sequence)
for i in len(range(dna_sequence)):
if dna_sequence[i] == 'a' and dna_sequence[i+1] == 't':
modern += modern * 0.01
return modern
我的If语句计算dna_sequence的熔化温度。 在我的Else声明中,它重新运行melting_temperature_count(先前定义的函数)并使用该计算的数字,然后如果' A'则增加1%。和' T'在dna_sequence中相邻。我不知道如何比较索引,但我想出了这个,但是它返回了一个错误 builtins.TypeError:' str' object不能解释为整数 有人可以告诉我,如果两个东西相邻,我怎么看?我希望我解释得这么好。
答案 0 :(得分:0)
这可能会有所帮助:
def ATadjacentCount(s):
return len([x for x,y in zip(s,s[1:]) if set((x,y)) == set(('A','T'))])
例如:
>>> ATadjacentCount("ATGTAGTAG")
3
要了解其工作原理,请考虑:
ATGTAGTAG
TGTAGTAG
* * *
如果需要,您当然可以更改为小写。请注意,向数量添加1%相当于将其乘以1.01。如果k是相邻AT对的计数,则可以乘以1.01 ** k - 您不必在循环中进行调整。
答案 1 :(得分:0)
您可以将字符串转换为列表并迭代列表,比较相邻的值,例如
temp = "string"
lis = list(temp)
for i in range(0, len(lis)-1):
if lis[i] == 'n' and lis[i+1] == 'i' or lis[i] == 'n' and lis[i-1] == 'i':
print "Adjacent"