我试图在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的新手。
谢谢
答案 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'>
的重要答案
答案 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")