我发现,这是最好的方法:
x = int(raw_input("Enter an integer: "))
for ans in range(0, abs(x) + 1):
if ans ** 3 == abs(x):
break
if ans ** 3 != abs(x):
print x, 'is not a perfect cube!'
else:
if x < 0:
ans = -ans
print 'Cube root of ' + str(x) + ' is ' + str(ans)
有没有更好的方法,最好是避免迭代候选值的方法?
最好的方法是用简单的数学
编辑
对于负数
按规定完成所有要求的程序
这是负数和正数的完整答案。
或者这是一条单行线
可以使用
x ** (1. / 3)
计算x
的(浮点)立方根。这里稍微微妙的一点是,对于Python2和3中的负数,这种方法的工作方式有所不同。但是,下面的代码处理这个问题:
这取
x
的立方根,将其舍入到最接近的整数,提升到第三次方幂,最后检查结果是否等于x
。采用绝对值的原因是为了使代码在Python版本中正确地处理负数(Python 2和3对将负数提升为小数幂的处理方式不同)。
相关问题 更多 >
编程相关推荐