Looking at this question, I tried OP's the code on my machine. Here are a text version and a screenshot:
What just happened? This supposed to be a square
function, and it is implemented correctly. To be sure, I copy-pasted the code, and tried it again:
Well, I can't see any difference between these versions of square
, but only the latter works.
The only reason I can think of is that I may have mixed tabs and spaces, so the return
statement is actually indented, and so the loop is executed exactly once. But I could not reproduce it, and it looks like an unbelievable flaw in the interpreter's mixed-indentation-check. So I have two questions, or maybe three:
Easy!
def square(x):
runningtotal = 0
for counter in range(x):
runningtotal = runningtotal + x
<tab>return runningtotal
First, tabs are replaced (from left to right) by one to eight spaces such that the total number of characters up to and including the replacement is a multiple of eight <...>
So this tab on the last line is replaced with 8 spaces and it gets into the loop.