我有一个函数来检查一个数是否是平方根:
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 来处理问题。
