15/6 is_prime failiure. What am I missing?


#1



Exercise 15/6

I've tried various ways of messing with the code, but it keeps giving me 'Oops, try again. Your function fails on is_prime(0). It returns None when it should return False.', sometimes with it suceeding at is_prime(0), but failing at is_prime(1) or (9).

By what I understand, this should return True for is_prime(0), but it still gives the same error.

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


I'm sure the solution I'm missing is very simple, but I can't get it. Thank you for your help.


#2

Move this to the left four spaces so the else lines up with for.


#3

That gave me this error:
Oops, try again. Your function fails on is_prime(0). It returns True when it should return False.
But thank you!


#4

One fix would be to set an opening condition to check for < 2 and return false.


#5

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

I have edited the code a bit. It should work if 2 is passed as an argument. Thanks for pointing it out @codeninja84962!


#6

I had to change it to x < 2, but this worked! Thank you.


#7

Neither x<=2 nor x <2 with this code below should work:

As it's ignoring 2 as a prime number. x % n == 0 . Can you explain guys? I did it different way which count 2 as prime.


#8

The reason that the code (corrected with x<2 instead of x<=2) doesn't end up calling 2 a non prime number is that the range used in the for loop ends up being an empty list in that case, making it never enter the body.


#9

Thanks for your explanation.