You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DNA序列配对检测函数问题排查:为何未识别符合条件的片段?

问题排查与修正

你的complement5函数核心问题是循环内部的else分支直接返回False,导致程序仅检查第一个长度为5的子串后就终止,后续符合条件的子串完全没机会被验证。

比如测试用例中,sequence1 = 'CAATTCC'的第一个子串是CAATT,它的互补/反向互补序列不在sequence2中,此时函数直接返回False,根本不会检查第二个子串AATTC——而AATTC的互补序列TTAAG是存在于sequence2 = 'CTTAAGG'中的。

修正后的代码

def complement5(sequence1, sequence2):
    for i in range(len(sequence1) - 4):
        substr1 = sequence1[i:i+5]
        if complement(substr1) in sequence2 or reverse_complement(substr1) in sequence2:  # 注意原代码里的reverese_complement拼写错误
            print(f'{substr1, complement(substr1), reverse_complement(substr1)} in {sequence2}')
            return True
    # 所有子串检查完毕后才返回False
    return False

关键修改点

  • 移除循环内的else分支,将return False移至循环体外:只有当所有长度为5的连续子串都不满足配对条件时,才返回False。
  • 修正了原代码中reverese_complement的拼写错误(多了一个e),确保调用正确的反向互补函数。

调用修正后的complement5('CAATTCC','CTTAAGG')会正确返回True。

内容的提问来源于stack exchange,提问作者Voldemort Snape

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:20:18