小于俄方氛围发 发表于 2017-11-20 12:01:18

whlie循环语句只循环了一次

<g=lambda x:x*x+x-6
a=float(input('请输入a:'))
b=float(input('请输入b:'))
if g(a)*g(b)>0:
    print("函数解不在a,b之间")
if g(a)*g(b)==0:
    if g(a)==0:
       print("解为:",a)
    else:
       print("解为:",b)
else:
    while(float(b-a)>0.00000001):
      X=(a+b)/2
      if g(a)*g(X)<0:
            b=X
      if g(a)*g(X)==0:
            break
      else:
            a=X
    X=(a+b)/2
    print('解为',X)
      >
为何我的二分法只能循环一次就终止了

BngThea 发表于 2017-11-20 12:27:05

跟你输入的数有关

小于俄方氛围发 发表于 2017-11-20 12:45:09

BngThea 发表于 2017-11-20 12:27
跟你输入的数有关

如果想要循环多次求出最合适的数该怎么改

BngThea 发表于 2017-11-20 15:17:53

小于俄方氛围发 发表于 2017-11-20 12:45
如果想要循环多次求出最合适的数该怎么改

仔细看了一下,原来是你的while循环内部的if用错了,应该把第二个if改成elif:
while(float(b-a)>0.00000001):
            X=(a+b)/2
            if g(a)*g(X)<0:
                b=X
            elif g(a)*g(X)==0:
                break
            else:
                a=X
页: [1]
查看完整版本: whlie循环语句只循环了一次