首页 > 解决方案 > def 函数比较两个字符串

问题描述

我们需要定义一个比较两个字符串的函数,如果它们不同,我们想知道索引。问题是无论我们使用什么插入,我们总是得到-1,即使它们不一样。

def mutation_detector(seq1,seq2):
    if DNAval(seq1) and DNAval(seq2) == True:
        if len(seq1) == len(seq2):
            for i in range(0, len(seq1)) and range(0, len(seq2)):
                if seq1[i] != seq2[i]:
                    return(i)
                else:
                    return(-1)
        else:
            return('Wrong input')
    else:
        return('Wrong input')

print(mutation_detector('ATCGGGTA','ATCGGCTA'))

标签: python-3.x

解决方案


问题是,您在第一次运行 for 循环时返回 -1,因为立即输入 else 子句。将 else 子句与 for 循环本身一起使用。例如:

def compare_strings(seq1, seq2):
    if len(seq1) == len(seq2):
        for i in range(0, len(seq1)):
            if seq1[i] != seq2[i]:
                return i
        else:
            return -1
    else:
        return 'Wrong input'

(请注意,引发自定义异常可能比在这里返回“错误输入”更好......)


推荐阅读