【发布时间】:2023-02-02 22:10:28
【问题描述】:
如果我输入 25,答案应该是整数 5。如果我输入 24 答案应该是 4.898989486 float。这可能在 python 中做吗?
上下文-:我需要编写代码来找到下一个完美的正方形。
import math
def find_next_square(sq):
# Return the next square if sq is a square, -1 otherwise
sq2=math.sqrt(sq)
xyz=isinstance(sq2, int)
if (xyz==True):
print("Is perfect square")
nextsq=sq+1
print("Next perfect square=",nextsq**2)
else:
print("Not perfect square")
return -1
n=int(input("Enter an integer"))
find_next_square(n)
这是代码。 对于 25,这将返回 sq2=5.0,因此它返回 Not perfect square。我需要一种方法来使这个返回完美的正方形。
期望的行为-:
如果我把 25 作为 n。它应该将其作为完美正方形返回并返回 36。
具体问题-:
这里的问题是
import math
sq=25
sq2=math.sqrt(sq)
print(sq2)
xyz=isinstance(sq2, int)
print(xyz)
即使对于 sq=25,它也会将其作为浮点数返回。那个 math.sqrt() 函数。它改变了我的整个游戏。
重现问题所需的最短代码-:
import math
sq=24
sq2=math.sqrt(sq)
print(sq2)
xyz=isinstance(sq2, int)
print(xyz)
【问题讨论】:
-
你试过什么了?结果如何?
-
为什么5.0是个问题?您可以编写一个检查
result % 1 == 0的函数,然后将其转换为 int(如果为真)。 -
或者
if result.is_integer():- 浮动 have that method。 -
import math然后math.sqrt(24)呢?我得到 4.898979485566356,再次平方得到 23.999999999999996,这对于浮点数来说非常好
标签: python