根据定义,利用二分法来求解立方根。
while True:
try:
num = float(input().strip())# 获取输入
res = 0
# 判断输入,构造符号标签
if num == 0:
res = 0
elif num > 0:
sig = 1
elif num < 0:
sig = -1
num = abs(num)# 对输入求绝对值
if num > 1:# 如果数字大于1:开始=0 结束=输入
start = 0
end = num
elif num < 1:# 如果数字小于1:开始=输入,结束=1
start = num
end = 1
mid = (start + end) / 2# 求中位值
while abs(mid**3 - num) > 0.001:# 当中位值的三次方减去当前的值>0.001:
if mid**3 > num: # 如果中位值的三次方大于当前值:
end = mid # 将中位值赋值给结束
if mid**3 < num: # 否则:将开始值赋值给中值
start = mid
mid = (start + end) / 2 # 求中位值
res = sig*mid
print(round(res,1))
# 输出结果
except:
break