我对for循环中的某些if语句有疑问。这是我的代码:import numpy as npmv = []mb = []mbv = []M = []for i in range (0,25): mv.append(10.1 - 2.5 * np.log10(fv[i]/1220000)) mb.append(11.0 - 2.5 * np.log10(fb[i]/339368)) mbv.append(mb[i]-mv[i]) if ( 0.00 < mbv[i] < 0.05): M.append(1.1) if ( 0.05 < mbv[i] < 0.1): M.append(1.8) if ( 0.1 < mbv[i] < 0.2): M.append(2.2) else: M.append(0) print i+1, mbv[i], M[i]这就是我得到的结果:1 0.117517744922 2.22 0.105291760392 2.23 0.0414704330434 1.14 0.709631736921 05 0.0634562921955 06 0.9 1.87 0.123732441181 08 0.332213182737 09 0.0783116509167 2.210 0.109696428387 011 0.812457966075 1.812 0.0796972381532 013 0.0933833026562 2.214 0.0448112197058 015 0.107871295045 1.816 0.072180255058 017 0.134980217798 1.818 0.453454266409 019 0.0498332192697 1.120 0.141914194517 021 0.0712870748016 2.222 0.622521992135 1.823 0.176515236738 024 0.607814524935 2.225 0.0521329729172 00如您所见,数字5的mbv为0.0634,因此M值应为1.8,但其值为0。
2 回答
郎朗坤
TA贡献1921条经验 获得超9个赞
您需要使用elif否则,0如果mbv[i]不在0.1和之间,则将始终附加0.2:
if ( 0.00 <= mbv[i] < 0.05):
M.append(1.1)
elif ( 0.05 <= mbv[i] < 0.1):
M.append(1.8)
elif ( 0.1 <= mbv[i] < 0.2):
M.append(2.2)
else:
M.append(0)
您当前的代码导致将多个多个值添加到Mwhenmbv[i]小于0.1,第一次1.1或1.8根据值将被添加的情况,然后if ( 0.1 < mbv[i] < 0.2)将失败并else输入要追加的块0。
另外,如wagregg的答案中所述,您应确保使用覆盖了边沿情况,<=以便在值正确的情况下输入正确的块,0.05或者0.1输入相应的块而不是移至else。
添加回答
举报
0/150
提交
取消