My initial code looks like the below but that only prints the last grade:
def grade_sum(scores):
total = 0
for s in scores:
total =+ s
return total
print grade_sum(grades)
However, if I change it to below it does add up, I thought =+ should add the total and the next value together? I think I had this issue understanding in an earlier section so thought I’d investigate now.
grades = [100, 100, 90, 40, 80, 100, 85, 70, 90, 65, 90, 85, 50.5]
def grades_sum(scores):
total = 0
for s in scores:
total = total + s
return total
print grades_sum(grades)
Hi @fire_munki,
In your first code example, you have:
total =+ s
It should be:
total += s
2 Likes
For gods sake!
Thank you, dyslexia strike again. Maybe writing it out long hand is a suitable method for overcoming it!
1 Like
Do you know why what you had in your first example produced that result?
Not really, I’m sure it’s something simple.
=+
is not a single valid token or symbol in Python. It parses as two valid tokens, namely, =
and +
. Here, =
is an assignment operator, and +
serves as a unary positive operator. Python interprets your statement as:
total = +s
In the above, we are assigning +s
to total
. Applying a unary positive operator to an int
or a float
results in the same value as that of the operand. Accordingly, the above is equivalent to the following assignment statement:
total = s
In your first code example, that assignment executes during each iteration of the loop, which replaces the previous value of total
with the current value of s
. During the final iteration of the loop, the value of the last item in the scores
list is what is assigned to total
, and that is the value that gets returned by the function.
Edited on September 2, 2019 to identify +
as a unary positive operator in this context
4 Likes