M. *_*bra 0 python integer boolean input
我写了一个函数,它返回一个数字输入是否为正方形
def is_square(n):
if n<1:
return False
else:
for i in range(int(n/2)+1):
if (i*i)==n:
return True
else:
return False
Run Code Online (Sandbox Code Playgroud)
我相信这段代码有效.但是,当我做测试用例时,例如:test.expect( is_square( 4))
,它表示该值不是预期的值.
你的函数实际上不起作用,因为它会在找到的第一个非平方根上返回False.相反,您需要将代码修改为:
def is_square(n):
if n<1:
return False
else:
for i in range(int(n/2)+1):
if (i*i)==n:
return True
return False
Run Code Online (Sandbox Code Playgroud)
这样一旦检查了所有可能的平方根,它就只返回false.您可能还想查看math.sqrt()
和float.is_integer()
.使用这些方法,您的功能将变为:
from math import sqrt
def is_square(n):
return sqrt(n).is_integer()
Run Code Online (Sandbox Code Playgroud)
请记住,此方法不适用于非常大的数字,但使用它们的方法会非常慢,因此您必须选择使用哪种方法.希望我帮忙!
Python哲学的主要思想是编写简单的代码。要检查数字是否为完全平方数:
def is_square(n):
return n**0.5 == int(n**0.5)
Run Code Online (Sandbox Code Playgroud)
当为浮点数供电时,您可以找到数字的根。
要坚持基于整数的算法,您可以查看二进制搜索的实现以找到平方根:
def is_square(n):
if n < 0:
return False
if n == 0:
return True
x, y = 1, n
while x + 1 < y:
mid = (x+y)//2
if mid**2 < n:
x = mid
else:
y = mid
return n == x**2 or n == (x+1)**2
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13019 次 |
最近记录: |