s.chitti - 2 years ago 53
Python Question

# I'm having trouble calculating the below average for a set of numbers

Hey I'm trying to find the total average of 3 marks but my structure isn't correct for lines 4 and 9.
So as I have 3 marks to add the v[0], v[1], v[2] represents all 3 marks. Can someone help me to find the average of these marks in line 4 and help with the structure in line 9?
I've tried moving things around but nothings working, therefore here's the code that I have so far.

``````def BelowAvgallReport(aDiary):                                   line 1
sumofallMarks = 0                                            line 2
for aVal in aDiary.values():                                 line 4
sumofallMarks = sumofallMarks + aVal v[0] + v[1] + v[2]  line 5

belowallAvgDiction = {}                                          line 7
for k, v in aDiary.items():                                      line 8
if avg> (v[0] + v[1] + v[2]):                                line 9
belowallAvgDiction[k] = v                                line 10
return["Below Avg all Marks:", avg, belowallAvgDiction]          line 11
``````

It is apparent that your lines 7-11 have wrong indentation. Otherwise the variable `aDiary` will be undefined in line7. Also the syntax in line 5 is wrong and `v` undefined.

Below is the corrected code. You can use `sum()` instead of hard coded it.

``````def BelowAvgallReport(aDiary):
sumofallMarks = 0
sumofallMarks += sum(aVal[:3])
The second part of your code (for calculation of `belowallAvgDiction`) can be even simpler:
``````belowallAvgDiction = dict((k,v) for k,v in aDiary.items() if avg> sum(v[:3]))