Python 方程中x值的迭代

Python 方程中x值的迭代,python,iteration,python-3.4,equation,equation-solving,Python,Iteration,Python 3.4,Equation,Equation Solving,我已经被设置了一项任务,用试错法迭代计算给定公式的x值:x3-3x+4=0**。 代码将首先插入-1.5作为它的第一个猜测,然后从那里向上或向下尝试得到答案0。每次在方程式中插入一个数字时,代码应输出答案太大/太小 我已经开始编写代码,但我有点卡住了,因为它只执行了两次,然后就停止了。我使用了while循环,但我认为我没有正确地使用它,或者它可能是解决这个问题的错误方法。如有任何建议/代码片段,将不胜感激 import cmath end = '' num = 0 guess = -1.5 c

我已经被设置了一项任务,用试错法迭代计算给定公式的x值:x3-3x+4=0**。 代码将首先插入-1.5作为它的第一个猜测,然后从那里向上或向下尝试得到答案0。每次在方程式中插入一个数字时,代码应输出答案太大/太小

我已经开始编写代码,但我有点卡住了,因为它只执行了两次,然后就停止了。我使用了while循环,但我认为我没有正确地使用它,或者它可能是解决这个问题的错误方法。如有任何建议/代码片段,将不胜感激

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)

你混淆了while和if的概念。你们两个都需要。。。好吧,我想你想做的是,试试下面的提纲

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的每个分支的逻辑。
特别要注意的是,只有当你得到一个确切的答案时,这才会终止。如果要在一点公差范围内工作,则必须调整退出条件计算!=0有一个小回旋空间。

不清楚您到底在寻找什么,但这应该可以让您开始:

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,因为当您选择0.1的步骤进行猜测时,您的计算不太可能精确到0。换句话说,计算==0将始终为false,循环将永远不会停止。因此,我使用与所用步骤相同的公差值0.1检查计算是否足够接近0。在python 3.5或更高版本中,您可以使用数学模块中的来执行相同的检查。

与问题并不相关,但在比较浮点值时,这可能会有所帮助:谢谢您的评论,我来试试。抱歉搞混了,我不太擅长解释:Dits不会停止打印您的答案太大当我使用end函数时,它只执行一次并停止