Chainguys 2021-06-25 22:02 采纳率: 93.6%
浏览 61
已采纳

判断平方数,把我搞懵逼了,问题在哪?

"""
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



三个全出错,已经不知道咋弄了。。。。

  • 写回答

2条回答 默认 最新

  • 小P聊技术 2021-06-25 22:21
    关注
    # 1.自己写:
    class Solution1:
        def ssr(self, n):
            a = int((math.sqrt(n)))
            if(a * a == n):
                print(f"{n}是完全平方数且平方根是{n ** 0.5}")
            else:
                print(f"{n}不是完全平方数且平方根是{n ** 0.5}")
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?