我正在使用python 2.6。任何人都可以找出爲什麼我的變量平方在min()函數內不能正確計算? 爲了說明,我展示了自己執行的變量** 2,工作正常。 下面是代碼,其次是一些結果:指數不正常工作
from __future__ import with_statement
import csv, re, time
timestr = time.strftime("%Y%m%d_%H%M%S")
fileinput = 'mp_20130822.csv'
out = open('output2.csv',"wb")
writer = csv.writer(out, delimiter = ',')
ESPmax = 100.00
dynmax = "enabled"
def config():
global argument
if z>30:
argument = "T"
else:
argument = "F"
with open(fileinput,'rU') as inputfile:
reader = csv.reader(inputfile, delimiter = ';')
for line in reader:
line = re.split(",| ",line[0])
side = str(line[4]) #is "Bid" or "Ask"
e = float(line[5])
z = float(line[6])
t = float(line[33])
FW = float(line[34])
FS = max(float(line[35]),200)
if FW == 0:
continue
if (FS == 0) or (FS == 1):
continue
if side == "Ask":
LE = t-e
else:
LE = e-t
LEP = LE/(FW/2)
ESP = z/(FS/2)
if dynmax == "enabled":
ESPmax = min(LEP**2,ESPmax)
config()
if (argument == "T"):
print ('side, e, z, t, FW, FS')
print ('LEP,LEP,ESPmax')
print (side, '%.2f'%e, '%.2f'%z, '%.2f'%t, '%.2f'%FW, '%.2f'%FS)
print ('%.3f'%LEP,'%.3f'%LEP,'%.5f'%ESPmax)
print '%.5f'%(LEP*LEP)
結果:
side, e, z, t, FW, FS
LEP,LEP,ESPmax
('Ask', '1.90', '50.00', '1.95', '0.24', '651.00')
('0.423', '0.423', '0.00130')
0.17880
side, e, z, t, FW, FS
LEP,LEP,ESPmax
('Ask', '8.40', '40.00', '8.43', '0.17', '4933.00')
('0.348', '0.348', '0.00130')
0.12145
side, e, z, t, FW, FS
LEP,LEP,ESPmax
('Ask', '8.40', '40.00', '8.43', '0.17', '4919.00')
('0.370', '0.370', '0.00130')
0.13667
似乎工作正常,'ESPmax = min(LEP ** 2,ESPmax)'似乎已將ESPmax設置爲小於您打印出的任何LEP ** 2的值,當然,最小值是你可能從早期的'0.036'的'LEP'中得到的較小值'0.00130'。 –
ESPmax如何能夠降低到0.00130? – teachamantofish
早些時候通過大約'0.036'的'LEP'值。由於'min'或'** 2'不可能正常工作,並且您在這裏粘貼的東西總是會得到相同的值,所以很有可能某些東西將'ESPmax'的值更改爲'0.00130' 。請注意,如果'Z> 30'(其順便說一句,似乎沒有定義它在'config()'中使用的位置),則只打印任何內容。 –