如何创建一个查看字符串中单个字母的函数?

时间:2017-03-11 05:11:21

标签: python string function

我正在尝试创建一个函数,它将接受DNA字符串,然后补充它们(即如果A,给T,如果G,给C [反之亦然])。

到目前为止,我有这段代码:

def Complement(DNA):
    DNA = input("Enter your DNA string:")
    if DNA == 'A':
        result = 'T'
    elif DNA == 'T':
        result = 'A'
    elif DNA == 'G':
        result = 'C'
    else:
        result = 'G'
    return (result)

但是,python正在拿起4位数字'字符串作为' else'并导致G作为输出。如何更改此代码,以便任何人都可以输入随机字母/大小的DNA字符串,该函数将补充每个字母? 如果您在DNA字符串中只有一个字母并非真有帮助,则此代码有效:/

感谢

5 个答案:

答案 0 :(得分:9)

Python string translate method就是针对这类问题而设计的:

>>> import string
>>> xlat = string.maketrans('atgcATGC', 'tacgTACG')
>>> 'gattaca'.translate(xlat)
'ctaatgt'

xlat 变量是一个转换表。 str.translate()方法接受一个字符串并应用转换表。

答案 1 :(得分:3)

尝试一下:

def complement():
    # read the DNA sequence from stdin
    dna = input("Enter your DNA string:")

    # start with an empty result
    result = ""

    # iterate over each character of the sequence, and
    # add the corresponding character to the result
    for character in dna:
        if character == "A":
            result += "T"
        elif character == "T":
            result += "A"
        elif character == "G":
            result += "C"
        elif character == "C":
            result += "G"

    return result

答案 2 :(得分:2)

执行此操作的简单方法将使用词典。

此外,这是非区分大小写,因为我在循环之前调用 .upper()字符串函数。

di = {
    "A":"T",
    "T":"A",
    "G":"C",
    "C":"G"
}

def Complement(DNA):
    result = ""
    for char in DNA.upper():
        result += di[char]
    return (result)

print(Complement("ATGC"))
print(Complement(input("Enter your DNA string: ")))

答案 3 :(得分:2)

你需要遍历字符串DNA来比较每个字符。在您的情况下,您将整个字符串DNA与单个字符进行比较。

DNA = input("Enter your DNA string:")
for i in DNA:
    if i == 'A':
        result = 'T'
    elif i == 'T':
        result = 'A'
    elif i == 'G':
        result = 'C'
    else:
        result = 'G'

您可能希望将结果存储在某处,而不是覆盖结果的值,您可以将其附加到结果

def Complement(DNA):
    result = ""
    for i in DNA:
        if i == 'A':
            result = result + 'T'
        elif i == 'T':
            result =result +  'A'
        elif i == 'G':
            result = result + 'C'
        else:
            result = result + 'G'
    return (result)

答案 4 :(得分:0)

这样的东西可以让你选择任意长度的字符串:

def Complement():
    print("Enter your DNA string: ")
    DNA = str(input())
    result = ''
    for i in DNA:
        if i == 'A':
            result = result + 'T'
        elif i == 'T':
            result = result + 'A'
        elif i == 'G':
            result = result + 'C'
        else:
            result = result + 'G'
   return result