2013-03-20 67 views
-3

有人能告訴我爲什麼這個循環忽略了if? (編輯:這是整個代碼 - 這還給了一些功能。)Python是忽略我的if

time_now = time() 
number = np.loadtxt("11.txt", unpack=True, dtype='int64') 
lenx = len(number[0,:]) 
leny = len(number[:,0]) 
lennum = 4 
#prods = np.zeros(lenx*leny*4).reshape(lenx,leny,4) 
maxnum = 0 

for m in range(0,leny): 
    for n in range(0,lenx): 
     prods = lookaround(n,m) 

     if prods > maxnum: 
      maxnum = prods 

time_end = time(); 

elapsed = time_end - time_now 

print(prods, elapsed) 
+6

沒有足夠的信息在這裏 – YXD 2013-03-20 22:56:02

+0

值得一提的是,如果你正在尋找一個最大值,你可能想使用['MAX()'] (http://docs.python.org/3.3/library/functions.html#max)。 – 2013-03-20 22:57:31

+0

爲什麼你不使用'max(範圍(lenny)中的m(範圍(leny))中的m(lookaround(n,m))'? – Blender 2013-03-20 22:58:05

回答

2

也許是因爲prods始終小於或等於maxnum?你用什麼值初始化maxnum?它應該設置在循環之前的非常小的數字上,比如maxnum = float("-inf")。另一種可能是lookaround正在返回一個不正確的值,即單元測試函數。

+0

我做了,輸出給出了很多正數。 Nothing below 0 – Coolcrab 2013-03-20 23:00:00

+0

你實際上並沒有在循環之後使用''maxnum''。也許最後一行應該是這個? 'print(maxnum,elapsed)' – 2013-03-20 23:01:52

0

你可以只寫它:

from itertools import product 

time_now = time() 

number = np.loadtxt("11.txt", unpack=True, dtype='int64') 
lenx = len(number[0,:]) 
leny = len(number[:,0]) 

maxnum = max(lookaround(n, m) for n, m in product(range(lenx), range(leny))) 

time_end = time();  
elapsed = time_end - time_now 

print(maxnum, elapsed) # <== maxnum not prods