我有这段代码:
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
答案 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
>>>