New to Coding: Iterating over a list in Python

Viewed 401

So I am completely new to coding and I'm going through a class right now and I'm stuck. Essentially the problem is this:

Assign sum_extra with the total extra credit received given list test_grades. Full credit is 100, so anything over 100 is extra credit.

Sample output for the given program with input: '101 83 107 90'

My current code is this:

user_input = input()
test_grades = list(map(int, user_input.split())) # test_grades is an integer list of test scores


sum_extra = 0 

for grade in test_grades: 
    if grade > 100:
        sum_extra = grade - 100
        
print('Sum extra:', sum_extra)

The problem I am having is that it isn't adding the total extra over 100. Like for the example inputs above it runs and totals 7 instead of 8. I'm honestly not sure what I am missing. Also if it isn't too much trouble, I would prefer to just get a nudge in the right direction rather than a flat out answer. Thank you so much.

4 Answers
sum_extra = grade - 100

That line of code assigns a new value to sum_extra, discarding whatever value it already had.

Instead, you want to add to the existing value:

sum_extra = sum_extra + (grade - 100)

sum_extra needs to contain the sum of all the extra points. As written your code overwrites it with the current excess each time rather than adding together all the extra points.

While iterating through the test_grades list, if grade is greater than 100 then you need to update the sum_extra i.e. sum_extra += grade - 100

So the exact code will be like this

user_input = input()
test_grades = list(map(int, user_input.split())) # test_grades is an integer list of test scores


sum_extra = 0 

for grade in test_grades: 
    if grade > 100:
        sum_extra += grade - 100
        
print('Sum extra:', sum_extra)

In the following statement, sum_extra = grade - 100, you are updating sum_extra value. To get the sum of the extra credits you need to accumulate by doing the following: sum_extra += (grade - 100).

Related