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)
我究竟做错了什么?
在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块来处理问题.