Nicholas Phelps
Nicholas Phelps

Reputation: 45

New to Coding: Iterating over a list in Python

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.

Upvotes: 2

Views: 1172

Answers (5)

TheRiceKing
TheRiceKing

Reputation: 1

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

sum_extra = -999 # Initialize to -999 before your loop

sum_extra = 0 # Resetting sum_extra to 0 for calculation
for grade in test_grades:
    if grade > 100:
        sum_extra += (grade - 100)

print('Sum extra:', sum_extra)

Upvotes: 0

Billy Ouattara
Billy Ouattara

Reputation: 1

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).

Upvotes: 0

Paras Gupta
Paras Gupta

Reputation: 294

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)

Upvotes: 0

John Gordon
John Gordon

Reputation: 33335

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)

Upvotes: 1

John Kugelman
John Kugelman

Reputation: 361675

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.

Upvotes: 0

Related Questions