Booleans:使用!=以及==

2024-10-06 07:44:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用不同的布尔来得到相同的结果。我有两个功能,我不明白为什么一个能用另一个不能用

这样做有效:

dna='ATGTGGTAG'

def orf_4(dna):
    if dna[len(dna)-3:]=='TGA' or dna[len(dna)-3:]== 'TAG' or dna[len(dna)-3:]=='TAA':
        return 'This could be an ORF'
    else:
        return 'This is not an ORF'

print orf_4(dna)

这是不可能的。对于任何输入,它都返回“This is not a ORF”

dna='ATGTGGTAG'

def orf_3(dna):
    if dna[len(dna)-3:]!='TGA' or dna[len(dna)-3:]!= 'TAG' or dna[len(dna)-3:]!='TAA':
        return 'This is not an ORF'
    else:
        return 'This could be an ORF' 
print orf_3(dna)

有人对为什么会这样有什么建议吗


Tags: oranlenreturnifisdeftag
2条回答

每个条件之间的or实际上应该是一个and

对于第一个和第二个if语句,如果任何条件返回True,则返回块将执行

例如

>>> True or True or False
True
>>>
>>> True or False or False
True

因此在第二个示例中dna[len(dna)-3:]不能等于所有三个字符串,因此至少有两个条件将返回True,这意味着if语句将返回True

对于第二个语句,应该使用and而不是or。如果一个条件返回False,则整个语句将返回False

例如

>>> True and False and True
False

相关问题 更多 >