方程中 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)
您混淆了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"的每个分支填写逻辑。
特别注意,只有当您得到 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 来执行相同的检查。
我已经设置了一个任务来迭代计算给定公式的 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)
您混淆了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"的每个分支填写逻辑。
特别注意,只有当您得到 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 来执行相同的检查。