"""
1.问题:给定正整数n,判断是否为完全平方数
2.示例:输入n=16返回为Ture且平方根为4,输入n=15,返回False且平方根为3.87
"""
# 1.自己写:
class Solution1:
def ssr(self, n):
if isinstance(n ** 0.5, int) == True:
print(f"{n}是完全平方数且平方根是{n ** 0.5}")
else:
print(f"{n}不是完全平方数且平方根是{n ** 0.5}")
num1 = Solution1()
num1.ssr(12)
num1.ssr(16)
# 此代码出现了错误,因为就算16开方出来是4,但是也算4是float而非Int。。。
# 2.尝试用math.sqrt
import math
class Solution2:
def ssr(self, n):
result = isinstance(math.sqrt(n), int) # 加一个检查类型的句子,没问题注销就行
print(result)
if result == True:
print(f"{n}是完全平方数且平方根是{n ** 0.5}")
else:
print(f"{n}不是完全平方数且平方根是{n ** 0.5}")
num2 = Solution2()
num2.ssr(12)
num2.ssr(16)
# 还是不行,不管怎样都是浮点数
# 3.答案如下:
class Solution3:
def isPerfectSquare(self, num):
l = 0
r = num
while (r - l) > 1:
mid = (l + r) / 2
if (mid * mid <= num):
l = mid
else:
r = mid
ans = 1
if (1 * 1 < num):
ans = r
return ans * ans == num
if __name__ == '__main__':
num = 25
print("初始值:", num)
solution = Solution3()
print("结果:", solution.isPerfectSquare(num))
#运行结果:初始值: 25 结果: False
三个全出错,已经不知道咋弄了。。。。