链接列表:将最小值右侧的所有值相加

时间:2014-04-18 16:38:11

标签: python

我有这段代码:

from List import *

def sum_the_odds(array):
   return sum([x for x in array if x % 2 ==1])

def find_min(array):
   ind = array.index(min(array))
   print("Index of the smallest number: ", ind)
   smallest = (min(array))
   return smallest

def sum_the_right(array):
   ar1, ar2 = array[0:ind], array[ind:]

def main():
   array = eval(input("Give me an array of numbers: "))
   ArrayToList(array)
   for num in array:
      print(num)
   print(sum_the_odds(array))
   print(find_min(array))
main()

我尝试使用函数sum_the_right作为总结最小值右侧所有值的方法。我怎么能这样做?

顺便说一句,这就是输入内容:[11, 5, 3, 51]

如果我排除sum_the_right,这就是我得到的结果:

Give me an array of numbers: [11, 5, 3, 51]
11
5
3
51
70
Index of the smallest number:  2
3

2 个答案:

答案 0 :(得分:1)

首先,我们可以修改sum_the_right,以便将数组最小值的索引作为参数。然后,我们sum_the_right使用sum返回这些值的实际总和:

def sum_the_right(array, ind):
   return sum(array[ind + 1:])

此外,在find_min中您返回的是最小值,而我们真正想要的是最小值的 index 。我们可以像这样得到最小值的索引:

def find_min(array):
    return array.index(min(array))

其中min(array)求值为数组中的最小元素,index array方法求值为传入参数的索引。

然后我们可以使用新定义来找到最小值右边所有数字的总和:

>>> array = [11,5,3,51]
>>> min_index = find_min(array)
>>> sum_the_right(array, min_index)
51

答案 1 :(得分:0)

您没有返回任何内容,因此sum_the_right中没有修改任何内容。这是您更正后的代码:

>>> def find_min(array):
...    ind = array.index(min(array))
...    print("Index of the smallest number: ", ind)
...    smallest = (min(array))
...    return ind
... 
>>> def sum_the_right(array):
...    num = 0
...    ind = find_min(array)
...    if ind-1 != len(array):
...        for k in array[ind+1:]:
...            num+=k
...    return num
... 
>>> array = [5, 2, 9, 4, 1, 2, 5, 3]
>>> sum_the_right(array)
('Index of the smallest number: ', 4)
10
>>> 2+5+3
10
>>>