我写了一个函数,它返回一个数字输入是否为正方形
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
我确信此代码有效。但是,当我完成测试用例时,例如:test.expect( is_square( 4))
,它表示该值不是预期的值。
答案 0 :(得分:6)
您的功能实际上并不起作用,因为它会在找到的第一个非平方根上立即返回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
一旦检查了所有可能的平方根,它只返回false。您可能还想查看math.sqrt()
和float.is_integer()
。使用这些方法,您的功能将变为:
from math import sqrt
def is_square(n):
return sqrt(n).is_integer()
请记住,此方法不适用于非常大的数字,但使用它们的方法会很慢,因此您必须选择使用哪种方法。希望我帮忙!
答案 1 :(得分:4)
要坚持基于整数的算法,您可以查看二进制搜索的实现以查找平方根:
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
答案 2 :(得分:3)
Python哲学的主要思想是编写简单的代码。检查一个数字是否是一个完美的正方形:
def is_square(n):
return n**0.5 == int(n**0.5)
当浮动电源时,您可以找到数字的根。
答案 3 :(得分:0)
要检查数字是否为正方形,您可以使用以下代码:
import math
number = 16
if math.sqrt(number).is_interger:
print "Square"
else:
print "Not square"
import math
import
是math
模块。
if math.sqrt(number).is_interger:
检查number
的平方根是否为整数。如果是,则会print
Square
。否则,它将print
Not square
。
答案 4 :(得分:0)
由于math.sqrt()返回一个浮点数,我们可以将它转换为一个字符串,将其从&#34;拆分。&#34;并检查右边的部分(小数)是否为0。
import math
def is_square(n):
x= str(math.sqrt(n)).split(".")[1] #getting the floating part as a string.
return True if(x=="0") else False
答案 5 :(得分:0)
def myfunct(num):
for i in range(0,num):
if i*i==num:
return 'square'
else:
return 'not square'
答案 6 :(得分:0)
最简单的解决方案,但不适用于大量解决方案。
def squaretest(num):
sqlist=[]
i=1
while i**2 <= num:
sqlist.append(i**2)
i+=1
return num in sqlist
答案 7 :(得分:0)
假设n> = 0:
def is_square(n):
tmp = int(n ** 0.5)
return n == tmp * tmp
print(is_square(81), is_square(67108864 ** 2 + 1)) # True False
答案 8 :(得分:0)
您可以简单地使用simpy模块 导入为
from sympy.ntheory.primetest import is_square
,您可以检查这样的数字:
is_square(number)
它将返回布尔值
答案 9 :(得分:0)
另一种方法:
def SQRT(x):
import math
if math.sqrt(x) == round(math.sqrt(x)):
return True
else:
return False
答案 10 :(得分:0)
function MyGamesInput() {
return (
<div>
<label>
<p>How many games do you want to play?</p>
<input onChange={this.handleChangeInput} type="text" />
</label>
</div>
);
}
<SelectOne/>
{
this.props.selectedGame === "pingpong" && <MyGamesInput />
}
<SelectTwo/>
{
this.props.selectedGame === "basketball" && <MyGamesInput />
}
答案 11 :(得分:0)
在 Python 3.8+ 中,使用这个:
def is_square(n):
root = math.isqrt(n)
return n == root * root