user3635683
user3635683

Reputation:

Python Prime number checker not working

I'm trying to build a simple Prime Number checker in Python 3.x and I'm running into some issues. I will post my code and then explain my difficulties.

number = input("Please enter a number: ")

is_prime = True;

for factor in range(2, number):
    if number % factor == 0:
        is_prime = False;

if is_prime == True:
    print("%d is a prime number!") % number
else:
    print ("%d is NOT a prime number!") % number 

Now when I run the following code, I get this error:

C:\Users\clark\Documents\Python Projects>python PrimeNumberChecker.py Please enter a number: 4 Traceback (most recent call last): File "PrimeNumberChecker.py", line 5, in for factor in range(2, number): TypeError: 'str' object cannot be interpreted as an integer

Now, from my limited understanding of Python the input method that I'm using to evaluate the number variable should return an integer so I'm not sure why it's telling me there's a conversion issue. Could anybody shed some light on what's going on here? I'm very new to Python.

Thanks

Upvotes: 0

Views: 131

Answers (3)

Sujan Bro
Sujan Bro

Reputation: 1

You could try this one

number=int(input("please enter a number")

counter=0

for factor in range (1,number):
     if number%factor==0:
        counter=counter+1

if counter==2:
  print(number,"is prime")
else:
  print(number,"is not prime")

Upvotes: 0

ettanany
ettanany

Reputation: 19806

In Python 3.x, you need to convert your variable number to int like this:

number = int(input("Please enter a number: "))

See these two examples from the two version of Python that I have on my machine:

In Python 3.4:

>>> number = input("Please enter a number: ")
Please enter a number: 4
>>> type(number)
<class 'str'>

In Python 2.7:

>>> number = input("Please enter a number: ")
Please enter a number: 4
>>> type(number)
<type 'int'>

Please take a look at this important answer of How can I read inputs as integers in Python?

Upvotes: 2

Rahul K P
Rahul K P

Reputation: 16091

In python2.x

number = input("Please enter a number: ")  

number will be a int. But in python3.x it will be str. You are using python.3x so you have to convert that into integer. with using int.

number = int(number)

Might be you are referenced a code which is wrote in python2.x

Upvotes: 0

Related Questions