不确定for循环

时间:2013-09-12 18:20:43

标签: python string function

不确定我在这里做错了什么。任何帮助,将不胜感激。当我输入包含不良变量(如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

3 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

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

for char in dna:
    if char not in "TCGA":
        return False

答案 2 :(得分:1)

在测试第一个角色后,你总是回来。继续测试直到你遇到一个坏角色,在你测试整个字符串之前不要返回True