gpt4 book ai didi

python - if 语句包含多个 "or"条件?

转载 作者:行者123 更新时间:2023-12-01 00:43:03 25 4
gpt4 key购买 nike

我正在尝试编写一个程序,循环遍历一串RNA碱基,找到起始密码子('AUG'),将以下密码子分成三组(即'GAA','ACC'),查找相应的密码子从字典中查找氨基酸,创建一个包含所得氨基酸的字符串,并继续下去,直到遇到终止密码子(“UAA”、“UGA”、“UAG”)。 RNA 以三组为一组进行读取,从起始密码子开始,到终止密码子结束。

问题是,当我希望程序检查它是否击中了三个终止密码子之一时,如果我在同一个 if 语句中列出了所有三个终止密码子,则它不起作用。检查字典时,它会将终止密码子视为未知密码子 (.get(codon, 'X')) 并将其列为蛋白质中的“X”:

a_seq = 'AAAAUGGAAUGAACC'
kmer_size = 3
for start in range (0,len(a_seq)- kmer_size+1,1):
kmer = a_seq[start:start+kmer_size]
if kmer == 'AUG':
start_codon = a_seq.index(kmer)
new_seq = a_seq[start_codon:]
last_codon_start = len(new_seq) - 2
dictionary = {'AUG':'M',
'GAA':'E',
'ACC':'T'}
protein = ''
for start in range(0, last_codon_start, 3):
codon = new_seq[start:start+3]
print(codon)
if codon != 'UAA' or codon != 'UGA' or codon != 'UAG':
amino_acid = dictionary.get(codon,'X')
protein += amino_acid
else:
break
print(protein)
break

输出:

AUG
GAA
UAA
ACC
MEXT

如果我只列出一个终止密码子,那么它就有效:

if codon != 'UAA':
AUG
GAA
UAA
ME

两种蛋白质都应该是“ME”。我预计它一旦击中三个终止密码子中的任何一个就会停止。我的 if 语句有什么问题?

最佳答案

我认为反转检查终止密码子的内部 if 的逻辑会更具可读性:

if codon == 'UAA' or codon == 'UGA' or codon == 'UAG':

但是,通过将所有可能性存储在集合中来进行等效操作会更有效,这将使成员资格检查变得更简单更快。

这就是我的意思(请注意,我还将常量的创建从循环中取出):

START_CODONS = {'AUG': 'M',
'GAA': 'E',
'ACC': 'T'}
STOP_CODONS = {'UAA', 'UGA', 'UAG'}

a_seq = 'AAAAUGGAAUGAACC'
kmer_size = 3

for start in range (0, len(a_seq)-kmer_size+1, 1):
kmer = a_seq[start: start+kmer_size]
if kmer == 'AUG':
start_codon = a_seq.index(kmer)
new_seq = a_seq[start_codon:]
last_codon_start = len(new_seq) - 2
protein = ''
for start in range(0, last_codon_start, 3):
codon = new_seq[start: start+3]
print(codon)
# if codon == 'UAA' or codon == 'UGA' or codon == 'UAG':
if codon in STOP_CODONS:
break
else:
amino_acid = START_CODONS.get(codon, 'X')
protein += amino_acid
print('protein:', protein)
break

输出:

AUG
GAA
UGA
protein: ME

关于python - if 语句包含多个 "or"条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com