嘿傢伙,所以我一直試圖破譯這個問題的最後一個小時,現在有一些麻煩。這是問題計算平方根的邏輯思維
這種計算數字n的平方根的方法開始於 在平方根處作出(非零)猜測。然後,它使用 原來的猜測來計算新的猜測,根據公式
newGuess = ((n/oldGuess) + oldGuess)/2.0;
有兩個變量
oldGuess
和newGuess
。初始化oldGuess
至n/2.0
並根據上述公式計算newGuess
。只要oldGuess
和newGuess
之間的差值的絕對值大於1.0E-06
,則使用 a while循環來迭代。不要忘記在while循環中將oldGuess
的值重置爲newGuess
值。在您的程序中,您將提示用戶輸入正數。 如果該號碼爲負數,則打印一條錯誤消息並要求用戶再次嘗試 。對於正數,使用上述方法計算平方根。找到您獲得的平方根 與使用指數運算符獲得的值之間的差異。寫 了用戶輸入的值,您計算平方根和 差(你的平方根 -
n ** 0.5
)
這是我的計劃,到目前爲止
def main():
n = eval(input("Enter a positive number: "))
while (n <= 0):
print ("Error please re-input")
n = eval(input("Enter a positive number: "))
oldGuess = n/2.0
newGuess = ((n/oldGuess) + oldGuess)/2.0;
difference = n - n ** 0.5
while (difference < 1 * 10 ** -6):
print ("Error")
difference = abs(n - n ** 0.5)
print ("Difference:", difference)
main()
,所以我不真正理解我們如何告訴程序進行猜測,然後計算變量n的平方根。我甚至不認爲我的言論在這方面是正確的。我不使用已經嵌入python的squareroot函數,所以它必須手動完成,我相信猜測函數意味着什麼。
這是一個功課題嗎? – Kye
您想要繼續迭代,而絕對差值*大於*小於,而不是小於。 – lurker
使用'eval'是危險的。使用'float'代替 –