如何使用布尔值检查字符串中是否包含某些字符?

-2 投票
3 回答
5773 浏览
提问于 2025-04-18 11:09

如果我想知道某些字符是否出现在一个字符串中,我该怎么做呢?这个字符串会返回一个布尔值(也就是对或错)。具体内容如下:

如果字符串中包含字母 '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

撰写回答