Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x python正在尝试编写名为one_frame的函数。似乎不起作用。非常感谢您的帮助_Python 3.x - Fatal编程技术网

Python 3.x python正在尝试编写名为one_frame的函数。似乎不起作用。非常感谢您的帮助

Python 3.x python正在尝试编写名为one_frame的函数。似乎不起作用。非常感谢您的帮助,python-3.x,Python 3.x,现在,这是我的代码: def get_orf(DNA): codon = '' if(DNA[0:3] == 'ATG'): codon = DNA[0:3] for x in range(3,len(DNA)+1,3): if DNA[x:x+3] == "TAG" or DNA[x:x+3] == "TAA" or DNA[x:x+3] == "TGA": return codon

现在,这是我的代码:

def get_orf(DNA):

    codon = ''
    if(DNA[0:3] == 'ATG'):
        codon = DNA[0:3]
        for x in range(3,len(DNA)+1,3):
            if DNA[x:x+3] == "TAG"  or DNA[x:x+3] == "TAA" or DNA[x:x+3] == "TGA":
                return codon
            else: codon = codon + DNA[x:x+3] 

    if codon[-3:] in ["TAG", "TAA", "TGA"]:
        return codon
    else: return 'No ORF'  

def one_frame(DNA):

    x = 0
    ORFlist = []

    while x < len(DNA):
        codon = DNA[x:]
        if DNA.startswith('ATG'):
            get_orf(DNA[x:])
            if codon:
                ORFlist.append(codon)
            x += len(codon)
    return(ORFlist)
def get_orf(DNA):
密码子=''
如果(DNA[0:3]=“ATG”):
密码子=DNA[0:3]
对于范围(3,len(DNA)+1,3)内的x:
如果DNA[x:x+3]=“标记”或DNA[x:x+3]=“TAA”或DNA[x:x+3]=“TGA”:
返回密码子
else:密码子=密码子+DNA[x:x+3]
如果密码子[-3:]位于[“TAG”,“TAA”,“TGA”]:
返回密码子
其他:返回“无ORF”
def一个_框架(DNA):
x=0
ORFlist=[]
而x
get_orf函数工作正常,但我的单帧函数不工作。 单帧函数应该以一个DNA字符串作为输入。它搜索到 以三个核苷酸的倍数从左到右排列,也就是说,在一个阅读框中。什么时候 它在从起始密码子开始的字符串片段上点击一个起始密码子“ATG”,并调用get_orf (直到最后)获取ORF。该ORF被添加到ORF列表中,然后函数跳过 在DNA序列的前面,在我们刚刚找到并开始寻找的ORF之后
下一个ORF。这将重复,直到我们遍历了整个DNA字符串。

我可以看到一些明显的问题,但不确定您到底想要什么,希望这能有所帮助。首先,您的
for
循环在
一帧中将永远不会结束,除非DNA以“ATG”开头。我想您应该检查
密码子。开始时使用
,而不是e> DNA.startswith
。您还需要在if语句之外执行
x+=
命令,否则当您不点击“ATG”时,它将永远不会更新,因此您的循环将永远继续。您也根本没有使用
get\u orf
的值

我想这就行了

def one_frame(DNA):

    x = 0
    ORFlist = []

    while x < len(DNA):
        codon = DNA[x:]
        # Check codon instead of DNA
        if codon.startswith('ATG'):
            # Record the return value of get_orf
            orf_return_value = get_orf(DNA[x:])

            if orf_return_value:

                ORFlist.append(orf_return_value)

            x += len(orf_return_value)
        # Increment by 3 if we don't hit ATG
        else:
            x += 3

    return(ORFlist)
def一帧(DNA):
x=0
ORFlist=[]
而x
以何种方式不起作用?向我们展示一些预期输出的示例,以及它与实际结果的差异。以下是一些预期输出的示例:>>>one_frame(“AATGCCATGCCCTAA”)['ATG'、'ATGCCC']>>>one_frame(“ATGCCCATGGGAATTGACC”)['ATGCCCATGGGAATTGGAATTCC']但是我甚至不能运行函数是主要的问题。我的答案给出了这两个示例的正确输出。它还有其他问题吗?每次我运行函数时,控制台根本不打印任何东西。我用代码点击运行按钮。但是,我仍然没有得到任何输出。你正在打印输出吗?试试
p打印(一帧(“AATGCCATGATGATGCCCTAA”)