我正在尝试使用不同的布尔来得到相同的结果。我有两个功能,我不明白为什么一个能用另一个不能用
这样做有效:
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)
有人对为什么会这样有什么建议吗
每个条件之间的
or
实际上应该是一个and
对于第一个和第二个if语句,如果任何条件返回
True
,则返回块将执行例如
因此在第二个示例中
dna[len(dna)-3:]
不能等于所有三个字符串,因此至少有两个条件将返回True
,这意味着if语句将返回True
对于第二个语句,应该使用
and
而不是or
。如果一个条件返回False
,则整个语句将返回False
例如
相关问题 更多 >
编程相关推荐