リストを取り込んで各インデックスをループし、現在のインデックスの左と右の値を合計するパズルを解いています。左の値の合計が右の値の合計と等しいインデックスが見つかった場合は、そのインデックスを返します。ルーピングスルーリスト返り値負のインデックス
例: [1,2,3,4,3,2,1] インデックス3(値4)にある場合、要素の左と右の合計値は等しい。 (1 + 2 + 3)=(3 + 2 + 1)である。
ただし、入力が負の値のリストである場合は、負のインデックスが戻されます。これは私のコードです:
def get_equal_sum(list):
for i in list:
if sum(list[:i]) == sum(list[i+1:]):
print i
list = [1,2,3,4,3,2,1]
get_equal_sum(list)
>>> 3
list = [-1,-2,-3,-4,-3,-2,-1]
get_equal_sum(list)
>>> -4
なぜそれは-4ではなく3を返しますか?
ありがとうございました!
第2のリストには「3」はありませんので、どのようにして '3'を印刷できますか?インデックスではなく要素を印刷しています。 – Carcigenicate
おそらく、組み込みの型/関数( 'list')をあなたの変数でシャドウするべきではありません。 –
インデックスを返すのではなく、値そのものを返します。 'enumerate'を使ってインデックスを取得してください。 –