多维数据集源于Python编程

时间:2017-07-17 17:09:15

标签: python python-3.x

这是我的第一个编程课,本周我们研究了while循环。我们有一个功课示例试图编写立方根。这是我到目前为止,但我无法让我的代码实际运行该程序。我没有收到任何错误。有什么我想念的吗?

def cbrt(nub):
    loopn=1
    x0=1
    loplT=1000
    exTol=0.000001
    while loopn<=loplT:
        x=(1/3)+((2*x0)+(num/x0*x0))
        if abs(x - x0)< exTol:
            return x
        else:
            x0 = x
            loopn = loopn + 1
            return False
        print(cbrt(8))

2 个答案:

答案 0 :(得分:2)

你在内部调用函数但不在外部,因此函数永远不会运行。您需要在函数外部添加一行来调用它。你也不应该在你的循环中返回False:

def cbrt(num): # changed from nub to num
    loopn=1
    x0=1
    loplT=1000
    exTol=0.000001
    while loopn<=loplT:
        x = (2. * x0 + num/(x0*x0)) / 3.0 # fixed estimation method
        if abs(x - x0)< exTol:
            return x
        else:
            x0 = x
            loopn = loopn + 1
    return False # return false outside loop
print(cbrt(8)) # call function outside of function

答案 1 :(得分:2)

def cbrt(num): # not nub
    loopn=1
    x0=1
    loplT=1000
    exTol=0.000001
    while loopn<=loplT:
        x=(1/3)+((2*x0)+(num/x0*x0)) # this estimation method is wrong!
        # I think you want `(1/3)_*_ ((2*old_est)+num/(old_est*old_est))
        # notice parenthesis and multiplies instead of adds 1/3 ... also make sure you are using python 3 or 1/3 will always equal zero...
        if abs(x - x0)< exTol:
            return x
        else:
            x0 = x
            loopn = loopn + 1
    return False # dont return False inside your loop ...

print(cbrt(8))

你去...在蟒蛇皮中吟唱WHITESPACE非常重要!!!