I wouldn't say the loop condition is false - this isn't a while loop - rather range(2,-1) outputs an empty list (because by default the step in range is +1, so anything less than or equal to the starting number will output an empty list). So there is nothing to iterate over and so n never gets assigned a value. This can be shown like so:

```
>>> for n in range(2,0):
pass
print n
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
print n
NameError: name 'n' is not defined
>>> for n in range(2,0,-1):
pass
print n
1
```

In the first instance, we get a NameError saying that n is not defined because there was nothing to iterate over and so nohing to define n with.

This explains why None is returned too. Due to nothing under the for statement being run, the function will run to the end without hitting one of your return statements. But functions will always return something and by default this is, you guessed it, None.

What you need to do is make sure that if x is 2 or less it won't throw the rest of your code off.

That said, your code won't work as you intend. It will just define whether x is even (False) or odd(True). The reason being once a return hit the function stops running and sends back the return. So in the case of x being an even number, the first thing n will be is 2, every even number can be divided by 2 with 0 as the remainder and so it will be True because of this line:

```
if x % n == 0:
return False
```

And the opposite is true for x being an odd number - the first number n will be is 2 and no odd number can be divided by 2 with 0 as the remainder and so once it hits the last elif statement it will return True because of this line:

```
elif x % n != 0:
return True
```