2017-10-06 12 views
-1

私はPythonの初心者です。関数呼び出しから戻り値を取得するにはどうすればよいですか? 私は明らかに間違っているこれをやったことがあります。戻り値を上記の変数に代入する必要があります。また、関数から値を返す方法を変更することはできません。タプルのタプルから値を取得する

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]にコードをラップしてください。おそらくtypoどこかで –

答えて

0

すぐ外に囲んでいる括弧ドロップ:

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

私はfind_maximum_crossing_subarray関数から値のこの型を返すのです

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

これらのカッコを削除することで、自分のテストコードに違いはありません。 –

+0

それはまったく問題ではありません。それらの括弧は必要ではないが問題ではない –

0

本当に奇妙な構文ですが、基本的に、あなたはしています戻り値はfind_maximum_crossing_subarray(..)です。

あなたは、私はまだab、およびcへのアクセスを持っていたか

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 

お知らせ、簡易版を見ることができます。同様に、変数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

質問は良い質問です。私が言ったように、彼は十分な情報を私たちに与えていない。私たちが知っているのは「これは明らかに間違っています」ですが、コードは実行されるべきであるように見えます。このコードが動作しない理由をデバッグするのに十分な情報がありません。 –

関連する問題