2017-10-12 33 views
0

私は最大10回実行するのではなく、 "give up"の代わりに無期限に実行するだけで、回答。私はちょうど驚くほどの数まで範囲をジャックすることができますが、それは不正ではありません。設定回数のループforループを無限ループwhileループに変更する

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

最も簡単な方法はfor ...:while True:に置き換えることです。それは単純に10反復制限を削除します。