试图制作一个简单的素数检查器,不会让我使用平方根.Python 3.2

Jus*_*313 1 python primes numbers square-root

我有一个函数来检查数字是否是平方根:

def primeness(n):
    for x in range(2, (n**0.5) + 1):
        if n % x == 0:
            return False
    return True
def main():
    n = input('Type a digit \n')
    if primeness(n):
        print(n, 'is a prime number')
    else:
        print(n, 'is not a prime number')
main()
Run Code Online (Sandbox Code Playgroud)

但是每当我运行它时,我都会收到此错误:

Traceback (most recent call last):
  File "C:/Users/Matt/Desktop/Python Stuff/test.py", line 12, in <module>
main()
  File "C:/Users/Matt/Desktop/Python Stuff/test.py", line 8, in main
if primeness(n):
  File "C:/Users/Matt/Desktop/Python Stuff/test.py", line 2, in primeness
for x in range(2, (n**0.5) + 1):
TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'float'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Sna*_*fee 5

在python3中,input相当于旧的raw_input.因此,您需要执行转换并将其转换为整数.

def main():
    n = int(input('Type a digit \n')) #right here
    if primeness(n):
        print(n, 'is a prime number')
    else:
        print(n, 'is not a prime number')
Run Code Online (Sandbox Code Playgroud)

如果你不能保证字符串是一个整数,你需要做一些转换,例如int(float(input()))或使用try-except块来处理问题.