'如果'条件在第二个循环后不起作用

时间:2018-01-29 22:31:02

标签: python loops if-statement

我遇到if循环问题。在脚本中,我需要检查ii+1行之间的差异是否等于0.6,如果是,则程序应计算grad[i]值。问题是在第三个圆圈中,即使满足条件,也不会执行计算grad[i]

这是我的代码的一部分:

data = np.loadtxt(files[p])
N=len(data)
print "N: ", N, "\n"
for i in range(0,N-1):
    print "i: ", i
    j=i+1
    Fi[i]=data[i,1]
    errFi[i]=data[i,2]
    Fj[j]=data[j,1]
    errFj[j]=data[j,2]
    t1=data[i,0]
    t2=data[j,0]
    dt=(t2-t1)
    print "dt:", dt
    print Fj[j]-Fi[i]
    if dt == 0.6:
        print " dt =", dt
        if Fi[i] < Fj[j]:
            r[i]=1
            grad[i]=(Fj[j]-Fi[i]) / dt
        else:
            r[i]=-1
            grad[i]=(Fi[i]-Fj[j]) / dt

        print " grad[",i,"]=",grad[i] 

,控制台中的结果是:

i:  0
dt: 0.6
0.148645
dt = 0.6
grad[ 0 ]= 0.247741666667

i:  1
dt: 0.6
0.061069
dt = 0.6
grad[ 1 ]= 0.101781666667

i:  2
dt: 0.6
-0.009578

i:  3
dt: 0.6
0.078995

i:  4
dt: 0.6
0.069982

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,您正在处理浮点数,这些浮点数并不完全正确。尝试使用

data = 100 * np.loadtxt(files[p])

dt60进行比较。您的grad(在此线性计算中)的值应自动结束。

如果某种方式对您不起作用,您可以在乘以100之后使用round()上的dt