2017-10-06 45 views
-1

我是python的新手,我需要如何从函数调用中获取返回值。 我试图做这显然是错误的我需要将返回值分配给所提到的变量,我不能改变我如何从函数返回值,因为这是问题中需要的。从元组元组中获取值

((cross_low,cross_high),cross_sum)=find_maximum_crossing_subarray(A,low,mid,high) 

我从find_maximum_crossing_subarray函数返回这种类型的值:

tup=(max_left,max_right) 
tup1=(tup,left_sum+right_sum) 
return tup1 
+1

什么是left_sum和right_sum的价值?当我写了一些测试代码,其中max_left,max_right,left_sum和right_sum是浮动的,我没有错误,它一切正常。当你运行代码时会发生什么?你有错误吗? –

+0

你能提供一些样本数据,一些你期望的输入和输出。尤其是输出格式? – MooingRawr

+0

请将您的代码包装在[mcve]中。可能是某处的拼写错误 –

回答

0

刚落,外面包围括号:

(cross_low, cross_high), cross_sum = find_maximum_crossing_subarray(A,low,mid,high) 
+1

删除这些括号对我自己的测试代码没有任何影响。 –

+0

这根本不是问题。那些parens是不需要的,但也不是问题 –

0

这真是奇怪的语法,但基本上你显示来自find_maximum_crossing_subarray(..)的返回签名。

你可以看到一个简化版本,

def some_function(): 
    return (1, 2), 3 

x = ((a, b), c) = some_function() 

print(x, a, b, c) 

... 
... output: 
((1, 2), 3) 1 2 3 

注意我是如何仍然不得不ab,并c访问。同样,您将有权访问您的cross_*变量。

如果您需要查找最大值,max是一个内置函数,因此sum也是。


如果你可以改变的find_maximum_crossing_subarray(..)的返回签名,我会做这个:

# .. 
    return max_left, max_right, left_sum + right_sum 


results = find_maximum(A, low, mid, high) 

cross_low, cross_high, cross_sum = results 
+0

这并不真正回答他们的问题。当然,目前没有足够的信息来真正回答他们的问题。 –

+0

那么,问题是什么?他需要访问'cross_low','cross_high'和'cross_sum' ......第一个例子表明他一直都有访问权限。他还暗示他不能改变返回签名,这有点不相关。 – blakev

+0

问题是一个很好的问题。就像我说的,他没有给我们足够的信息。我们所知道的只是“这显然是错误的”,但代码看起来应该运行。我们没有足够的信息来调试此代码无法工作的原因。 –