Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.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 在一个变量中存储2个值?_Python_Store - Fatal编程技术网

Python 在一个变量中存储2个值?

Python 在一个变量中存储2个值?,python,store,Python,Store,我想知道,有没有一种方法可以在我的main方法上存储开始值和结束值。我尝试这样做,但它给我错误: def searchM(): fileAddress = '/database/pro/data/'+ID+'.txt' with open(fileAddress,'rb') as f: root = etree.parse(f) for lcn in root.xpath("/protein/match[@dbname='M']/lcn")

我想知道,有没有一种方法可以在我的main方法上存储开始值和结束值。我尝试这样做,但它给我错误:

def searchM():

    fileAddress = '/database/pro/data/'+ID+'.txt'
    with open(fileAddress,'rb') as f:
        root = etree.parse(f)
        for lcn in root.xpath("/protein/match[@dbname='M']/lcn")
            start = int(lcn.get("start"))#if it is PFAM then look for start value
            end = int(lcn.get("end"))#if it is PFAM then also look for end value
    return "%s, %s" % (start, end,)

values = searchM()

(start, end,) = values

错误消息为UnboundLocalError:赋值前引用的局部变量“start”

您遇到的错误是由于
start
end
变量引起的。尝试先初始化它们,使它们存在于中,即使未设置值

此外,您正在尝试创建并返回一个字符串,然后将其解压为两个不同的变量

请尝试以下操作:

def searchM():
    fileAddress = '/database/pro/data/%s.txt' % ID
    start = None
    end = None
    with open(fileAddress,'rb') as f:
        root = etree.parse(f)
        for lcn in root.xpath("/protein/match[@dbname='M']/lcn"):
            start = int(lcn.get("start")) #if it is PFAM then look for start value
            end = int(lcn.get("end")) #if it is PFAM then also look for end value
    return start, end

(start, end) = searchM()  

您遇到的错误是由于
start
end
变量引起的。尝试先初始化它们,使它们存在于中,即使未设置值

此外,您正在尝试创建并返回一个字符串,然后将其解压为两个不同的变量

请尝试以下操作:

def searchM():
    fileAddress = '/database/pro/data/%s.txt' % ID
    start = None
    end = None
    with open(fileAddress,'rb') as f:
        root = etree.parse(f)
        for lcn in root.xpath("/protein/match[@dbname='M']/lcn"):
            start = int(lcn.get("start")) #if it is PFAM then look for start value
            end = int(lcn.get("end")) #if it is PFAM then also look for end value
    return start, end

(start, end) = searchM()  

如果未找到
开始
结束
的值,则需要提供这些值:

for lcn in root.xpath("/protein/match[@dbname='M']/lcn"):
    start = int(lcn.get("start"))
    end = int(lcn.get("end"))
    break
else: # not found
    start = end = None

如果未找到
开始
结束
的值,则需要提供这些值:

for lcn in root.xpath("/protein/match[@dbname='M']/lcn"):
    start = int(lcn.get("start"))
    end = int(lcn.get("end"))
    break
else: # not found
    start = end = None


这行代码:
返回“%s,%s%”(开始,结束)
在未分配
开始
的情况下执行。现在已经结束了。即使您修复了它,
(开始、结束)=值
也不会起作用。您不能将字符串解压成两个变量。@DavidHeffernan我应该怎么做才能得到这两个值?好吧,只需在元组中返回它们:
return(start,end)
。然后像这样解包:
(开始,结束)=searchM()
。显然,您需要确保
start
end
已分配。@DavidHeffernan非常感谢您
返回start,end
。注意:您不需要括号(本例中逗号创建元组)这行代码:
返回“%s,%s%”(开始,结束),
在未分配
开始
的情况下执行。现在已经结束了。即使您修复了它,
(开始、结束)=值
也不会起作用。您不能将字符串解压成两个变量。@DavidHeffernan我应该怎么做才能得到这两个值?好吧,只需在元组中返回它们:
return(start,end)
。然后像这样解包:
(开始,结束)=searchM()
。显然,您需要确保
start
end
已分配。@DavidHeffernan非常感谢您
返回start,end
。请注意,您不需要括号(在本例中,逗号创建元组),我可以使用它调用另一个方法的开始值和结束值吗?使用
values=searchM()
(start,end,)=values
,如何在另一个方法上调用这些起始值和结束值。尽管不需要像您当前所做的那样,首先将返回值分配给变量。您可以简单地将结果返回到所需的变量:
(start,end)=searchM()
是否有办法将start=''和end=''作为int而不是字符串,因为我稍后编译整个代码时使用list[start]。编译器不让我这样做,因为这是一个字符串,将它们初始化为
start=0
end=0
没有冲突;如果更改名称,则会出现相同的错误。如果“not found”(未找到)是有效索引,则返回0,0是不正确的,例如,如果lcn.get()可以返回0,那么我是否能够使用该方法调用另一个方法的开始值和结束值?使用
values=searchM()
(start,end,)=values
,如何在另一个方法上调用这些起始值和结束值。尽管不需要像您当前所做的那样,首先将返回值分配给变量。您可以简单地将结果返回到所需的变量:
(start,end)=searchM()
是否有办法将start=''和end=''作为int而不是字符串,因为我稍后编译整个代码时使用list[start]。编译器不让我这样做,因为这是一个字符串,将它们初始化为
start=0
end=0
没有冲突;如果更改名称,则会出现相同的错误。如果“not found”(未找到)是有效的索引,则返回0,0是不正确的,例如,如果lcn.get()可以返回0,它表达了作者的意图,据我所知,您可能在这一点上是正确的,但我只是希望它显式返回stated@J.F.Sebastian非常感谢你。我可以再问你一个问题吗?我需要在另一个方法上使用开始值和结束值来创建列表。但它告诉我,值不能是NoneType或str。我该如何解决这个问题?@ChadD:
None
值表示xpath返回空列表,即未找到任何内容。您应该做什么取决于该列表将如何在以后的代码中使用。@DavidHeffernan:我同意。谢谢你提到它,它表达了作者的意图,据我所知,你很可能是对的,但我只是想明确地表达出来stated@J.F.Sebastian非常感谢你。我可以再问你一个问题吗?我需要在另一个方法上使用开始值和结束值来创建列表。但它告诉我,值不能是NoneType或str。我该如何解决这个问题?@ChadD:
None
值表示xpath返回空列表,即未找到任何内容。您应该做什么取决于该列表将如何在以后的代码中使用。@DavidHeffernan:我同意。谢谢你提及此事