Python Prime数字检查器无法正常工作

时间:2016-12-03 11:19:20

标签: python python-3.x numbers

我试图在Python 3.x中构建一个简单的Prime数字检查器,但我遇到了一些问题。我将发布我的代码,然后解释我的困难。

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 

现在,当我运行以下代码时,我收到此错误:

  

C:\ Users \ clark \ Documents \ Python Projects> python PrimeNumberChecker.py   请输入一个数字:4 Traceback(最近一次调用最后一次):文件   " PrimeNumberChecker.py",第5行,in       对于范围中的因子(2,数字):TypeError:' str' object不能解释为整数

现在,根据我对Python的有限理解,我用来评估数字变量的输入法应该返回一个整数,所以我不确定为什么它告诉我那里'转换问题。有人能说清楚这里发生了什么吗?我是Python的新手。

谢谢

3 个答案:

答案 0 :(得分:2)

在Python 3.x中,您需要将变量number转换为int,如下所示:

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

请参阅我的计算机上的两个Python版本中的这两个示例:

在Python 3.4中:

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

在Python 2.7中:

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

请查看How can I read inputs as integers in Python?

的重要答案

答案 1 :(得分:0)

python2.x

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

number将是int。但在python3.x中,它将是str。您正在使用python.3x,因此您必须将其转换为整数。使用int

number = int(number)

您可能会引用在python2.x

中编写的代码

答案 2 :(得分:0)

你可以尝试这个

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")