方程中 x 值的迭代

Iteration for x value in equation

我已经设置了一个任务来迭代计算给定公式的 x 值:x3 - 3x + 4 = 0** 使用反复试验。 代码将首先插入 -1.5 作为它的第一个猜测,然后从那里向上或向下计算以尝试得到答案 0。每次在等式中插入一个数字时,代码应输出 "Answer ## is too big/small"

我已经启动了代码,但我有点卡住了,因为它只执行了两次然后就停止了。我使用了一个 while 循环,但我认为我没有正确使用它,或者它可能是解决这个问题的错误方法。任何 suggestions/snippets 的代码将不胜感激。

import cmath
end = ''

num = 0
guess = -1.5
calculation = (guess**3 - guess * 3 + 4)
print(calculation)
while calculation < 0:
    print("Guess is too small")
else:
    print("Guess is too large")

while calculation != 0 and calculation < 0:
    guess = guess + 0.1 
    calculation = (guess**3 - guess * 3 + 4)
else:
    guess = guess-0.1
    calculation = ((guess**3)-3*guess+4)
    print(calculation)

您混淆了whileif的概念。两者都需要……好吧,对于我认为你正在尝试做的事情,试试下面的大纲。

while calculation != 0:
    if calculation < 0:
        # Guess is too small; print message and adjust guess
    else:
        # Guess is too large; print message and adjust guess

我想你可以为"if"的每个分支填写逻辑。 特别注意,只有当您得到 exact 答案时,这才会终止。如果你想在一点宽容中工作,你必须将退出条件 calculation != 0 调整为一点 "wiggle room".

不清楚您要查找的内容,但这应该可以帮助您入门:

import cmath

guess = -1.5

#put calculations that you use more than once in a function
def calc(a): 
    return round((a**3-a*3+4),1) #round your result

calculation=calc(guess)

while calculation !=0:
    if calculation<0:
        print('Number is too small')
        guess+=0.1
        calculation=calc(guess)
    elif calculation>0:
        print('Number is too large')
        guess-=0.1
        calculation=calc(guess)

我认为您需要将所有内容放在一个 while 循环中,在其中检查您的计算是否与预期结果匹配,如果不匹配则调整猜测,如果匹配则中断循环。

guess = -1.5

while True:
    calculation = ((guess**3)-3*guess+4)
    print(calculation)

    if abs(calculation - 0) < 0.1:
        print("Correct guess: ", guess)
        break

    elif calculation < 0:
        print("Guess is too small")
        guess = guess + 0.1 

    elif calculation > 0:
        print("Guess is too large")
        guess = guess - 0.1

请注意,我没有比较 calculation == 0,因为当您为 guess 选择 0.1 的步骤时,您的计算不太可能正好是 0。换句话说,calculation == 0 将永远是 false 并且循环永远不会停止。因此,我检查 calculation 是否足够接近 0,使用公差值 0.1(与使用的步骤相同)。在 python 3.5 或更高版本中,您可以使用数学模块中的 math.isclose 来执行相同的检查。