检查一个完美的立方体

时间:2017-11-11 13:51:18

标签: python-3.x

所以我必须制作一个代码来检查一个数字是否是一个完美的立方体,但出于某种原因,对于任何大于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)

3 个答案:

答案 0 :(得分:2)

只需使用integer转换为round,然后检查integer cubed是否为inputn)。

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

将数字的平方根或立方转换为整数,如果数字相等,则取平方或立方,否则它是一个理想的平方或立方。