<Below this line, add a link to the EXACT exercise that you are stuck at.>

<In what way does your code behave incorrectly? Include ALL error messages.>
I don’t understand why the answer code is right.

<What do you expect to happen instead?>
I expect the range to supposed to be range(2, x) since range will test all the numbers from 2 to x - 1. So if x = 7, the range would be 2, 3, 4, 5, 6. In the answer code they have range(2, x-1) which means the range would be 2, 3, 4, 5. Wouldn’t they have to test 6 as well to see if it is a prime number. With my code, when x = 2, it returns nothing when it should return True. With the answer code, wouldn’t the range become 2, 1, 0?

def is_prime(x):
  if x < 2:
    return False
    for n in range(2, x):
      if x % n == 0:
        return False
        return True


i would personally use range(2, x) but with range(2,x-1) it will also work, if you use for/else, given then else runs when loop condition evaluate to false, which happens when x=2 even with x-1


Okay I just tried changing to for/else. Shouldn’t that work for if/else too? I was thinking it x % n != 0 then it would just go straight to else and return True.


no, it won’t work for if/else.

By default, at the end of a function, the function returns None, if we want to return something else at the end of the function, we can use the return keyword, so when a return keyword is reached, the function ends

so using if/else, will cause the function to end in the first iteration of the loop, so your function will not properly determine prime numbers


Thank you for your help!


This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.