Skip to main content
 首页 » 编程设计

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

2025年05月04日9mengfanrong

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

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

然而,每当我运行它时,我都会得到这个错误:

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' 

我做错了什么?

请您参考如下方法:

在 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') 

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