Swift中DNA到RNA的转录

时间:2018-02-01 17:37:44

标签: swift string dna-sequence

我试图在Swift中给出DNA链(一个字符串)返回RNA补体。基本上,如果DNA有一个" T",我用" U"替换它。

我的代码是:

func toRNA(DNA: String) -> String{
    var RNA = DNA
    for ntide in RNA{
        if ntide == "T"{
            ntide = "U"
        }
    }
    return RNA
}

Swift ::错误:

  

无法分配价值:' ntide'是一个“让...”

ntide = "U"
~~~~~ ^

2 个答案:

答案 0 :(得分:3)

使用

func toRNA(DNA: String) -> String{
    return DNA.replacingOccurrences(of: "T", with: "U")
}

答案 1 :(得分:2)

您的问题是由import os os.system("clear") start= raw_input("SUP?\n\n1: Repo\n2: Installed\n...") if int(start)== 1: os.system("clear") while True: repo= raw_input("\n1: Search repo\n2: Install\n3: Back\n...") if int(repo)== 1: os.system("clear") search= raw_input("What are you trying to search?\n") os.system("apt-cache search " + search) if int(repo)== 2: os.system("clear") inst= raw_input("What would you like to install?\n") os.system("sudo apt-get install " + inst) else??? if int(start)==2: os.system("clear") ins=raw_input("\n1: Search Installed\n2: Delete installed\n...") 循环中声明的变量是不可变的这一事实引起的。对于简单的for ... in ...,您只需遍历Collection中存在的索引范围,并使用下标来访问可变变量的值。

Collection

但是,由于func toRNA(_ DNA:[Character])->String{ var RNA = DNA for i in 0..<DNA.count { if RNA[i] == "T" { RNA[i] = "U" } } return String(RNA) } let dna:[Character] = ["A","C","G","T"] toRNA(dna) //"ACGU" 索引和下标的不同,这对您的问题来说不是那么简单,因此上面的示例使用String来显示泛型方法。有关字符串的具体问题,请参阅以下解决方法。

您可以解决此问题,而不是将Array<Character>复制到DNA,然后通过RNA迭代以获取必要的字符,只需遍历RNA并更改要添加什么字符。

DNA

一个没有解决特定问题的简单解决方案,但适用于此特定问题的方法是使用简单的func toRNA(DNA: String) -> String{ var RNA = "" for char in DNA { if char == "T" { RNA.append("U") } else { RNA.append(char) } } return RNA } map的所有字符转换为"T"

"U"