所以我必须制作一个代码来检查一个数字是否是一个完美的立方体,但出于某种原因,对于任何大于27的立方体,它说它的根是x.99999999。 (即它返回64 **(1/3)为3.9999& 125 **(1/3)为4.9999)。
n = int(input("What number would you like to check if it is a cube?"))
def is_cube(n):
guess = n**(1.0/3.0)
if (guess)%1 == 0:
print(True, "it's cubed root is", guess)
else:
print(False, "it's cubed root is", guess)
is_cube(n)
答案 0 :(得分:2)
只需使用integer
转换为round
,然后检查integer
cubed
是否为input
(n
)。
def is_cube(n):
cube_root = n**(1./3.)
if round(cube_root) ** 3 == n:
print(True, "its cubed root is", round(cube_root))
else:
print(False, "its cubed root is", cube_root)
还有一些测试:
>>> is_cube(12)
False its cubed root is 2.2894284851066637
>>> is_cube(34)
False its cubed root is 3.239611801277483
>>> is_cube(27)
True its cubed root is 3
>>> is_cube(64)
True its cubed root is 4
哦,顺便说一下,its
的占有形式并不需要撇号。它在您的代码中不正确。
答案 1 :(得分:0)
一旦开始使用浮点,就需要意识到无限精度是不可用的。通常,浮点值实际上只是可用于存储信息的有限位数的最佳近似值。
对于这种特殊情况,您可能会发现您可以在立方根周围取整数值,并检查它是否为您提供原始值。
这样的事情应该是一个好的开始:
def is_cube(n):
guess = n**(1.0/3.0)
iguess = int(guess)
if iguess * iguess * iguess == n:
print(True, "it's cubed root is", iguess)
return
iguess = iguess + 1
if iguess * iguess * iguess == n:
print(True, "it's cubed root is", iguess)
return
print(False, "it's cubed root is", guess)
答案 2 :(得分:0)
检查完美正方形和立方体的简单方法:
1-对于多维数据集:
if(int(x**(1./3.))**3 == int(x))
和 2-对于正方形:
if(int(x**0.5)**2 ==int(x))
将数字的平方根或立方转换为整数,如果数字相等,则取平方或立方,否则它是一个理想的平方或立方。