Python 返回外部函数

Python 返回外部函数,python,biopython,Python,Biopython,Hii我在Biopython中遇到以下错误:“return”外部函数(文件名..第26行) 下面是myfile的代码 请帮忙 # File Name RandonProteinSequences.py # standard library import os import random # biopython from Bio.Seq import Seq from Bio.Alphabet import IUPAC from Bio.SeqRecord import SeqRecord im

Hii我在Biopython中遇到以下错误:“return”外部函数(文件名..第26行) 下面是myfile的代码 请帮忙

# File Name RandonProteinSequences.py
# standard library
import os
import random

# biopython
from Bio.Seq import Seq
from Bio.Alphabet import IUPAC
from Bio.SeqRecord import SeqRecord
import Bio.writers.SeqRecord.fasta
from Bio import SeqIO
from sys import *

residueList1 = ["C","D","E","F","G","H","I"]
residueList2 = ["A","K","L","M","N","S"]
residueList3 = ["P","Q","R","T","V","W","Y"]
residueList4 = ["C","A","G","U"]
def getProteinSeqRecord(residue, seqcount):
    strSeq = ""
for i in range(0,100,1):
    index = random.randint(0, len(residue)-1)
    strSeq += residue[index]

sequence = Seq(strSeq, IUPAC.IUPACProtein)
seqRec = SeqRecord(sequence, id = 'randSeq' + str(seqcount), description= 'A random sequence using Amino acid residues.')
return seqRec

def getProteinSequence(residue):
    strSeq = ""
for i in range(0,100,1):
    index = random.randint(0, len(residue)-1)
strSeq += residue[index]

sequence = Seq(strSeq, IUPAC.IUPACProtein)
return sequence

def randomProteinSeqRecord(index):
    if(index%2)==0:
        return getProteinSeqRecord(residueList1, index)
    elif(index%3)==0:
        return getProteinSeqRecord(residueList2, index)
    else:
        return getProteinSeqRecord(residueList3, index)

#information
print '--- This is python based program to generate random sequences ---'
print '--- Provide number of random sequences to generate. Default 10 ---'
print '--- Inorder to save to a file provide file path or filename ---'
print '--- If none or invalid filepath is provided then results will be displayed to console ---'
print '--- The file will be created in fasta format ---'
print

filepathProvided = False
#raw_input received the user input as string
try:
    filepath = raw_input('Enter filepath to save sequences ... ')
    filepath = filepath + '.fasta'
    handle = open(filepath, "w")
    handle.close()

    filepathProvided = True
except IOError:
    print 'Invalid or No File provided will print results to console'
print
ranSeqCount = 10
try:
    ranSeqCount = int(raw_input('Enter number of random sequences to generate ... '))
except ValueError:
    ranSeqCount = 10
pass

if(filepathProvided):
    handle = open(filepath, "w")

if(filepathProvided):
    fasta_writer = Bio.writers.SeqRecord.fasta.WriteFasta(handle)
else:
    fasta_writer = Bio.writers.SeqRecord.fasta.WriteFasta(stdout)
print 'Sequence Count : '
print ranSeqCount

for i in range(0,ranSeqCount,1):
    fasta_writer.write(randomProteinSeqRecord(i+1))
if(filepathProvided):
    handle.close()
print 'File created at : ' + filepath

print
raw_input('Press any key to exit ...')
print

您的意图是错误的

Python依赖缩进来确定函数(和其他块结构)的结束位置。据推测,导致错误的函数应该如下所示:

def getProteinSeqRecord(residue, seqcount):
    strSeq = ""
    for i in range(0,100,1):
        index = random.randint(0, len(residue)-1)
        strSeq += residue[index]

    sequence = Seq(strSeq, IUPAC.IUPACProtein)
    seqRec = SeqRecord(sequence, id = 'randSeq' + str(seqcount), description= 'A random sequence using Amino acid residues.')
    return seqRec

Python对缩进很敏感。如果代码缩进严重,它将无法工作

我惊人的谷歌搜索能力告诉我,你的代码来自哪里,不幸的是,代码的格式也不正确

但在这里,我付出了努力。但是,如果失败得很惨,我不负责任,因为我没有运行它,甚至精神上也没有

# File Name RandonProteinSequences.py
# standard library
import os
import random

# biopython
from Bio.Seq import Seq
from Bio.Alphabet import IUPAC
from Bio.SeqRecord import SeqRecord
import Bio.writers.SeqRecord.fasta
from Bio import SeqIO
from sys import *

