求解🆘,这个问题把我困了好久😭

输入一个整数n,计算出大于n并且加上168后是一个完全平方数的最小数并输出。
样例输入:1
样例输出:28

你题目的解答代码如下:

import math
n = int(input())
while True:
    n += 1
    a = math.sqrt(n+168)
    if a==int(a):
        break
print(n)

img

如有帮助,望采纳!谢谢!

【有帮助请采纳】

from math import sqrt#引入sqrt(开平方)函数,方便于后面的计算
n = int(input())#输入的整数n
while 1:#无限循环
    n +=1#保证计算的数大于n,并且每次循环都加一
    if isinstance(int,sqrt(n+168)):#如果n+168开平方是个整数,则n+168是个完全平方数
        print(n)#满足条件,输出n
        break#满足条件时停止循环

说明:
isinstance() 函数可以判断一个值的类型
更多关于 isinstance() 函数的知识,请戳:https://www.runoob.com/python/python-func-isinstance.html
判断n+168是一个完全平方数还可以用的方法有:
法一:

if sqrt(n+168)==int(sqrt(n+168)):#n+168开平方后的值与取整后的它自己相同

法二:

if sqrt(n+168)%1==0:#n+168开平方后的值对1进行取余运算后的结果为零

法三:

if type(sqrt(n+168))==int:#n+168开平方后的值的类型为整型

【有帮助请采纳】

有帮助请采纳,谢谢

def myfunc(n: int) -> int:
    while True:
        n = n + 1
        import math
        a=math.sqrt(n+168)
        if a==int(a):
            break
    return n

print(myfunc(1))

img