Python 3.x DNA最长公共子序列

Python 3.x DNA最长公共子序列,python-3.x,Python 3.x,这是一个家庭作业问题,让我很困惑。我曾多次尝试编写此代码,但仍然一无所获。问题是找到两条DNA链之间最长的公共子序列并打印序列。这里有没有人能帮我,让我知道该怎么做?我已经设置了窗口,并使用find函数来查看字符串的相等位置,然后设置max函数来只显示最长的字符串 def main(): s1 = input("Enter first strand: ") s2 = input("Enter second strand: ") window = 0 if len(s1) < len(s2

这是一个家庭作业问题,让我很困惑。我曾多次尝试编写此代码,但仍然一无所获。问题是找到两条DNA链之间最长的公共子序列并打印序列。这里有没有人能帮我,让我知道该怎么做?我已经设置了窗口,并使用find函数来查看字符串的相等位置,然后设置max函数来只显示最长的字符串

def main():

s1 = input("Enter first strand: ")
s2 = input("Enter second strand: ")
window = 0
if len(s1) < len(s2):
    window = len(s1)
elif len(s1) > len(s2):
    window = len(s2)
else:
    window = len(s1)
for i in range(window, 1, -1):
    for j in range(0, i, 1):
     if s1.find(s1[i:i + window]) == s2.find(s2[i:i + window]):
        max = a[0][0]
        for i in range(len(a)):
            for j in range(len(a[i]):
                if (a[i][j] > max):
                    max = a[i][j]
                    print ("Common Subsequence: ", max)
     else:
        print ("No Common Sequence Found")

main()
def main():
s1=输入(“输入第一条线:”)
s2=输入(“输入第二条线:”)
窗口=0
如果len(s1)len(s2):
窗口=透镜(s2)
其他:
窗口=透镜(s1)
对于范围内的i(窗口,1,-1):
对于范围(0,i,1)内的j:
如果s1.find(s1[i:i+window])==s2.find(s2[i:i+window]):
max=a[0][0]
对于范围内的i(len(a)):
对于范围内的j(len(a[i]):
如果(a[i][j]>最大值:
max=a[i][j]
打印(“公共子序列:”,最大值)
其他:
打印(“未找到公共序列”)
main()

假设给定的股线长度相等(因为这是家庭作业,所以我会让您调整长度不等的股线)

希望这有帮助

编辑:实现
查找

def myFind(string, substring):
    for i in range(len(string) - len(substring)):
        if string[i] == substring[0]:
            if string[i:i+len(substring)] == substring:
                print substring, "found in", string, "at position", i
如果不想使用字符串比较:

def myFind(string, substring):
    for i in range(len(string) - len(substring)):
        if string[i] == substring[0]:
            found = True
            for j in range(len(substring)):
                if string[i+j] != substring[j]:
                    found = False
            if found:
                print substring, "found in", string, "at position", i

哈哈,我对你的代码一无所知。这是编程类的介绍,到目前为止,我们已经介绍了字符串、列表和find函数。他希望我们实现find函数并打印出最长的公共子序列。好的,我将编写一个简单的find版本。剩下的由你决定;]
def myFind(string, substring):
    for i in range(len(string) - len(substring)):
        if string[i] == substring[0]:
            found = True
            for j in range(len(substring)):
                if string[i+j] != substring[j]:
                    found = False
            if found:
                print substring, "found in", string, "at position", i