2013-03-20 71 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