所以我試着編寫一個簡單的平方根函數。我做了,我想將它與Python的原始版本進行比較。這是我的代碼:試圖在Python中計時我的sqrt函數
from math import sqrt
import timeit
def sqrt2(number):
i=1
while i**2<number:
i+=1
left=float(i-1)
right=float(i)
temp = left+(right-left)/2
while str(temp**2)!=str(number):
if temp**2>number:
right=temp
temp = left+(right-left)/2
elif temp**2<number:
left=temp
temp = left+(right-left)/2
else:
return temp
return temp
print timeit.timeit("sqrt2(12)", number=10000, setup='from __main__ import sqrt2')
print timeit.timeit("sqrt(12)", number=10000, setup='from math import sqrt')
它簡單地取數和通知時和整數^ 2爲低級,並且當(整數+ 1)^ 2是比我們數字越高,然後除以2的那些2之間的間隙,並嘗試中間的數字等。對我來說沒關係,但是當我嘗試timeit.timeit時,它停止,光標在控制檯顯示,它仍然在工作,但沒有任何反應
'而STR(TEMP ** 2)= STR(數字)' - 爲什麼是*是*你的支票!? – user2357112
cuz checkin'it without str()永遠不會讓循環結束,這對我們的平方根很有用〜(在「。」之後的6-7數字) – Frynio
最好用'math.abs(temp ** 2 - 數字)> = 1e-7' – user502144