0

不知道我在这里做错了什么。任何帮助,将不胜感激。当我输入包含错误变量(如 Z)的 DNA 序列时,我不断得到返回 True。有人能指出为什么吗?

谢谢

def is_valid_sequence(dna):
    """ (str) -> bool

    >>> is_valid_sequence('ATCG')
    True
    >>> is_valid_sequence('AZT')
    False
    >>> is_valid_sequence('atcg')
    False

    Returns a boolean result based on whether dna is a valid
    dna sequence.
    """



    for char in dna:
        if char in "TCGA":
            return True
        else:
            return False
4

3 回答 3

7

您将在循环的第一次迭代中返回:return 结束函数,并且循环主体中的所有路径都包含一个return. 你可能想要

for char in dna:
    if char not in 'TCGA':
        return False
return True

或者,更 Python 地:

return all(char in 'TCGA' for char in dna)
于 2013-09-12T18:22:07.717 回答
1

在您的代码中,您一个一个地获取字符,如果它在“TCGA”中,则返回 True。因此,如果第一个字符在“TCGA”中,它将返回 True 并停止执行。你应该这样做:

for char in dna:
    if char not in "TCGA":
        return False
于 2013-09-12T18:21:50.633 回答
1

您总是在测试第一个字符后返回。True继续测试,直到遇到错误字符,在测试整个字符串之前不要返回。

于 2013-09-12T18:22:24.943 回答