如何使用布尔值检查字符串中是否包含某些字符?
如果我想知道某些字符是否出现在一个字符串中,我该怎么做呢?这个字符串会返回一个布尔值(也就是对或错)。具体内容如下:
如果字符串中包含字母 'A'、'T'、'C' 或 'G',就返回 True
;如果没有这些字母,就返回 False
。
定义一个函数叫做 is_valid_sequence(dna):
>>> is_valid_sequence('ATCG')
True
>>> is_valid_sequence('AtcGEQ')
False
那么应该怎么写这个代码呢?谢谢!
3 个回答
0
一个字符串如果只包含字母 ATCG
,那么它就包含了一个有效的DNA序列(虽然不一定要包含所有的字母 - 比如你可能会有一个基因序列里面没有 C
,不过这种情况当然比较少见)。
考虑到这一点,这个函数应该是
def is_valid_sequence(seq):
return set(seq).issubset({"A", "T", "C", "G"})
>>> is_valid_sequence("AAAATAATG")
True
>>> is_valid_sequence("AAAATAATGX")
False
>>> is_valid_sequence("AAAATACTAATG")
True
0
你的问题中提到了 'A', 'T', 'C' 或 'G'
,但是你的输出显示应该是 'A', 'T', 'C' 和 'G'
,所以你可以用 all
来检查 l
中的每个 char
是否都在你的字符串里:
l = [ 'A', 'T', 'C' ,'G']
s = 'AtcGEQ'
print all(x in s for x in l)
False
s='ATCG'
print all(x in s for x in l)
True
如果你想检查 'A' 或 'T' 或 'C' 或 'G'
是否在 s 中:
l = [ 'A', 'T', 'C' ,'G']
s= 'AtcGEQ'
print any(x in s for x in l)
True
但是这和你问题中的内容不匹配:
>>> is_valid_sequence('AtcGEQ')
False
2
正如这个回答中提到的 - 如何检查一个字符串是否包含特定字符?
def is_valid(dna)
if 'A' or 'T' or 'G' or 'C' in dna:
return True
else:
return False