Function is_prime - Error

Viewed 3753

This is a question from codeacademy.com, where I am learning Python. So what I want is to define a function that checks if a number is prime. If it is, return True. If it isn't, return False.

Here is my code:

def is_prime(x):
    lst = []       # empty list to put strings 'False' and 'True'

    for i in range(2,x): # starting at 2 and not including x (number 1 is a divisor of all numbers

        if x <= 2:           # [1] see bellow the explanation
            lst.append('False')
            break

        elif x % i == 0: # if x is divisible by i(number between 2 and not including x)
            lst.append('False')
            break        # break, because we already know x is not prime

        elif x % i > 0:
            lst.append('True') # x is not divisible by i

    if 'False' in lst:
        return False     #  x is not prime - return False

    else:
        return True  # 'True' is in lst, so x is prime - return True

print is_prime(-2) # [2] I get an error here. See below

[1] - I made this condition because in codeacademy it says: "Hint Remember: all numbers less than 2 are not prime numbers!"

[2] - When I run, for example, 'print is_prime(11)' or 'is_prime(6)' it works ok. So I submit the answer, but codeacademy doesn't accept it. It says: "Your function fails on is_prime(-2). It returns True when it should return False."

3 Answers
Related