Python 序列比较

Python Sequence Comparison

我正在尝试比较两个序列:

>>> seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
>>> seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatttctccaaacaattgcaacaatccatgagcagtgctgactcaactcaggcctaaactcatgcagaccacacaaggcagatgggctatataaacgttttcgcttttccgtttacgatatatagtctactcttgtgcagaatgaattctcgtaactacatagcacaagtagatgtagttaactttaatctcacatagcaatctttaatcagtgtgtaacattagggaggacttgaaagagccaccacattttcaccgaggccacgcggagtacgatcgagtgtacagtgaacaatgctagggagagctgcctatatggaagagccctaatgtgtaaaattaattttagtagtgctatccccatgtgattttaatagcttcttaggagaatgac"

但是我使用的代码卡在了最后 sequence_comparison。这段代码是在网上找到的,我很难找到它的问题所在。提供的语法错误突出显示了最后一段代码开头的 s:

def sequence_compare(seq_a, seq_b):
    len1 = len(seq_a)
    len2 = len(seq_b)
    mismatches = []
    for pos in range (0,min(len1,len2)):
        if seq_a[pos] != seq_b[pos]:
            mismatches.append('|')
        else:
            mismatches.append(' ')
    print(seq_a)
    print(mismatches)
    print(seq_b)
sequence_compare(seq_a,seq_b)

谁能帮我找出问题所在?

问题似乎是 mismatches 显示为列表,而不是字符串。我已将其转换为字符串:

更新代码

def sequence_compare(seq_a, seq_b):
    len1 = len(seq_a)
    len2 = len(seq_b)
    mismatches = ""
    for pos in range (0,min(len1,len2)):
        if seq_a[pos] != seq_b[pos]:
            mismatches += '|'
        else:
            mismatches += ' '
    print(seq_a)
    print(mismatches)
    print(seq_b)

seq_a = "tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt"
seq_b = "agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg"

sequence_compare(seq_a,seq_b)

输出

tgaaactcaagccttaccgcagagacagaagaaacagcaaactgtgactcttcttcctgctgcagatttggatgatt
|  ||  |  ||||||||||   |||  |||| || ||||||| ||||| || |||||||||||| ||| | ||| |
agagcctaaaaaggacaaaaagaagaaggctgatgaaactcaagccttaccgcagagacagaagaaacagcaaactg

在python中必须添加缩进,如果您不在某些地方添加缩进,您的代码将无法运行;这里声明函数后,声明函数后需要加缩进

def sequence_compare(seq_a, seq_b):
    len1 = len(seq_a)
    len2 = len(seq_b)
    mismatches = []
    for pos in range (0,min(len1,len2)):
        if seq_a[pos] != seq_b[pos]:
            mismatches.append('|')
        else:
            mismatches.append(' ')
    print(seq_a)
    print(mismatches)
    print(seq_b)

这段代码应该可以工作,因为我在需要的地方添加了缩进。