residueList1 = ["C","D","E","F","G","H","I"]
residueList2 = ["A","K","L","M","N","S"]
residueList3 = ["P","Q","R","T","V","W","Y"]
residueList4 = ["C","A","G","U"]
def getProteinSeqRecord(residue, seqcount):
    strSeq = ""
    for i in range(0,100,1):
        index = random.randint(0, len(residue)-1)
        strSeq += residue[index]

    sequence = Seq(strSeq, IUPAC.IUPACProtein)
    seqRec = SeqRecord(sequence, id = 'randSeq' + str(seqcount), description= 'A random sequence using Amino acid residues.')
    return seqRec

def getProteinSequence(residue):
    strSeq = ""
    for i in range(0,100,1):
        index = random.randint(0, len(residue)-1)
        strSeq += residue[index]

    sequence = Seq(strSeq, IUPAC.IUPACProtein)
    return sequence

def randomProteinSeqRecord(index):
    if(index%2)==0:
        return getProteinSeqRecord(residueList1, index)
    elif(index%3)==0:
        return getProteinSeqRecord(residueList2, index)
    else:
        return getProteinSeqRecord(residueList3, index)

#information
print '--- This is python based program to generate random sequences ---'
print '--- Provide number of random sequences to generate. Default 10 ---'
print '--- Inorder to save to a file provide file path or filename ---'
print '--- If none or invalid filepath is provided then results will be displayed to console ---'
print '--- The file will be created in fasta format ---'
print

filepathProvided = False
#raw_input received the user input as string
try:
    filepath = raw_input('Enter filepath to save sequences ... ')
    filepath = filepath + '.fasta'
    handle = open(filepath, "w")
    handle.close()

    filepathProvided = True
except IOError:
    print 'Invalid or No File provided will print results to console'
print
ranSeqCount = 10
try:
    ranSeqCount = int(raw_input('Enter number of random sequences to generate ... '))
except ValueError:
    ranSeqCount = 10
pass

if(filepathProvided):
    handle = open(filepath, "w")

if(filepathProvided):
    fasta_writer = Bio.writers.SeqRecord.fasta.WriteFasta(handle)
else:
    fasta_writer = Bio.writers.SeqRecord.fasta.WriteFasta(stdout)
print 'Sequence Count : '
print ranSeqCount

for i in range(0,ranSeqCount,1):
    fasta_writer.write(randomProteinSeqRecord(i+1))
if(filepathProvided):
    handle.close()
print 'File created at : ' + filepath

print
raw_input('Press any key to exit ...')
print

看起来你复制粘贴错了尽管问题海报显然可以做一些研究来找到解决方案,但我认为这个问题不值得否决,因为它对python新手非常有用。整个空白问题,再加上从/到各种来源粘贴副本时的格式丢失,确实会让人非常困惑。我既没有投反对票,也没有投反对票。但是我觉得我不想给出一个严肃的答案,因为OP显然没有花太多时间学习python的基础知识。+1感谢你惊人的谷歌搜索能力:)谢谢……这很有效。。。虽然现在它说没有名为writers.SeqRecord.fasta的模块,但我可以从哪里下载这个模块……事实上,我的能力非常弱Python@Hemant0285表示它未使用、未记录、已弃用。这意味着它可能同时被移除。恐怕你找到的这段代码一定很旧了,需要更新。这个答案是完全正确的,虽然不冗长。因此不应该否决它。获取此错误::Traceback(最近一次调用last):导入Bio.writers.SeqRecord.fasta导入错误:没有名为writers.SeqRecord的模块。fasta@vikingosegundo:“完全正确”和“有用”是两码事。告诉某人在第一行和最后一行之间的某个地方有空格错误实际上是没有用的,特别是对初学者来说。有了这些信息,缩进是错误的,OP足以在python.org、google等网站上查看。所以这不是一个无用的回答。兄弟们,请不要讨论谁对谁错,而是请帮助我。。。使用此错误回溯(上次最新调用):导入Bio.writers.SeqRecord.fasta ImportError中第10行的文件“C:\Users\Hemant\Desktop\RandonProteinSequences.py”:没有名为writers.SeqRecord.fastaThis的模块工作。。。。现在它在第35行显示了相同的错误…感谢上面更正的//缩进代码…在第35行解决了相同的问题…它工作得很好。。JU是我在下面提到的模块丢失错误