I am kind of new to python lists
def sum_fractions(lst): for i in range(len(lst)): i+=1 s=lst[i][0]/lst[i][1]+lst[i][0]/lst[i][1] ss=round(s) return ss sum_fractions([[11, 2], [3, 4], [5, 4], [21, 11], [12, 6]])
the desired result should be like this
sum_fractions([[11, 2], [3, 4], [5, 4], [21, 11], [12, 6]]) ➞ 11
error: list index out of range actually, I have to go through all lists in a 2d list and first divide the first element of the list with the second and then add it to the fraction of another lists
Your current code implementation has several problems:
ss
to 0i
inside the loop again. range(len(lst)
does this for internally.11
. Use round
only while returning the output.The correct implementation would be:
def sum_fractions(lst): ss = 0 for i in range(len(lst)): s=lst[i][0]/lst[i][1] ss+=s return round(ss) lst = [[11, 2], [3, 4], [5, 4], [21, 11], [12, 6]] res = sum_fractions(lst) print(res)
As suggested by others, you can modify the function to directly iterate over elements and not index.
def sum_fractions_0(lst): ss = 0 for l in lst: ss += l[0]/l[1] return round(ss)
Recent Comments