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