2017-10-12 132 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次迭代限制。