PYTHON-两个ELSE如何干扰两个IF

时间:2015-05-31 23:20:50

标签: python

def completar_tablero (cursor, tablero, barco, sentido):
    tupla, radio=cursor
    x, y=tupla
    print tupla
    for i in range(0, 10):
        if x>203+33*i and x<233+33*i:
            print i
            for p in range(0, 10):
                if y>53+33*p and y<53+33*p+30:
                    print p
                    casillas=(i, p)
                    print casillas
                else:
                    casillas=(-1, -1)   
        else:
            casillas=(-1, -1)           
    print casillas 
    return casillas

此函数接收坐标作为输入,并且应该返回一个列和一行,其区域由for循环定义。 问题是这个函数总是返回(-1,-1)元组。我使用了一些打印来试图查明问题,我注意到在第二个for之后,'casillas'变量被正确定义,但后来被第一个中的变量替换。 有人能告诉我为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

正如@duffymo指出的那样,你的假设在某些方面是错误的,因为这个值(在许多其他方面)给出了预期的(?)结果,即。不返回(-1,-1):

x   y   : returns
529 366 : (9, 9)
529 367 : (9, 9)
529 368 : (9, 9)
529 369 : (9, 9)
529 370 : (9, 9)
529 371 : (9, 9)
529 372 : (9, 9)

您可以使用此代码对其进行测试(我已简化您的功能,删除未使用的变量):

def completar_tablero (x,y):
    for i in range(0, 10):
        if x>203+33*i and x<233+33*i:
            for p in range(0, 10):
                if y>53+33*p and y<53+33*p+30:
                    casillas=(i, p)
                else:
                    casillas=(-1, -1)   
        else:
            casillas=(-1, -1)           
    return casillas

for x in range(0,1000):
    for y in range(0,1000):
        z = completar_tablero (x,y)
        if z[0]!=-1 and z[1]!=-1:
            print x,y,":",z