为什么它不能在我的Python代码中进行循环

时间:2016-05-15 03:34:54

标签: python

我是Python的初学者。我尝试了以下代码。但是,我无法弄清楚为什么它没有做到"因为"在我的函数中循环。

from __future__ import print_function
import matplotlib.pyplot as plt
import numpy as np
import os
import sys
import tarfile
from IPython.display import display, Image
from scipy import ndimage
from sklearn.linear_model import LogisticRegression
from six.moves.urllib.request import urlretrieve
from six.moves import cPickle as pickle

def checkOverlap( sample, setToTest):
errorThresh = 0.0001
dataShape = setToTest.shape
numOfIms = dataShape[0]
print('Number of arrays:' numOfIms)
#How come it does not do the following loop?
for idx2 in range(numOfIms):
    print('Iteration: ',idx2)
    im = setToTest[idx2,:,:]
    err = np.subtract(sample,im)
    errAbs = np.abs(err)
    maxErr = np.max(errAbs)
    if maxErr < errorThresh:
        # print('Image Idx: ', idx,' is overlapping image with maxErr = ', maxErr)
        plt.figure(3)
        plt.imshow(errAbs)
        plt.draw()
        return True, idx2
    else:
        # print('Image Idx: ', idx,' is not overlapping image with maxErr = ', maxErr)
        return False, idx2

setToTest= np.ndarray((10,2,2), dtype=np.int32)
sample = np.ndarray((2,2), dtype = np.int32)
checkOverlap(sample,setToTest)

输出如下:

数组数量:10

迭代:0

你可以告诉我我错过了什么吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

因为你在第一次迭代期间返回,无论如何。我认为你应该重新考虑你的逻辑并首先从if..else中删除return语句。

答案 1 :(得分:1)

在循环中间有一个if,else语句,每个语句都有一个return语句。这意味着你的循环只运行一次,然后你将返回一个值,停止循环。