2017-10-12 88 views
0

我試圖調整以下內容,以便最多運行10次,然後「放棄」,而不是無限期地運行,直到它遇到回答。我可以將範圍提高到一個驚人的數字,但這不是欺騙。將設置迭代次數的for循環更改爲無限循環

def f(x): 
    return x**2-2 

def bisection(f,a,b): 
    for i in range (10): 
     c=(a+b)/2 
     if abs(f(c))<1/10**10: 
      print("found zero",c) 
      return c 
     if f(a)*f(c)<0: 
      a=a 
      b=c 
     else: 
      a=c 
      b=b 
     print("a=",a,"b=",b,"f(a)=",f(a)) 

bisection(f,0,2) 

我試着用

c=(a+b)/2 
while abs(f(c))<1/10**10: 

調換

for i in range (10): 

我什麼也沒得到。沒有打印,也沒有錯誤。百思不得其解。

我很感謝一些幫助

謝謝!

+0

最簡單的變體:用'替換'for'循環while'True:' –

+0

@MichaelButscher哦哇,非常感謝! –

+0

@MichaelButscher這應該是一個答案,我相信 –

回答

0

最簡單的方法是用while True:替換for ...:。這只是消除了10次迭代限制。