[英]Iteration for x value in equation
我已經設置了一個任務來迭代計算給定公式的 x 值: x 3 - 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”的每個分支填寫邏輯。 請特別注意,只有在您得到確切答案時,這才會終止。 如果您想以一點寬容度工作,則必須調整退出條件calculation != 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
因為當您為guess
選擇步長0.1
,您的計算不太可能正好是0
。 換句話說, calculation == 0
將始終為false
,循環將永遠不會停止。 因此,我使用0.1
的容差值(與使用的步驟相同)檢查calculation
是否足夠接近0
。 在 python 3.5 或更高版本中,您可以使用 math 模塊中的math.isclose來執行相同的檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.