簡體   English   中英

Python平方根不起作用

[英]Python Square Root doesn't work

當我運行此功能時,為什么它會無限次打印3和4。 我不明白為什么它會繼續下去,而且它不應該至少最初打印5張嗎?

a = 15
x = 5
while True:
    print x
    y = (x + a/x) / 2
    if y == x:
        break
    x = y

您正在做整數除法。 將常量更改為

a = 15.0
x = 5.0

另外,由於數字將是float請檢查一些允許的精度,而不要嘗試使用完全相等的形式。

while True:
    print x
    y = (x + a/x)/2
    if abs(y - x) < 0.0001:
        break
    x = y

輸出量

5
4.0
3.875
3.87298387097

我可以告訴您正在使用python 2,因此/在這種情況下為整數除法。 為了強制進行浮點除法,有幾種方法可以做到,但這可能是最簡單的。

y = (x + 1.0 * a / x) / 2

我希望這個小的代碼跟蹤可以幫助您看到錯誤:

第一循環

y= (5 +  (15/5)  ) /2
y= (5 + 3) /2
y=4

4 !=5

x=4

第二循環

y= (4+(15/4))/2
y= (4+3)/2
y=3

3!=4
x=3

第三循環

y=(3+(15/3))  /2
y=(3+5) /2
y=8/2
y=4

4!=3
x=4

將重復...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM