在简单列表中查找特定字符串

2024-03-28 13:54:52 发布

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

我是编程新手,我正在尝试编写一个关于DNA的代码,用户输入一个特定的DNA序列。然后程序必须将输入的DNA翻译成特定的氨基酸。你知道吗

我尝试将用户输入的每个DNA字符串转换成一个列表,然后使用“in”函数查看用户输入的哪个DNA与特定的氨基酸相对应。我的代码如下:

dna = input("please enter the DNA sequence in CAPS: ")

# a variable called codons to convert the entered DNA sequence into a list of 3 characters per element
codons = [dna[start:start+3] for start in range (0,len(dna),3)]

# we now create an if structure which matches each codon to its appropriate amino acid
if "ATA" or "ATC" or "ATT" in codons:
         print("Isoleucine")

if "CTT" or "CTC" or "CTA" or "CTG" or "TTA" or "TTG" in codons:
        print("Leucine")

if "GTT" or "GTC" or "GTA" or "GTG" in codons:
        print("Valine")

if "TTT" or "TTC" in codons:
        print("Phenylalanine")

if "ATG" in codons:
        print("Methionine")

问题是当我运行代码时,它打印的是大多数密码子类型而不是特定的氨基酸,例如,如果用户输入“ATA”,它打印的是异亮氨酸、亮氨酸、缬氨酸和苯丙氨酸,而不是只打印异亮氨酸。你知道吗


Tags: ortheto代码用户inif编程
2条回答

尝试以下操作:

if any(i in codons for i in ["ATA" , "ATC", "ATT"]):
    # your prints

而不是写两本书。你知道吗

“in”运算符比“or”运算符具有更高的前生。 因此,您的表达式等价于

if "ATA" or "ATC" or "ATT" in codons:
==>
if "ATA" or "ATC" or ("ATT" in codons):

计算结果为“ATA”。你知道吗

使用(y中的x)或(y中的z)。。。 或者定义一个函数

def any_in(elements, container):
    for element in elements:
        if element in container:
            return True
    return False

并称之为:

if any_in(["ATA", "ATC", "ATT"], codons):
    ...

https://www.programiz.com/python-programming/precedence-associativity

相关问题 更多 >